refs #200: Create accouting-lib library
https://support.d4science.org/issues/200 Fixing data model git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/accounting/accounting-lib@115300 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
70777d4a1b
commit
b4d24f8448
|
@ -14,6 +14,7 @@ import org.gcube.accounting.datamodel.validations.annotations.NotEmptyIfNotNull;
|
|||
import org.gcube.accounting.datamodel.validations.annotations.ValidIP;
|
||||
import org.gcube.accounting.datamodel.validations.annotations.ValidInteger;
|
||||
import org.gcube.accounting.datamodel.validations.annotations.ValidLong;
|
||||
import org.gcube.accounting.datamodel.validations.annotations.ValidOperationType;
|
||||
import org.gcube.accounting.exception.InvalidValueException;
|
||||
|
||||
/**
|
||||
|
@ -27,11 +28,19 @@ public class StorageUsageRecord extends RawUsageRecord implements SingleUsageRec
|
|||
*/
|
||||
private static final long serialVersionUID = 1381025822586583326L;
|
||||
|
||||
/*
|
||||
* Actually workspace uses
|
||||
* DOWNLOAD, UPLOAD, COPY, MOVE, DELETE,
|
||||
*/
|
||||
public enum OperationType {
|
||||
GET, PUT, UPDATE, DELETE
|
||||
}
|
||||
|
||||
@NotEmptyIfNotNull
|
||||
public static final String PROVIDER_ID = "providerId";
|
||||
@NotEmptyIfNotNull
|
||||
public static final String OBJECT_URI = "objectURI";
|
||||
@RequiredField @NotEmpty
|
||||
@RequiredField @ValidOperationType
|
||||
public static final String OPERATION_TYPE = "operationType";
|
||||
@NotEmpty
|
||||
public static final String QUALIFIER = "qualifier";
|
||||
|
|
|
@ -11,10 +11,10 @@ import org.gcube.accounting.datamodel.RawUsageRecord;
|
|||
import org.gcube.accounting.datamodel.SingleUsageRecord;
|
||||
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.validations.annotations.NotEmpty;
|
||||
import org.gcube.accounting.datamodel.validations.annotations.ValidInteger;
|
||||
import org.gcube.accounting.datamodel.validations.annotations.ValidLong;
|
||||
import org.gcube.accounting.datamodel.validations.annotations.ValidOperationResult;
|
||||
import org.gcube.accounting.exception.InvalidValueException;
|
||||
|
||||
/**
|
||||
|
@ -46,8 +46,10 @@ public class TaskUsageRecord extends RawUsageRecord implements SingleUsageRecord
|
|||
public static final String USAGE_START_TIME = "usageStartTime";
|
||||
@RequiredField @ValidLong
|
||||
public static final String USAGE_END_TIME = "usageEndTime";
|
||||
@ValidOperationResult
|
||||
public static final String USAGE_PHASE = "usagePhase";
|
||||
|
||||
@MoveToOperationResult
|
||||
protected static final String USAGE_PHASE = "usagePhase";
|
||||
|
||||
@ValidInteger
|
||||
public static final String INPUT_FILES_NUMBER = "inputFilesNumber";
|
||||
@ValidLong
|
||||
|
@ -134,6 +136,7 @@ public class TaskUsageRecord extends RawUsageRecord implements SingleUsageRecord
|
|||
|
||||
}
|
||||
|
||||
/*
|
||||
public USAGE_PHASE getUsagePhase() {
|
||||
return (USAGE_PHASE) this.resourceProperties.get(USAGE_PHASE);
|
||||
}
|
||||
|
@ -141,6 +144,7 @@ public class TaskUsageRecord extends RawUsageRecord implements SingleUsageRecord
|
|||
public void setUsagePhase(USAGE_PHASE usagePhase) throws InvalidValueException {
|
||||
setResourceProperty(USAGE_PHASE, usagePhase);
|
||||
}
|
||||
*/
|
||||
|
||||
public int getInputFilesNumber() {
|
||||
return (Integer) this.resourceProperties.get(INPUT_FILES_NUMBER);
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
package org.gcube.accounting.datamodel.validations.annotations;
|
||||
|
||||
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;
|
||||
import org.gcube.accounting.datamodel.validations.validators.ValidOperationTypeValidator;
|
||||
|
||||
@Target(ElementType.FIELD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@FieldDecorator(managed=ValidOperationTypeValidator.class)
|
||||
public @interface ValidOperationType {
|
||||
|
||||
}
|
|
@ -0,0 +1,62 @@
|
|||
package org.gcube.accounting.datamodel.validations.validators;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import org.gcube.accounting.datamodel.UsageRecord;
|
||||
import org.gcube.accounting.datamodel.UsageRecord.OperationResult;
|
||||
import org.gcube.accounting.datamodel.decorators.FieldAction;
|
||||
import org.gcube.accounting.datamodel.implementations.StorageUsageRecord.OperationType;
|
||||
import org.gcube.accounting.exception.InvalidValueException;
|
||||
|
||||
public class ValidOperationTypeValidator implements FieldAction {
|
||||
|
||||
private static final String ERROR = String.format("Not Instance of %s", OperationResult.class.getSimpleName());
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
@Override
|
||||
public Serializable validate(String key, Serializable value, UsageRecord usageRecord) throws InvalidValueException {
|
||||
if(value instanceof OperationType){
|
||||
return value;
|
||||
}
|
||||
|
||||
try {
|
||||
if(value instanceof String){
|
||||
try{
|
||||
OperationType operationType = OperationType.valueOf((String) value);
|
||||
if(operationType !=null){
|
||||
return operationType;
|
||||
}
|
||||
} catch(Exception e){
|
||||
// Trying another way
|
||||
}
|
||||
|
||||
try{
|
||||
Integer integer = Integer.getInteger((String) value);
|
||||
if(integer!=null){
|
||||
value = integer;
|
||||
}
|
||||
} catch(Exception e){
|
||||
// Trying another way
|
||||
}
|
||||
}
|
||||
|
||||
if(value instanceof Integer){
|
||||
return OperationType.values()[(Integer) value];
|
||||
}
|
||||
|
||||
if(value instanceof Enum){
|
||||
return OperationType.values()[((Enum) value).ordinal()];
|
||||
}
|
||||
|
||||
}catch(Exception e){
|
||||
throw new InvalidValueException(ERROR, e.getCause());
|
||||
}
|
||||
|
||||
throw new InvalidValueException(ERROR);
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue