diff --git a/source/java/org/alfresco/repo/dictionary/types/period/AbstractCalendarPeriodProvider.java b/source/java/org/alfresco/repo/dictionary/types/period/AbstractCalendarPeriodProvider.java index 93a89c78bb..0c906219bc 100644 --- a/source/java/org/alfresco/repo/dictionary/types/period/AbstractCalendarPeriodProvider.java +++ b/source/java/org/alfresco/repo/dictionary/types/period/AbstractCalendarPeriodProvider.java @@ -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; + } } diff --git a/source/java/org/alfresco/repo/dictionary/types/period/Cron.java b/source/java/org/alfresco/repo/dictionary/types/period/Cron.java index 24544c3ea2..3571e8feb2 100644 --- a/source/java/org/alfresco/repo/dictionary/types/period/Cron.java +++ b/source/java/org/alfresco/repo/dictionary/types/period/Cron.java @@ -28,20 +28,22 @@ 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 - * */ public class Cron extends AbstractPeriodProvider { /** * Period type */ - public static final String PERIOD_TYPE = "cron"; - + public static final String PERIOD_TYPE = "cron"; + public String getDefaultExpression() { return "59 59 23 * * ?"; @@ -49,7 +51,7 @@ public class Cron extends AbstractPeriodProvider public ExpressionMutiplicity getExpressionMutiplicity() { - return ExpressionMutiplicity.MANDATORY; + return ExpressionMutiplicity.MANDATORY; } public Date getNextDate(Date date, String expression) @@ -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; + } + } diff --git a/source/java/org/alfresco/repo/dictionary/types/period/NoPeriod.java b/source/java/org/alfresco/repo/dictionary/types/period/NoPeriod.java index d04c9f172f..019d516bc2 100644 --- a/source/java/org/alfresco/repo/dictionary/types/period/NoPeriod.java +++ b/source/java/org/alfresco/repo/dictionary/types/period/NoPeriod.java @@ -25,27 +25,30 @@ 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" + * No period Period type "none" + * * @author andyh - * */ public class NoPeriod extends AbstractPeriodProvider { /** * */ - public static final String PERIOD_TYPE = "none"; - + public static final String PERIOD_TYPE = "none"; + /** * Default constructor */ public NoPeriod() { - + } - + public String getDefaultExpression() { return null; @@ -66,5 +69,8 @@ public class NoPeriod extends AbstractPeriodProvider return PERIOD_TYPE; } - + public QName getExpressionDataType() + { + return null; + } } diff --git a/source/java/org/alfresco/repo/dictionary/types/period/PeriodTest.java b/source/java/org/alfresco/repo/dictionary/types/period/PeriodTest.java index 3e46022aa3..d6ea97920a 100644 --- a/source/java/org/alfresco/repo/dictionary/types/period/PeriodTest.java +++ b/source/java/org/alfresco/repo/dictionary/types/period/PeriodTest.java @@ -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); diff --git a/source/java/org/alfresco/repo/dictionary/types/period/XMLDuration.java b/source/java/org/alfresco/repo/dictionary/types/period/XMLDuration.java index fa23495fd4..9165e75581 100644 --- a/source/java/org/alfresco/repo/dictionary/types/period/XMLDuration.java +++ b/source/java/org/alfresco/repo/dictionary/types/period/XMLDuration.java @@ -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 @@ -36,5 +38,10 @@ public class XMLDuration extends AbstractPeriodProvider { return PERIOD_TYPE; } + + public QName getExpressionDataType() + { + return DataTypeDefinition.TEXT; + } } diff --git a/source/java/org/alfresco/service/cmr/repository/PeriodProvider.java b/source/java/org/alfresco/service/cmr/repository/PeriodProvider.java index 5a109d1eb9..564618ab43 100644 --- a/source/java/org/alfresco/service/cmr/repository/PeriodProvider.java +++ b/source/java/org/alfresco/service/cmr/repository/PeriodProvider.java @@ -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(); }