diff --git a/src/main/java/org/gcube/accounting/datamodel/RawUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/RawUsageRecord.java index b501a82..de9d979 100644 --- a/src/main/java/org/gcube/accounting/datamodel/RawUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/RawUsageRecord.java @@ -12,7 +12,7 @@ import java.util.Map; import org.gcube.accounting.datamodel.backwardcompatibility.MoveToCreationTime; import org.gcube.accounting.datamodel.backwardcompatibility.MoveToScope; import org.gcube.accounting.datamodel.backwardcompatibility.MoveToUsageRecordType; -import org.gcube.accounting.datamodel.deprecationmanagement.annotations.DeprecatedWarning; +import org.gcube.accounting.datamodel.deprecationmanagement.DeprecatedWarning; import org.gcube.accounting.datamodel.usagerecords.JobUsageRecord; import org.gcube.accounting.datamodel.usagerecords.PortletUsageRecord; import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord; diff --git a/src/main/java/org/gcube/accounting/datamodel/deprecationmanagement/annotations/MoveToOperationResult.java b/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToOperationResult.java similarity index 69% rename from src/main/java/org/gcube/accounting/datamodel/deprecationmanagement/annotations/MoveToOperationResult.java rename to src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToOperationResult.java index 80b79f9..5931958 100644 --- a/src/main/java/org/gcube/accounting/datamodel/deprecationmanagement/annotations/MoveToOperationResult.java +++ b/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToOperationResult.java @@ -1,4 +1,4 @@ -package org.gcube.accounting.datamodel.deprecationmanagement.annotations; +package org.gcube.accounting.datamodel.backwardcompatibility; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -6,7 +6,6 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.gcube.accounting.datamodel.decorators.FieldDecorator; -import org.gcube.accounting.datamodel.deprecationmanagement.validators.MoveToOperationResultAction; @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) diff --git a/src/main/java/org/gcube/accounting/datamodel/deprecationmanagement/validators/MoveToOperationResultAction.java b/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToOperationResultAction.java similarity index 92% rename from src/main/java/org/gcube/accounting/datamodel/deprecationmanagement/validators/MoveToOperationResultAction.java rename to src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToOperationResultAction.java index 6c87151..14e2442 100644 --- a/src/main/java/org/gcube/accounting/datamodel/deprecationmanagement/validators/MoveToOperationResultAction.java +++ b/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToOperationResultAction.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.accounting.datamodel.deprecationmanagement.validators; +package org.gcube.accounting.datamodel.backwardcompatibility; import java.io.Serializable; diff --git a/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToTaskEndTime.java b/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToTaskEndTime.java new file mode 100644 index 0000000..c70eb63 --- /dev/null +++ b/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToTaskEndTime.java @@ -0,0 +1,22 @@ +/** + * + */ +package org.gcube.accounting.datamodel.backwardcompatibility; + +/** + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + * + */ +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.gcube.accounting.datamodel.decorators.FieldDecorator; + +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +@FieldDecorator(managed=MoveToTaskEndTimeAction.class) +public @interface MoveToTaskEndTime { + +} diff --git a/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToTaskEndTimeAction.java b/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToTaskEndTimeAction.java new file mode 100644 index 0000000..b28eed2 --- /dev/null +++ b/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToTaskEndTimeAction.java @@ -0,0 +1,30 @@ +/** + * + */ +package org.gcube.accounting.datamodel.backwardcompatibility; + +import java.io.Serializable; + +import org.gcube.accounting.datamodel.UsageRecord; +import org.gcube.accounting.datamodel.basetypes.AbstractTaskUsageRecord; +import org.gcube.accounting.datamodel.decorators.FieldAction; +import org.gcube.accounting.exception.InvalidValueException; + +/** + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + * + */ +public class MoveToTaskEndTimeAction implements FieldAction { + + /** + * {@inheritDoc} + */ + @Override + public Comparable validate(String key, + Comparable value, UsageRecord usageRecord) + throws InvalidValueException { + usageRecord.setResourceProperty(AbstractTaskUsageRecord.TASK_END_TIME, value); + return usageRecord.getResourceProperty(AbstractTaskUsageRecord.TASK_END_TIME); + } + +} diff --git a/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToTaskStartTime.java b/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToTaskStartTime.java new file mode 100644 index 0000000..5096d58 --- /dev/null +++ b/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToTaskStartTime.java @@ -0,0 +1,22 @@ +/** + * + */ +package org.gcube.accounting.datamodel.backwardcompatibility; + +/** + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + * + */ +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.gcube.accounting.datamodel.decorators.FieldDecorator; + +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +@FieldDecorator(managed=MoveToTaskStartTimeAction.class) +public @interface MoveToTaskStartTime { + +} diff --git a/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToTaskStartTimeAction.java b/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToTaskStartTimeAction.java new file mode 100644 index 0000000..cd122e8 --- /dev/null +++ b/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToTaskStartTimeAction.java @@ -0,0 +1,30 @@ +/** + * + */ +package org.gcube.accounting.datamodel.backwardcompatibility; + +import java.io.Serializable; + +import org.gcube.accounting.datamodel.UsageRecord; +import org.gcube.accounting.datamodel.basetypes.AbstractTaskUsageRecord; +import org.gcube.accounting.datamodel.decorators.FieldAction; +import org.gcube.accounting.exception.InvalidValueException; + +/** + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + * + */ +public class MoveToTaskStartTimeAction implements FieldAction { + + /** + * {@inheritDoc} + */ + @Override + public Comparable validate(String key, + Comparable value, UsageRecord usageRecord) + throws InvalidValueException { + usageRecord.setResourceProperty(AbstractTaskUsageRecord.TASK_START_TIME, value); + return usageRecord.getResourceProperty(AbstractTaskUsageRecord.TASK_START_TIME); + } + +} diff --git a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractJobUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractJobUsageRecord.java index ef1b819..6832d85 100644 --- a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractJobUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractJobUsageRecord.java @@ -8,9 +8,9 @@ import java.util.Calendar; import java.util.Map; import org.gcube.accounting.datamodel.BasicUsageRecord; +import org.gcube.accounting.datamodel.backwardcompatibility.MoveToOperationResult; import org.gcube.accounting.datamodel.decorators.ComputedField; import org.gcube.accounting.datamodel.decorators.RequiredField; -import org.gcube.accounting.datamodel.deprecationmanagement.annotations.MoveToOperationResult; import org.gcube.accounting.datamodel.validations.annotations.NotEmpty; import org.gcube.accounting.datamodel.validations.annotations.ValidInteger; import org.gcube.accounting.datamodel.validations.annotations.ValidLong; diff --git a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractPortletUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractPortletUsageRecord.java index 655f893..7cf9fe9 100644 --- a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractPortletUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractPortletUsageRecord.java @@ -15,7 +15,7 @@ import org.gcube.accounting.datamodel.UsageRecord; import org.gcube.accounting.datamodel.decorators.FieldAction; import org.gcube.accounting.datamodel.decorators.FieldDecorator; import org.gcube.accounting.datamodel.decorators.RequiredField; -import org.gcube.accounting.datamodel.deprecationmanagement.annotations.DeprecatedWarning; +import org.gcube.accounting.datamodel.deprecationmanagement.DeprecatedWarning; import org.gcube.accounting.datamodel.validations.annotations.NotEmpty; import org.gcube.accounting.datamodel.validations.annotations.NotEmptyIfNotNull; import org.gcube.accounting.datamodel.validations.validators.NotEmptyIfNotNullValidator; diff --git a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractStorageUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractStorageUsageRecord.java index 4bea791..fbe2672 100644 --- a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractStorageUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractStorageUsageRecord.java @@ -91,7 +91,7 @@ public abstract class AbstractStorageUsageRecord extends BasicUsageRecord { public static final String DATA_TYPE = "dataType"; /** - * Quantity of data in terms of KB + * KEY for : Quantity of data in terms of KB */ @RequiredField @ValidLong @FixDataVolumeSign public static final String DATA_VOLUME = "dataVolume"; diff --git a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractTaskUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractTaskUsageRecord.java index a63dd99..9c89441 100644 --- a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractTaskUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractTaskUsageRecord.java @@ -8,9 +8,11 @@ import java.util.Calendar; import java.util.Map; import org.gcube.accounting.datamodel.BasicUsageRecord; +import org.gcube.accounting.datamodel.backwardcompatibility.MoveToOperationResult; +import org.gcube.accounting.datamodel.backwardcompatibility.MoveToTaskEndTime; +import org.gcube.accounting.datamodel.backwardcompatibility.MoveToTaskStartTime; import org.gcube.accounting.datamodel.decorators.RequiredField; -import org.gcube.accounting.datamodel.deprecationmanagement.annotations.DeprecatedWarning; -import org.gcube.accounting.datamodel.deprecationmanagement.annotations.MoveToOperationResult; +import org.gcube.accounting.datamodel.deprecationmanagement.DeprecatedWarning; import org.gcube.accounting.datamodel.validations.annotations.NotEmpty; import org.gcube.accounting.datamodel.validations.annotations.ValidInteger; import org.gcube.accounting.datamodel.validations.annotations.ValidLong; @@ -27,10 +29,6 @@ public abstract class AbstractTaskUsageRecord extends BasicUsageRecord { */ private static final long serialVersionUID = -2208425042550641240L; - public static enum USAGE_PHASE { - completed, failed - }; - @RequiredField @NotEmpty public static final String JOB_ID = "jobId"; @RequiredField @NotEmpty @@ -38,33 +36,38 @@ public abstract class AbstractTaskUsageRecord extends BasicUsageRecord { @RequiredField @NotEmpty public static final String REF_VM = "refVM"; - @NotEmpty @DeprecatedWarning + @Deprecated @NotEmpty @DeprecatedWarning protected static final String DOMAIN = "domain"; - @RequiredField @ValidLong - public static final String USAGE_START_TIME = "usageStartTime"; - @RequiredField @ValidLong - public static final String USAGE_END_TIME = "usageEndTime"; + @Deprecated @DeprecatedWarning @MoveToTaskStartTime + protected static final String USAGE_START_TIME = "usageStartTime"; + @Deprecated @DeprecatedWarning @MoveToTaskEndTime + protected static final String USAGE_END_TIME = "usageEndTime"; - @MoveToOperationResult + @Deprecated @MoveToOperationResult @DeprecatedWarning protected static final String USAGE_PHASE = "usagePhase"; - @ValidInteger - public static final String INPUT_FILES_NUMBER = "inputFilesNumber"; - @ValidLong - public static final String INPUT_FILES_SIZE = "inputFilesSize"; - @ValidInteger - public static final String OUTPUT_FILES_NUMBER = "outputFilesNumber"; - @ValidLong - public static final String OUTPUT_FILES_SIZE = "outputFilesSize"; - @ValidLong - public static final String OVERALL_NETWORK_IN = "overallNetworkIn"; - @ValidLong - public static final String OVERALL_NETWORK_OUT = "overallNetworkOut"; - @ValidInteger - public static final String CORES = "cores"; - @ValidInteger - public static final String PROCESSORS = "processors"; + @RequiredField @ValidLong + public static final String TASK_START_TIME = "taskStartTime"; + @RequiredField @ValidLong + public static final String TASK_END_TIME = "taskEndTime"; + + @Deprecated @ValidInteger @DeprecatedWarning + protected static final String INPUT_FILES_NUMBER = "inputFilesNumber"; + @Deprecated @ValidLong @DeprecatedWarning + protected static final String INPUT_FILES_SIZE = "inputFilesSize"; + @Deprecated @ValidInteger @DeprecatedWarning + protected static final String OUTPUT_FILES_NUMBER = "outputFilesNumber"; + @Deprecated @ValidLong @DeprecatedWarning + protected static final String OUTPUT_FILES_SIZE = "outputFilesSize"; + @Deprecated @ValidLong @DeprecatedWarning + protected static final String OVERALL_NETWORK_IN = "overallNetworkIn"; + @Deprecated @ValidLong @DeprecatedWarning + protected static final String OVERALL_NETWORK_OUT = "overallNetworkOut"; + @Deprecated @ValidInteger @DeprecatedWarning + protected static final String CORES = "cores"; + @Deprecated @ValidInteger @DeprecatedWarning + protected static final String PROCESSORS = "processors"; public AbstractTaskUsageRecord(){ super(); @@ -124,27 +127,47 @@ public abstract class AbstractTaskUsageRecord extends BasicUsageRecord { setResourceProperty(DOMAIN, domain); } */ - + @Deprecated public Calendar getUsageStartTime() { long millis = (Long) this.resourceProperties.get(USAGE_START_TIME); return timestampStringToCalendar(millis); } - + @Deprecated public void setUsageStartTime(Calendar usageStartTime) throws InvalidValueException { setResourceProperty(USAGE_START_TIME, usageStartTime.getTimeInMillis()); } - + @Deprecated public Calendar getUsageEndTime() { long millis = (Long) this.resourceProperties.get(USAGE_END_TIME); return timestampStringToCalendar(millis); } - + @Deprecated public void setUsageEndTime(Calendar usageEndTime) throws InvalidValueException { setResourceProperty(USAGE_END_TIME, usageEndTime.getTimeInMillis()); } + public Calendar getTaskStartTime() { + long millis = (Long) this.resourceProperties.get(TASK_START_TIME); + return timestampStringToCalendar(millis); + } + + public void setTaskStartTime(Calendar startTime) throws InvalidValueException { + setResourceProperty(TASK_START_TIME, startTime.getTimeInMillis()); + + } + + public Calendar getTaskEndTime() { + long millis = (Long) this.resourceProperties.get(TASK_END_TIME); + return timestampStringToCalendar(millis); + } + + public void setTaskEndTime(Calendar endTime) throws InvalidValueException { + setResourceProperty(TASK_END_TIME, endTime.getTimeInMillis()); + + } + /* public USAGE_PHASE getUsagePhase() { return (USAGE_PHASE) this.resourceProperties.get(USAGE_PHASE); @@ -154,67 +177,68 @@ public abstract class AbstractTaskUsageRecord extends BasicUsageRecord { setResourceProperty(USAGE_PHASE, usagePhase); } */ - + + @Deprecated public int getInputFilesNumber() { return (Integer) this.resourceProperties.get(INPUT_FILES_NUMBER); } - + @Deprecated public void setInputFilesNumber(int inputFilesNumber) throws InvalidValueException { setResourceProperty(INPUT_FILES_NUMBER, inputFilesNumber); } - + @Deprecated public long getInputFilesSize() { return (Long) this.resourceProperties.get(INPUT_FILES_SIZE); } - + @Deprecated public void setInputFilesSize(long inputFilesSize) throws InvalidValueException { setResourceProperty(INPUT_FILES_SIZE, inputFilesSize); } - + @Deprecated public int getOutputFilesNumber() { return (Integer) this.resourceProperties.get(OUTPUT_FILES_NUMBER); } - + @Deprecated public void setOutputFilesNumber(int outputFilesNumber) throws InvalidValueException { setResourceProperty(OUTPUT_FILES_NUMBER, outputFilesNumber); } - + @Deprecated public long getOutputFilesSize() { return (Long) this.resourceProperties.get(OUTPUT_FILES_SIZE); } - + @Deprecated public void setOutputFilesSize(long outputFilesSize) throws InvalidValueException { setResourceProperty(OUTPUT_FILES_SIZE, outputFilesSize); } - + @Deprecated public long getOverallNetworkIn() { return (Long) this.resourceProperties.get(OVERALL_NETWORK_IN); } - + @Deprecated public void setOverallNetworkIn(long overallNetworkIn) throws InvalidValueException { setResourceProperty(OVERALL_NETWORK_IN, overallNetworkIn); } - + @Deprecated public long getOverallNetworkOut() { return (Long) this.resourceProperties.get(OVERALL_NETWORK_OUT); } - + @Deprecated public void setOverallNetworkOut(long overallNetworkOut) throws InvalidValueException { setResourceProperty(OVERALL_NETWORK_OUT, overallNetworkOut); } - + @Deprecated public int getCores() { return (Integer) this.resourceProperties.get(CORES); } - + @Deprecated public void setCores(int cores) throws InvalidValueException { setResourceProperty(CORES, cores); } - + @Deprecated public int getProcessors() { return (Integer) this.resourceProperties.get(PROCESSORS); } - + @Deprecated public void setProcessors(int processors) throws InvalidValueException { setResourceProperty(PROCESSORS, processors); } diff --git a/src/main/java/org/gcube/accounting/datamodel/deprecationmanagement/annotations/DeprecatedWarning.java b/src/main/java/org/gcube/accounting/datamodel/deprecationmanagement/DeprecatedWarning.java similarity index 69% rename from src/main/java/org/gcube/accounting/datamodel/deprecationmanagement/annotations/DeprecatedWarning.java rename to src/main/java/org/gcube/accounting/datamodel/deprecationmanagement/DeprecatedWarning.java index b62d149..8d8878f 100644 --- a/src/main/java/org/gcube/accounting/datamodel/deprecationmanagement/annotations/DeprecatedWarning.java +++ b/src/main/java/org/gcube/accounting/datamodel/deprecationmanagement/DeprecatedWarning.java @@ -1,4 +1,4 @@ -package org.gcube.accounting.datamodel.deprecationmanagement.annotations; +package org.gcube.accounting.datamodel.deprecationmanagement; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -6,7 +6,6 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.gcube.accounting.datamodel.decorators.FieldDecorator; -import org.gcube.accounting.datamodel.deprecationmanagement.validators.DeprecatedWarningAction; @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) diff --git a/src/main/java/org/gcube/accounting/datamodel/deprecationmanagement/validators/DeprecatedWarningAction.java b/src/main/java/org/gcube/accounting/datamodel/deprecationmanagement/DeprecatedWarningAction.java similarity index 84% rename from src/main/java/org/gcube/accounting/datamodel/deprecationmanagement/validators/DeprecatedWarningAction.java rename to src/main/java/org/gcube/accounting/datamodel/deprecationmanagement/DeprecatedWarningAction.java index 81da24a..94781a5 100644 --- a/src/main/java/org/gcube/accounting/datamodel/deprecationmanagement/validators/DeprecatedWarningAction.java +++ b/src/main/java/org/gcube/accounting/datamodel/deprecationmanagement/DeprecatedWarningAction.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.accounting.datamodel.deprecationmanagement.validators; +package org.gcube.accounting.datamodel.deprecationmanagement; import java.io.Serializable; @@ -24,7 +24,7 @@ public class DeprecatedWarningAction implements FieldAction { */ @Override public Comparable validate(String key, Comparable value, UsageRecord usageRecord) throws InvalidValueException { - logger.trace("The field {} is deprecated for {}. Anyway the field will be included in the document", + logger.trace("The field {} is deprecated for {}. Anyway the field will be included in the SingleUsageRecord. The field can be lost during aggregation.", key, usageRecord.getClass().getSimpleName()); return value; }