refs #200: Create accouting-lib library

https://support.d4science.org/issues/200
Creating more validators

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/accounting/accounting-lib@115157 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Luca Frosini 2015-05-29 15:39:24 +00:00
parent 1022ab01c9
commit 84181f9655
7 changed files with 70 additions and 23 deletions

View File

@ -6,6 +6,7 @@ package org.gcube.accounting.datamodel.implementations;
import java.util.Calendar; import java.util.Calendar;
import org.gcube.accounting.datamodel.RawUsageRecord; import org.gcube.accounting.datamodel.RawUsageRecord;
import org.gcube.accounting.datamodel.validators.ValidTime;
import org.gcube.accounting.exception.InvalidValueException; import org.gcube.accounting.exception.InvalidValueException;
import org.gcube.common.validator.annotations.NotEmpty; import org.gcube.common.validator.annotations.NotEmpty;
@ -20,21 +21,25 @@ public class JobUsageRecord extends RawUsageRecord {
*/ */
private static final long serialVersionUID = -8648691183939346858L; private static final long serialVersionUID = -8648691183939346858L;
public static enum JOB_STATUS {
completed, failed
};
@NotEmpty @NotEmpty
public static final String JOB_ID = "jobId"; public static final String JOB_ID = "jobId";
@NotEmpty @NotEmpty
public static final String JOB_QUALIFIER = "jobQualifier"; public static final String JOB_QUALIFIER = "jobQualifier";
@NotEmpty @NotEmpty
public static final String JOB_NAME = "jobName"; public static final String JOB_NAME = "jobName";
@NotEmpty @ValidTime
public static final String JOB_START_TIME = "jobStartTime"; public static final String JOB_START_TIME = "jobStartTime";
@NotEmpty @ValidTime
public static final String JOB_END_TIME = "jobEndTime"; public static final String JOB_END_TIME = "jobEndTime";
@NotEmpty @NotEmpty
public static final String JOB_STATUS = "jobStatus"; public static final String JOB_STATUS = "jobStatus";
@NotEmpty
public static final String VMS_USED = "vmsUsed"; public static final String VMS_USED = "vmsUsed";
@NotEmpty
public static final String WALL_DURATION = "wallDuration"; public static final String WALL_DURATION = "wallDuration";
public JobUsageRecord(){ public JobUsageRecord(){
@ -92,11 +97,11 @@ public class JobUsageRecord extends RawUsageRecord {
} }
public String getJobStatus() { public JOB_STATUS getJobStatus() {
return (String) this.resourceSpecificProperties.get(JOB_STATUS); return (JOB_STATUS) this.resourceSpecificProperties.get(JOB_STATUS);
} }
public void setJobStatus(String jobStatus) throws InvalidValueException { public void setJobStatus(JOB_STATUS jobStatus) throws InvalidValueException {
setResourceSpecificProperty(JOB_STATUS, jobStatus); setResourceSpecificProperty(JOB_STATUS, jobStatus);
} }

View File

@ -4,6 +4,7 @@
package org.gcube.accounting.datamodel.implementations; package org.gcube.accounting.datamodel.implementations;
import org.gcube.accounting.datamodel.RawUsageRecord; import org.gcube.accounting.datamodel.RawUsageRecord;
import org.gcube.accounting.datamodel.validators.ValidIP;
import org.gcube.accounting.exception.InvalidValueException; import org.gcube.accounting.exception.InvalidValueException;
import org.gcube.common.validator.annotations.NotEmpty; import org.gcube.common.validator.annotations.NotEmpty;
@ -18,7 +19,7 @@ public class ServiceUsageRecord extends RawUsageRecord {
*/ */
private static final long serialVersionUID = -4214891294699473587L; private static final long serialVersionUID = -4214891294699473587L;
@NotEmpty @ValidIP
public static final String CALLER_IP = "callerIP"; public static final String CALLER_IP = "callerIP";
@NotEmpty @NotEmpty
public static final String CALLER_SCOPE = "callerScope"; public static final String CALLER_SCOPE = "callerScope";
@ -28,9 +29,9 @@ public class ServiceUsageRecord extends RawUsageRecord {
public static final String REF_VM = "refVM"; public static final String REF_VM = "refVM";
@NotEmpty @NotEmpty
public static final String DOMAIN = "domain"; public static final String DOMAIN = "domain";
@NotEmpty //@Aggregated
public static final String INVOCATION_COUNT = "invocationCount"; public static final String INVOCATION_COUNT = "invocationCount";
@NotEmpty //@Aggregated
public static final String AVERAGE_INVOCATION_COUNT = "averageInvocationTime"; public static final String AVERAGE_INVOCATION_COUNT = "averageInvocationTime";
@NotEmpty @NotEmpty
public static final String SERVICE_CLASS = "serviceClass"; public static final String SERVICE_CLASS = "serviceClass";

View File

@ -24,9 +24,9 @@ public class StorageStatusUsageRecord extends RawUsageRecord {
public static final String QUALIFIER = "qualifier"; public static final String QUALIFIER = "qualifier";
@NotEmpty @NotEmpty
public static final String DATA_TYPE = "dataType"; public static final String DATA_TYPE = "dataType";
@NotEmpty
public static final String DATA_VOLUME = "dataVolume"; public static final String DATA_VOLUME = "dataVolume";
@NotEmpty
public static final String DATA_COUNT = "dataCount"; public static final String DATA_COUNT = "dataCount";
public StorageStatusUsageRecord(){ public StorageStatusUsageRecord(){

View File

@ -3,6 +3,7 @@
*/ */
package org.gcube.accounting.datamodel.implementations; package org.gcube.accounting.datamodel.implementations;
import org.gcube.accounting.datamodel.validators.ValidIP;
import org.gcube.accounting.exception.InvalidValueException; import org.gcube.accounting.exception.InvalidValueException;
import org.gcube.common.validator.annotations.NotEmpty; import org.gcube.common.validator.annotations.NotEmpty;
@ -21,7 +22,7 @@ public class StorageUsageRecord extends StorageStatusUsageRecord {
public static final String OBJECT_URI = "objectURI"; public static final String OBJECT_URI = "objectURI";
@NotEmpty @NotEmpty
public static final String OPERATION_TYPE = "operationType"; public static final String OPERATION_TYPE = "operationType";
@NotEmpty @ValidIP
public static final String CALLER_IP = "callerIP"; public static final String CALLER_IP = "callerIP";

View File

@ -6,6 +6,7 @@ package org.gcube.accounting.datamodel.implementations;
import java.util.Calendar; import java.util.Calendar;
import org.gcube.accounting.datamodel.RawUsageRecord; import org.gcube.accounting.datamodel.RawUsageRecord;
import org.gcube.accounting.datamodel.validators.ValidTime;
import org.gcube.accounting.exception.InvalidValueException; import org.gcube.accounting.exception.InvalidValueException;
import org.gcube.common.validator.annotations.NotEmpty; import org.gcube.common.validator.annotations.NotEmpty;
@ -32,27 +33,27 @@ public class TaskUsageRecord extends RawUsageRecord {
public static final String REF_VM = "refVM"; public static final String REF_VM = "refVM";
@NotEmpty @NotEmpty
public static final String DOMAIN = "domain"; public static final String DOMAIN = "domain";
@NotEmpty @ValidTime
public static final String USAGE_START_TIME = "usageStartTime"; public static final String USAGE_START_TIME = "usageStartTime";
@NotEmpty @ValidTime
public static final String USAGE_END_TIME = "usageEndTime"; public static final String USAGE_END_TIME = "usageEndTime";
@NotEmpty @NotEmpty
public static final String USAGE_PHASE = "usagePhase"; public static final String USAGE_PHASE = "usagePhase";
@NotEmpty
public static final String INPUT_FILES_NUMBER = "inputFilesNumber"; public static final String INPUT_FILES_NUMBER = "inputFilesNumber";
@NotEmpty
public static final String INPUT_FILES_SIZE = "inputFilesSize"; public static final String INPUT_FILES_SIZE = "inputFilesSize";
@NotEmpty
public static final String OUTPUT_FILES_NUMBER = "outputFilesNumber"; public static final String OUTPUT_FILES_NUMBER = "outputFilesNumber";
@NotEmpty
public static final String OUTPUT_FILES_SIZE = "outputFilesSize"; public static final String OUTPUT_FILES_SIZE = "outputFilesSize";
@NotEmpty
public static final String OVERALL_NETWORK_IN = "overallNetworkIn"; public static final String OVERALL_NETWORK_IN = "overallNetworkIn";
@NotEmpty
public static final String OVERALL_NETWORK_OUT = "overallNetworkOut"; public static final String OVERALL_NETWORK_OUT = "overallNetworkOut";
@NotEmpty
public static final String CORES = "cores"; public static final String CORES = "cores";
@NotEmpty
public static final String PROCESSORS = "processors"; public static final String PROCESSORS = "processors";

View File

@ -0,0 +1,15 @@
package org.gcube.accounting.datamodel.validators;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.gcube.common.validator.annotations.ValidityChecker;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@ValidityChecker(managed=ValidIPValidator.class)
public @interface ValidIP {
}

View File

@ -0,0 +1,24 @@
package org.gcube.accounting.datamodel.validators;
import org.gcube.accounting.datamodel.UsageRecord;
import org.gcube.common.validator.annotations.FieldValidator;
public class ValidIPValidator implements FieldValidator<ValidTime>{
public Class<ValidTime> annotation() {
return ValidTime.class;
}
public boolean isValid(Object toValidate) {
if(toValidate instanceof String){
// TODO Validate it
return true;
}
return false;
}
public String getErrorSuffix() {
return String.format("not instace of %s", UsageRecord.class.getSimpleName());
}
}