mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Added data type for period expressions (MOB-750)
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@14580 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -27,6 +27,9 @@ package org.alfresco.repo.dictionary.types.period;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
|
||||
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
|
||||
/**
|
||||
* Support for calendar based periods
|
||||
* @author andyh
|
||||
@@ -64,4 +67,8 @@ public abstract class AbstractCalendarPeriodProvider extends AbstractPeriodProvi
|
||||
*/
|
||||
public abstract void add(Calendar calendar, int value);
|
||||
|
||||
public QName getExpressionDataType()
|
||||
{
|
||||
return DataTypeDefinition.INT;
|
||||
}
|
||||
}
|
||||
|
@@ -28,12 +28,14 @@ import java.text.ParseException;
|
||||
import java.util.Date;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.quartz.CronExpression;
|
||||
|
||||
/**
|
||||
* Cron based periods
|
||||
* @author andyh
|
||||
*
|
||||
* @author andyh
|
||||
*/
|
||||
public class Cron extends AbstractPeriodProvider
|
||||
{
|
||||
@@ -61,7 +63,7 @@ public class Cron extends AbstractPeriodProvider
|
||||
}
|
||||
catch (ParseException e)
|
||||
{
|
||||
throw new AlfrescoRuntimeException("Invalid cron expression: "+expression);
|
||||
throw new AlfrescoRuntimeException("Invalid cron expression: " + expression);
|
||||
}
|
||||
return ce.getNextValidTimeAfter(date);
|
||||
}
|
||||
@@ -71,4 +73,9 @@ public class Cron extends AbstractPeriodProvider
|
||||
return PERIOD_TYPE;
|
||||
}
|
||||
|
||||
public QName getExpressionDataType()
|
||||
{
|
||||
return DataTypeDefinition.TEXT;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -25,11 +25,14 @@
|
||||
package org.alfresco.repo.dictionary.types.period;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
|
||||
/**
|
||||
* No period
|
||||
* Period type "none"
|
||||
* @author andyh
|
||||
* No period Period type "none"
|
||||
*
|
||||
* @author andyh
|
||||
*/
|
||||
public class NoPeriod extends AbstractPeriodProvider
|
||||
{
|
||||
@@ -66,5 +69,8 @@ public class NoPeriod extends AbstractPeriodProvider
|
||||
return PERIOD_TYPE;
|
||||
}
|
||||
|
||||
|
||||
public QName getExpressionDataType()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@@ -31,6 +31,7 @@ import java.util.Date;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
||||
import org.alfresco.service.cmr.repository.Period;
|
||||
import org.alfresco.service.cmr.repository.PeriodProvider;
|
||||
import org.alfresco.util.ApplicationContextHelper;
|
||||
@@ -67,6 +68,7 @@ public class PeriodTest extends TestCase
|
||||
assertNull(provider.getNextDate(new Date(), ""));
|
||||
assertNull(provider.getNextDate(new Date(), "meep"));
|
||||
assertEquals(provider.getPeriodType(), NoPeriod.PERIOD_TYPE);
|
||||
assertNull(provider.getExpressionDataType());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -108,6 +110,7 @@ public class PeriodTest extends TestCase
|
||||
assertNotNull(provider.getNextDate(now, "1"));
|
||||
assertNotNull(provider.getNextDate(now, "2"));
|
||||
assertEquals(provider.getPeriodType(), Days.PERIOD_TYPE);
|
||||
assertEquals(DataTypeDefinition.INT, provider.getExpressionDataType());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -149,6 +152,7 @@ public class PeriodTest extends TestCase
|
||||
assertNotNull(provider.getNextDate(now, "1"));
|
||||
assertNotNull(provider.getNextDate(now, "2"));
|
||||
assertEquals(provider.getPeriodType(), Weeks.PERIOD_TYPE);
|
||||
assertEquals(DataTypeDefinition.INT, provider.getExpressionDataType());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -190,6 +194,7 @@ public class PeriodTest extends TestCase
|
||||
assertNotNull(provider.getNextDate(now, "1"));
|
||||
assertNotNull(provider.getNextDate(now, "2"));
|
||||
assertEquals(provider.getPeriodType(), Months.PERIOD_TYPE);
|
||||
assertEquals(DataTypeDefinition.INT, provider.getExpressionDataType());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -231,6 +236,7 @@ public class PeriodTest extends TestCase
|
||||
assertNotNull(provider.getNextDate(now, "1"));
|
||||
assertNotNull(provider.getNextDate(now, "2"));
|
||||
assertEquals(provider.getPeriodType(), Quarters.PERIOD_TYPE);
|
||||
assertEquals(DataTypeDefinition.INT, provider.getExpressionDataType());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -272,6 +278,7 @@ public class PeriodTest extends TestCase
|
||||
assertNotNull(provider.getNextDate(now, "1"));
|
||||
assertNotNull(provider.getNextDate(now, "2"));
|
||||
assertEquals(provider.getPeriodType(), Years.PERIOD_TYPE);
|
||||
assertEquals(DataTypeDefinition.INT, provider.getExpressionDataType());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -316,6 +323,7 @@ public class PeriodTest extends TestCase
|
||||
assertNotNull(provider.getNextDate(now, "1"));
|
||||
assertNotNull(provider.getNextDate(now, "2"));
|
||||
assertEquals(provider.getPeriodType(), EndOfMonth.PERIOD_TYPE);
|
||||
assertEquals(DataTypeDefinition.INT, provider.getExpressionDataType());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -360,6 +368,7 @@ public class PeriodTest extends TestCase
|
||||
assertNotNull(provider.getNextDate(now, "1"));
|
||||
assertNotNull(provider.getNextDate(now, "2"));
|
||||
assertEquals(provider.getPeriodType(), EndOfYear.PERIOD_TYPE);
|
||||
assertEquals(DataTypeDefinition.INT, provider.getExpressionDataType());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -373,6 +382,7 @@ public class PeriodTest extends TestCase
|
||||
assertEquals(provider.getDefaultExpression(), "1");
|
||||
assertEquals(provider.getExpressionMutiplicity(), PeriodProvider.ExpressionMutiplicity.OPTIONAL);
|
||||
assertEquals(provider.getPeriodType(), EndOfQuarter.PERIOD_TYPE);
|
||||
assertEquals(DataTypeDefinition.INT, provider.getExpressionDataType());
|
||||
|
||||
SimpleDateFormat df = CachingDateFormat.getDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", true);
|
||||
Period period = new Period(EndOfQuarter.PERIOD_TYPE);
|
||||
@@ -521,6 +531,7 @@ public class PeriodTest extends TestCase
|
||||
assertNotNull(provider.getNextDate(now, "1"));
|
||||
assertNotNull(provider.getNextDate(now, "2"));
|
||||
assertEquals(provider.getPeriodType(), EndOfFinancialMonth.PERIOD_TYPE);
|
||||
assertEquals(DataTypeDefinition.INT, provider.getExpressionDataType());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -534,6 +545,7 @@ public class PeriodTest extends TestCase
|
||||
assertEquals(provider.getDefaultExpression(), "1");
|
||||
assertEquals(provider.getExpressionMutiplicity(), PeriodProvider.ExpressionMutiplicity.OPTIONAL);
|
||||
assertEquals(provider.getPeriodType(), EndOfFinancialYear.PERIOD_TYPE);
|
||||
assertEquals(DataTypeDefinition.INT, provider.getExpressionDataType());
|
||||
|
||||
SimpleDateFormat df = CachingDateFormat.getDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", true);
|
||||
Period period = new Period(EndOfFinancialYear.PERIOD_TYPE);
|
||||
@@ -566,6 +578,7 @@ public class PeriodTest extends TestCase
|
||||
assertEquals(provider.getDefaultExpression(), "1");
|
||||
assertEquals(provider.getExpressionMutiplicity(), PeriodProvider.ExpressionMutiplicity.OPTIONAL);
|
||||
assertEquals(provider.getPeriodType(), EndOfFinancialQuarter.PERIOD_TYPE);
|
||||
assertEquals(DataTypeDefinition.INT, provider.getExpressionDataType());
|
||||
|
||||
SimpleDateFormat df = CachingDateFormat.getDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", true);
|
||||
Period period = new Period(EndOfFinancialQuarter.PERIOD_TYPE);
|
||||
@@ -617,6 +630,7 @@ public class PeriodTest extends TestCase
|
||||
assertEquals(provider.getDefaultExpression(), "1");
|
||||
assertEquals(provider.getExpressionMutiplicity(), PeriodProvider.ExpressionMutiplicity.OPTIONAL);
|
||||
assertEquals(provider.getPeriodType(), EndOfFinancialYear.PERIOD_TYPE);
|
||||
assertEquals(DataTypeDefinition.INT, provider.getExpressionDataType());
|
||||
|
||||
AbstractEndOfCalendarPeriodProvider instance = (AbstractEndOfCalendarPeriodProvider) provider;
|
||||
instance.setStartDayOfMonth(6);
|
||||
@@ -653,6 +667,7 @@ public class PeriodTest extends TestCase
|
||||
assertEquals(provider.getDefaultExpression(), "1");
|
||||
assertEquals(provider.getExpressionMutiplicity(), PeriodProvider.ExpressionMutiplicity.OPTIONAL);
|
||||
assertEquals(provider.getPeriodType(), EndOfFinancialQuarter.PERIOD_TYPE);
|
||||
assertEquals(DataTypeDefinition.INT, provider.getExpressionDataType());
|
||||
|
||||
AbstractEndOfCalendarPeriodProvider instance = (AbstractEndOfCalendarPeriodProvider) provider;
|
||||
instance.setStartDayOfMonth(6);
|
||||
@@ -708,6 +723,7 @@ public class PeriodTest extends TestCase
|
||||
assertEquals(provider.getDefaultExpression(), "1");
|
||||
assertEquals(provider.getExpressionMutiplicity(), PeriodProvider.ExpressionMutiplicity.OPTIONAL);
|
||||
assertEquals(provider.getPeriodType(), EndOfFinancialMonth.PERIOD_TYPE);
|
||||
assertEquals(DataTypeDefinition.INT, provider.getExpressionDataType());
|
||||
|
||||
AbstractEndOfCalendarPeriodProvider instance = (AbstractEndOfCalendarPeriodProvider) provider;
|
||||
instance.setStartDayOfMonth(6);
|
||||
@@ -818,6 +834,7 @@ public class PeriodTest extends TestCase
|
||||
assertEquals(provider.getDefaultExpression(), "59 59 23 * * ?");
|
||||
assertEquals(provider.getExpressionMutiplicity(), PeriodProvider.ExpressionMutiplicity.MANDATORY);
|
||||
assertEquals(provider.getPeriodType(), Cron.PERIOD_TYPE);
|
||||
assertEquals(DataTypeDefinition.TEXT, provider.getExpressionDataType());
|
||||
|
||||
SimpleDateFormat df = CachingDateFormat.getDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", true);
|
||||
Period period = new Period(Cron.PERIOD_TYPE);
|
||||
@@ -839,6 +856,7 @@ public class PeriodTest extends TestCase
|
||||
assertEquals(provider.getDefaultExpression(), "P1D");
|
||||
assertEquals(provider.getExpressionMutiplicity(), PeriodProvider.ExpressionMutiplicity.MANDATORY);
|
||||
assertEquals(provider.getPeriodType(), XMLDuration.PERIOD_TYPE);
|
||||
assertEquals(DataTypeDefinition.TEXT, provider.getExpressionDataType());
|
||||
|
||||
SimpleDateFormat df = CachingDateFormat.getDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", true);
|
||||
Period period = new Period(XMLDuration.PERIOD_TYPE);
|
||||
|
@@ -2,7 +2,9 @@ package org.alfresco.repo.dictionary.types.period;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
||||
import org.alfresco.service.cmr.repository.datatype.Duration;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
|
||||
/**
|
||||
* XMLDuration
|
||||
@@ -37,4 +39,9 @@ public class XMLDuration extends AbstractPeriodProvider
|
||||
return PERIOD_TYPE;
|
||||
}
|
||||
|
||||
public QName getExpressionDataType()
|
||||
{
|
||||
return DataTypeDefinition.TEXT;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -26,6 +26,8 @@ package org.alfresco.service.cmr.repository;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.alfresco.service.namespace.QName;
|
||||
|
||||
/**
|
||||
* Provider API for period implementations
|
||||
* @author andyh
|
||||
@@ -79,4 +81,10 @@ public interface PeriodProvider
|
||||
* @return - the default expression.
|
||||
*/
|
||||
public String getDefaultExpression();
|
||||
|
||||
/**
|
||||
* Return the Alfresco data type QName to which the string value of the expression will be converted.
|
||||
* @return the alfresco data type or null if an expression is not allowed.
|
||||
*/
|
||||
public QName getExpressionDataType();
|
||||
}
|
||||
|
Reference in New Issue
Block a user