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@115228 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
d7b5dca960
commit
7b74ab0d03
|
@ -19,6 +19,7 @@ import java.util.UUID;
|
||||||
|
|
||||||
import org.gcube.accounting.datamodel.validators.NotEmptyIfNotNull;
|
import org.gcube.accounting.datamodel.validators.NotEmptyIfNotNull;
|
||||||
import org.gcube.accounting.datamodel.validators.ValidLong;
|
import org.gcube.accounting.datamodel.validators.ValidLong;
|
||||||
|
import org.gcube.accounting.datamodel.validators.ValidOperationResult;
|
||||||
import org.gcube.accounting.exception.InvalidValueException;
|
import org.gcube.accounting.exception.InvalidValueException;
|
||||||
import org.gcube.common.validator.annotations.FieldValidator;
|
import org.gcube.common.validator.annotations.FieldValidator;
|
||||||
import org.gcube.common.validator.annotations.NotEmpty;
|
import org.gcube.common.validator.annotations.NotEmpty;
|
||||||
|
@ -30,7 +31,7 @@ import org.slf4j.LoggerFactory;
|
||||||
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class RawUsageRecord implements UsageRecord, Serializable {
|
public abstract class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
|
|
||||||
private static Logger logger = LoggerFactory.getLogger(RawUsageRecord.class);
|
private static Logger logger = LoggerFactory.getLogger(RawUsageRecord.class);
|
||||||
|
|
||||||
|
@ -43,9 +44,9 @@ public class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
@ValidLong
|
@ValidLong
|
||||||
public static final String CREATION_TIME = "creationTime";
|
public static final String CREATION_TIME = "creationTime";
|
||||||
@ValidLong
|
@ValidLong
|
||||||
public static final String START_TIME = "startTime";
|
protected static final String START_TIME = "startTime";
|
||||||
@ValidLong
|
@ValidLong
|
||||||
public static final String END_TIME = "endTime";
|
protected static final String END_TIME = "endTime";
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
public static final String RESOURCE_TYPE = "resourceType";
|
public static final String RESOURCE_TYPE = "resourceType";
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
|
@ -53,7 +54,9 @@ public class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
public static final String RESOURCE_OWNER = "resourceOwner";
|
public static final String RESOURCE_OWNER = "resourceOwner";
|
||||||
@NotEmptyIfNotNull
|
@NotEmptyIfNotNull
|
||||||
public static final String AGGREGATED_ID = "aggregatedId";
|
protected static final String AGGREGATED_ID = "aggregatedId";
|
||||||
|
@ValidOperationResult
|
||||||
|
public static final String OPERATION_RESULT = "operationResult";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generated Serial Version UID
|
* Generated Serial Version UID
|
||||||
|
@ -182,6 +185,13 @@ public class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
setResourceSpecificProperty(CREATION_TIME, creationTime.getTimeInMillis());
|
setResourceSpecificProperty(CREATION_TIME, creationTime.getTimeInMillis());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Deprecated
|
||||||
|
public Date getCreateTime() {
|
||||||
|
long millis = (Long) this.resourceSpecificProperties.get(CREATION_TIME);
|
||||||
|
return timestampStringToCalendar(millis).getTime();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
|
@ -203,17 +213,18 @@ public class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* Set the left end of the time interval covered by this {#UsageRecord}
|
||||||
|
* @param startTime Start Time
|
||||||
|
* @throws InvalidValueException
|
||||||
*/
|
*/
|
||||||
@Override
|
protected void setStartTime(Calendar startTime) throws InvalidValueException {
|
||||||
public void setStartTime(Calendar startTime) throws InvalidValueException {
|
|
||||||
setResourceSpecificProperty(START_TIME, startTime.getTimeInMillis());
|
setResourceSpecificProperty(START_TIME, startTime.getTimeInMillis());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/* *
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
* /
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void setStartTime(Date startTime) throws InvalidValueException {
|
public void setStartTime(Date startTime) throws InvalidValueException {
|
||||||
|
@ -221,6 +232,7 @@ public class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
calendar.setTime(startTime);
|
calendar.setTime(startTime);
|
||||||
setStartTime(calendar);
|
setStartTime(calendar);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
|
@ -232,16 +244,17 @@ public class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* Set the right end of the time interval covered by this {#UsageRecord}
|
||||||
|
* @param endTime End Time
|
||||||
|
* @throws InvalidValueException
|
||||||
*/
|
*/
|
||||||
@Override
|
protected void setEndTime(Calendar endTime) throws InvalidValueException {
|
||||||
public void setEndTime(Calendar endTime) throws InvalidValueException {
|
|
||||||
setResourceSpecificProperty(END_TIME, endTime.getTimeInMillis());
|
setResourceSpecificProperty(END_TIME, endTime.getTimeInMillis());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/* *
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
* /
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void setEndTime(Date endTime) throws InvalidValueException {
|
public void setEndTime(Date endTime) throws InvalidValueException {
|
||||||
|
@ -249,14 +262,17 @@ public class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
calendar.setTime(endTime);
|
calendar.setTime(endTime);
|
||||||
setEndTime(calendar);
|
setEndTime(calendar);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public String getUsageRecordType() {
|
public String getUsageRecordType() {
|
||||||
return (String) this.resourceSpecificProperties.get(RESOURCE_TYPE);
|
//return (String) this.resourceSpecificProperties.get(RESOURCE_TYPE);
|
||||||
|
return this.getClass().getSimpleName();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -294,6 +310,7 @@ public class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public String getResourceOwner() {
|
public String getResourceOwner() {
|
||||||
return (String) this.resourceSpecificProperties.get(RESOURCE_OWNER);
|
return (String) this.resourceSpecificProperties.get(RESOURCE_OWNER);
|
||||||
}
|
}
|
||||||
|
@ -302,6 +319,7 @@ public class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public void setResourceOwner(String owner) throws InvalidValueException {
|
public void setResourceOwner(String owner) throws InvalidValueException {
|
||||||
setResourceSpecificProperty(RESOURCE_OWNER, owner);
|
setResourceSpecificProperty(RESOURCE_OWNER, owner);
|
||||||
}
|
}
|
||||||
|
@ -310,6 +328,7 @@ public class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public String getAggregatedId() {
|
public String getAggregatedId() {
|
||||||
return (String) this.resourceSpecificProperties.get(AGGREGATED_ID);
|
return (String) this.resourceSpecificProperties.get(AGGREGATED_ID);
|
||||||
}
|
}
|
||||||
|
@ -317,7 +336,8 @@ public class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override@
|
||||||
|
Deprecated
|
||||||
public void setAggregatedId(String aggregatedId) throws InvalidValueException {
|
public void setAggregatedId(String aggregatedId) throws InvalidValueException {
|
||||||
setResourceSpecificProperty(AGGREGATED_ID, aggregatedId);
|
setResourceSpecificProperty(AGGREGATED_ID, aggregatedId);
|
||||||
}
|
}
|
||||||
|
@ -387,26 +407,6 @@ public class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString(){
|
public String toString(){
|
||||||
/*
|
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
|
||||||
stringBuilder.append("{");
|
|
||||||
boolean first = true;
|
|
||||||
for(String key : this.resourceSpecificProperties.keySet()){
|
|
||||||
if(!first){
|
|
||||||
stringBuilder.append(", \"");
|
|
||||||
}else {
|
|
||||||
stringBuilder.append("\"");
|
|
||||||
first = false;
|
|
||||||
}
|
|
||||||
stringBuilder.append(key);
|
|
||||||
stringBuilder.append("\":\"");
|
|
||||||
stringBuilder.append(this.resourceSpecificProperties.get(key));
|
|
||||||
stringBuilder.append("\"");
|
|
||||||
|
|
||||||
}
|
|
||||||
stringBuilder.append("}");
|
|
||||||
return stringBuilder.toString();
|
|
||||||
*/
|
|
||||||
return resourceSpecificProperties.toString();
|
return resourceSpecificProperties.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -428,6 +428,23 @@ public class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void setFullyQualifiedConsumerId(String fqcid) { }
|
public void setFullyQualifiedConsumerId(String fqcid) { }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public OperationResult getOperationResult(){
|
||||||
|
return OperationResult.valueOf((String) this.resourceSpecificProperties.get(OPERATION_RESULT));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setOperationResult(OperationResult operationResult) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compare this UsageRecord instance with the one provided as argument
|
* Compare this UsageRecord instance with the one provided as argument
|
||||||
* @param usageRecord the Usage Record to compare
|
* @param usageRecord the Usage Record to compare
|
||||||
|
@ -451,5 +468,25 @@ public class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<UsageRecord> aggregate(List<UsageRecord> records){
|
||||||
|
// TODO implements
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method use the resourceType value contained in the Map to instance
|
||||||
|
* the right UsageRecord class and return it. If the type implementation
|
||||||
|
* does not exist or the validation of one or more field validation fails
|
||||||
|
* an exception is thrown
|
||||||
|
* @param usageRecordMap
|
||||||
|
* @return the instance of the UsageRecord class.
|
||||||
|
* @throws Exception if fails
|
||||||
|
*/
|
||||||
|
public static UsageRecord getUsageRecord(Map<String, Serializable> usageRecordMap) throws Exception {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,10 @@ import org.gcube.accounting.exception.InvalidValueException;
|
||||||
|
|
||||||
public interface UsageRecord extends Comparable<UsageRecord>{
|
public interface UsageRecord extends Comparable<UsageRecord>{
|
||||||
|
|
||||||
|
public enum OperationResult {
|
||||||
|
SUCCESS, FAILED
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the unique id for this {#UsageRecord}
|
* Return the unique id for this {#UsageRecord}
|
||||||
* @return {#UsageRecord} Unique ID
|
* @return {#UsageRecord} Unique ID
|
||||||
|
@ -62,6 +66,13 @@ public interface UsageRecord extends Comparable<UsageRecord>{
|
||||||
*/
|
*/
|
||||||
public void setCreationTime(Calendar creationTime) throws InvalidValueException;
|
public void setCreationTime(Calendar creationTime) throws InvalidValueException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the creation time for this {#UsageRecord}
|
||||||
|
* @return the creation time for this {#UsageRecord}
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public Date getCreateTime();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use {{@link #setCreationTime(Calendar)}} instead
|
* Use {{@link #setCreationTime(Calendar)}} instead
|
||||||
* @param createTime
|
* @param createTime
|
||||||
|
@ -75,21 +86,22 @@ public interface UsageRecord extends Comparable<UsageRecord>{
|
||||||
* @return Start Time
|
* @return Start Time
|
||||||
*/
|
*/
|
||||||
public Calendar getStartTime();
|
public Calendar getStartTime();
|
||||||
|
|
||||||
/**
|
/* *
|
||||||
* Set the left end of the time interval covered by this {#UsageRecord}
|
* Set the left end of the time interval covered by this {#UsageRecord}
|
||||||
* @param startTime Start Time
|
* @param startTime Start Time
|
||||||
* @throws InvalidValueException
|
* @throws InvalidValueException
|
||||||
*/
|
* /
|
||||||
public void setStartTime(Calendar startTime) throws InvalidValueException;
|
public void setStartTime(Calendar startTime) throws InvalidValueException;
|
||||||
|
|
||||||
/**
|
/* *
|
||||||
* Use {{@link #setStartTime(Calendar)}} instead
|
* Use {{@link #setStartTime(Calendar)}} instead
|
||||||
* @param createTime
|
* @param createTime
|
||||||
* @throws InvalidValueException
|
* @throws InvalidValueException
|
||||||
*/
|
* /
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void setStartTime(Date startTime) throws InvalidValueException;
|
public void setStartTime(Date startTime) throws InvalidValueException;
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the right end of the time interval covered by this {#UsageRecord}
|
* Return the right end of the time interval covered by this {#UsageRecord}
|
||||||
|
@ -97,26 +109,29 @@ public interface UsageRecord extends Comparable<UsageRecord>{
|
||||||
*/
|
*/
|
||||||
public Calendar getEndTime();
|
public Calendar getEndTime();
|
||||||
|
|
||||||
/**
|
/* *
|
||||||
* Set the right end of the time interval covered by this {#UsageRecord}
|
* Set the right end of the time interval covered by this {#UsageRecord}
|
||||||
* @param endTime End Time
|
* @param endTime End Time
|
||||||
* @throws InvalidValueException
|
* @throws InvalidValueException
|
||||||
*/
|
* /
|
||||||
public void setEndTime(Calendar endTime) throws InvalidValueException;
|
public void setEndTime(Calendar endTime) throws InvalidValueException;
|
||||||
|
|
||||||
/**
|
/* *
|
||||||
* Use {{@link #setEndTime(Calendar)}} instead
|
* Use {{@link #setEndTime(Calendar)}} instead
|
||||||
* @param createTime
|
* @param createTime
|
||||||
* @throws InvalidValueException
|
* @throws InvalidValueException
|
||||||
*/
|
* /
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void setEndTime(Date endTime) throws InvalidValueException;
|
public void setEndTime(Date endTime) throws InvalidValueException;
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the type of the {#UsageRecord}.
|
* Return the type of the {#UsageRecord}.
|
||||||
* It is a alternative way of obj.getClass().getSimpleName()
|
* It is a alternative way of obj.getClass().getSimpleName() use this
|
||||||
|
* instead
|
||||||
* @return Resource Type
|
* @return Resource Type
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public String getUsageRecordType();
|
public String getUsageRecordType();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -153,6 +168,7 @@ public interface UsageRecord extends Comparable<UsageRecord>{
|
||||||
* Return the identity id of the accounting owner
|
* Return the identity id of the accounting owner
|
||||||
* @return The identity id of the accounting owner
|
* @return The identity id of the accounting owner
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public String getResourceOwner();
|
public String getResourceOwner();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -160,12 +176,14 @@ public interface UsageRecord extends Comparable<UsageRecord>{
|
||||||
* @param ownerID The identity id of the accounting owner
|
* @param ownerID The identity id of the accounting owner
|
||||||
* @throws InvalidValueException
|
* @throws InvalidValueException
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public void setResourceOwner(String ownerID) throws InvalidValueException;
|
public void setResourceOwner(String ownerID) throws InvalidValueException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the id of the usage record aggregating this
|
* Return the id of the usage record aggregating this
|
||||||
* @return Aggregated Id
|
* @return Aggregated Id
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public String getAggregatedId();
|
public String getAggregatedId();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -173,6 +191,7 @@ public interface UsageRecord extends Comparable<UsageRecord>{
|
||||||
* @param aggregatedId
|
* @param aggregatedId
|
||||||
* @throws InvalidValueException
|
* @throws InvalidValueException
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public void setAggregatedId(String aggregatedId) throws InvalidValueException;
|
public void setAggregatedId(String aggregatedId) throws InvalidValueException;
|
||||||
|
|
||||||
|
|
||||||
|
@ -218,6 +237,17 @@ public interface UsageRecord extends Comparable<UsageRecord>{
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void setFullyQualifiedConsumerId(String fqcid);
|
public void setFullyQualifiedConsumerId(String fqcid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the Operation Result related to the accounted Usage Record
|
||||||
|
*/
|
||||||
|
public OperationResult getOperationResult();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the Operation Result related to the accounted Usage Record
|
||||||
|
* @param operationResult the Operation Result to set
|
||||||
|
*/
|
||||||
|
public void setOperationResult(OperationResult operationResult);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validate the Resource Record
|
* Validate the Resource Record
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package org.gcube.accounting.datamodel.implementations;
|
package org.gcube.accounting.datamodel.aggregated;
|
||||||
|
|
||||||
import org.gcube.accounting.datamodel.RawUsageRecord;
|
import org.gcube.accounting.datamodel.RawUsageRecord;
|
||||||
import org.gcube.accounting.datamodel.validators.ValidInteger;
|
import org.gcube.accounting.datamodel.validators.ValidInteger;
|
|
@ -3,8 +3,11 @@
|
||||||
*/
|
*/
|
||||||
package org.gcube.accounting.datamodel.implementations;
|
package org.gcube.accounting.datamodel.implementations;
|
||||||
|
|
||||||
|
import org.gcube.accounting.datamodel.aggregated.StorageStatusUsageRecord;
|
||||||
import org.gcube.accounting.datamodel.validators.NotEmptyIfNotNull;
|
import org.gcube.accounting.datamodel.validators.NotEmptyIfNotNull;
|
||||||
import org.gcube.accounting.datamodel.validators.ValidIP;
|
import org.gcube.accounting.datamodel.validators.ValidIP;
|
||||||
|
import org.gcube.accounting.datamodel.validators.ValidInteger;
|
||||||
|
import org.gcube.accounting.datamodel.validators.ValidLong;
|
||||||
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;
|
||||||
|
|
||||||
|
@ -25,6 +28,16 @@ public class StorageUsageUsageRecord extends StorageStatusUsageRecord {
|
||||||
public static final String OPERATION_TYPE = "operationType";
|
public static final String OPERATION_TYPE = "operationType";
|
||||||
@ValidIP
|
@ValidIP
|
||||||
public static final String CALLER_IP = "callerIP";
|
public static final String CALLER_IP = "callerIP";
|
||||||
|
@NotEmpty
|
||||||
|
public static final String PROVIDER_ID = "providerId";
|
||||||
|
@NotEmpty
|
||||||
|
public static final String QUALIFIER = "qualifier";
|
||||||
|
@NotEmpty
|
||||||
|
public static final String DATA_TYPE = "dataType";
|
||||||
|
@ValidLong
|
||||||
|
public static final String DATA_VOLUME = "dataVolume";
|
||||||
|
@ValidInteger
|
||||||
|
public static final String DATA_COUNT = "dataCount";
|
||||||
|
|
||||||
|
|
||||||
public StorageUsageUsageRecord(){
|
public StorageUsageUsageRecord(){
|
||||||
|
@ -54,5 +67,45 @@ public class StorageUsageUsageRecord extends StorageStatusUsageRecord {
|
||||||
public void setCallerIP(String callerIP) throws InvalidValueException {
|
public void setCallerIP(String callerIP) throws InvalidValueException {
|
||||||
setResourceSpecificProperty(CALLER_IP, callerIP);
|
setResourceSpecificProperty(CALLER_IP, callerIP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getProviderId() {
|
||||||
|
return (String) this.resourceSpecificProperties.get(PROVIDER_ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProviderId(String providerId) throws InvalidValueException {
|
||||||
|
setResourceSpecificProperty(PROVIDER_ID, providerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getQualifier() {
|
||||||
|
return (String) this.resourceSpecificProperties.get(QUALIFIER);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQualifier(String qualifier) throws InvalidValueException {
|
||||||
|
setResourceSpecificProperty(QUALIFIER, qualifier);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDataType() {
|
||||||
|
return (String) this.resourceSpecificProperties.get(DATA_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDataType(String dataType) throws InvalidValueException {
|
||||||
|
setResourceSpecificProperty(DATA_TYPE, dataType);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getDataVolume() {
|
||||||
|
return (Long) this.resourceSpecificProperties.get(DATA_VOLUME);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDataVolume(long dataVolume) throws InvalidValueException {
|
||||||
|
setResourceSpecificProperty(DATA_VOLUME, dataVolume);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getDataCount() {
|
||||||
|
return (Integer) this.resourceSpecificProperties.get(DATA_COUNT);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDataCount(int dataCount) throws InvalidValueException {
|
||||||
|
setResourceSpecificProperty(DATA_COUNT, dataCount);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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=ValidOperationResultValidator.class)
|
||||||
|
public @interface ValidOperationResult {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package org.gcube.accounting.datamodel.validators;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import org.gcube.accounting.datamodel.UsageRecord.OperationResult;
|
||||||
|
import org.gcube.common.validator.annotations.FieldValidator;
|
||||||
|
|
||||||
|
public class ValidOperationResultValidator implements FieldValidator<ValidOperationResult>{
|
||||||
|
|
||||||
|
public Class<ValidOperationResult> annotation() {
|
||||||
|
return ValidOperationResult.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isValid(Object toValidate) {
|
||||||
|
if(toValidate instanceof OperationResult){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(toValidate instanceof String || toValidate instanceof Serializable){
|
||||||
|
try {
|
||||||
|
OperationResult.valueOf((String) toValidate);
|
||||||
|
return true;
|
||||||
|
}catch(Exception e){}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getErrorSuffix() {
|
||||||
|
return String.format("not instace of %s", OperationResult.class.getSimpleName());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -110,7 +110,7 @@ public class CouchDBPersistence extends Persistence {
|
||||||
ObjectMapper mapper = new ObjectMapper();
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
Map<String, Serializable> result = mapper.convertValue(jsonNode, Map.class);
|
Map<String, Serializable> result = mapper.convertValue(jsonNode, Map.class);
|
||||||
UsageRecord usageRecord = new RawUsageRecord(result);
|
UsageRecord usageRecord = RawUsageRecord.getUsageRecord(result);
|
||||||
return usageRecord;
|
return usageRecord;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,8 @@ import java.util.GregorianCalendar;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
import org.gcube.accounting.datamodel.RawUsageRecord;
|
|
||||||
import org.gcube.accounting.datamodel.UsageRecord;
|
import org.gcube.accounting.datamodel.UsageRecord;
|
||||||
|
import org.gcube.accounting.datamodel.implementations.ServiceUsageRecord;
|
||||||
import org.gcube.accounting.exception.InvalidValueException;
|
import org.gcube.accounting.exception.InvalidValueException;
|
||||||
import org.gcube.smartgears.context.container.ContainerContext;
|
import org.gcube.smartgears.context.container.ContainerContext;
|
||||||
import org.gcube.smartgears.provider.ProviderFactory;
|
import org.gcube.smartgears.provider.ProviderFactory;
|
||||||
|
@ -71,22 +71,21 @@ public abstract class Persistence {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static RawUsageRecord createTestRawUsageRecord(){
|
public static UsageRecord createTestRawUsageRecord(){
|
||||||
RawUsageRecord usageRecord = new RawUsageRecord();
|
UsageRecord usageRecord = new ServiceUsageRecord();
|
||||||
try {
|
try {
|
||||||
usageRecord.setCreatorId("accounting");
|
usageRecord.setCreatorId("accounting");
|
||||||
usageRecord.setConsumerId("accounting");
|
usageRecord.setConsumerId("accounting");
|
||||||
|
|
||||||
usageRecord.setResourceOwner("accounting.lib");
|
|
||||||
usageRecord.setResourceScope("/gcube/devsec");
|
usageRecord.setResourceScope("/gcube/devsec");
|
||||||
|
|
||||||
Calendar creatingTime = new GregorianCalendar();
|
Calendar creatingTime = new GregorianCalendar();
|
||||||
Calendar startTime = new GregorianCalendar();
|
//Calendar startTime = new GregorianCalendar();
|
||||||
Calendar endTime = new GregorianCalendar();
|
//Calendar endTime = new GregorianCalendar();
|
||||||
|
|
||||||
usageRecord.setCreationTime(creatingTime);
|
usageRecord.setCreationTime(creatingTime);
|
||||||
usageRecord.setStartTime(startTime);
|
//usageRecord.setStartTime(startTime);
|
||||||
usageRecord.setEndTime(endTime);
|
//usageRecord.setEndTime(endTime);
|
||||||
|
|
||||||
usageRecord.setResourceSpecificProperty("ConnectionTest", "Test");
|
usageRecord.setResourceSpecificProperty("ConnectionTest", "Test");
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ public class RawUsageRecordTest {
|
||||||
@Test
|
@Test
|
||||||
public void testCompareToEqualsObject() throws Exception {
|
public void testCompareToEqualsObject() throws Exception {
|
||||||
UsageRecord usageRecord = Persistence.createTestRawUsageRecord();
|
UsageRecord usageRecord = Persistence.createTestRawUsageRecord();
|
||||||
UsageRecord ur = new RawUsageRecord(usageRecord.getResourceSpecificProperties());
|
UsageRecord ur = RawUsageRecord.getUsageRecord(usageRecord.getResourceSpecificProperties());
|
||||||
Assert.assertEquals(0, usageRecord.compareTo(ur));
|
Assert.assertEquals(0, usageRecord.compareTo(ur));
|
||||||
Assert.assertEquals(0, ur.compareTo(usageRecord));
|
Assert.assertEquals(0, ur.compareTo(usageRecord));
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@ public class RawUsageRecordTest {
|
||||||
@Test
|
@Test
|
||||||
public void testCompareToComparedAddedProperty() throws Exception {
|
public void testCompareToComparedAddedProperty() throws Exception {
|
||||||
UsageRecord usageRecord = Persistence.createTestRawUsageRecord();
|
UsageRecord usageRecord = Persistence.createTestRawUsageRecord();
|
||||||
UsageRecord ur = new RawUsageRecord(usageRecord.getResourceSpecificProperties());
|
UsageRecord ur = RawUsageRecord.getUsageRecord(usageRecord.getResourceSpecificProperties());
|
||||||
for(int i=1; i<31; i++){
|
for(int i=1; i<31; i++){
|
||||||
ur.setResourceSpecificProperty(Integer.toString(i), i);
|
ur.setResourceSpecificProperty(Integer.toString(i), i);
|
||||||
Assert.assertEquals(-i, usageRecord.compareTo(ur));
|
Assert.assertEquals(-i, usageRecord.compareTo(ur));
|
||||||
|
@ -43,7 +43,7 @@ public class RawUsageRecordTest {
|
||||||
@Test
|
@Test
|
||||||
public void testCompareToDifferentForAddedProperties() throws Exception {
|
public void testCompareToDifferentForAddedProperties() throws Exception {
|
||||||
UsageRecord usageRecord = Persistence.createTestRawUsageRecord();
|
UsageRecord usageRecord = Persistence.createTestRawUsageRecord();
|
||||||
UsageRecord ur = new RawUsageRecord(usageRecord.getResourceSpecificProperties());
|
UsageRecord ur = RawUsageRecord.getUsageRecord(usageRecord.getResourceSpecificProperties());
|
||||||
usageRecord.setResourceSpecificProperty(Integer.toString(1), 2);
|
usageRecord.setResourceSpecificProperty(Integer.toString(1), 2);
|
||||||
ur.setResourceSpecificProperty(Integer.toString(2), 2);
|
ur.setResourceSpecificProperty(Integer.toString(2), 2);
|
||||||
Assert.assertEquals(1, usageRecord.compareTo(ur));
|
Assert.assertEquals(1, usageRecord.compareTo(ur));
|
||||||
|
|
Loading…
Reference in New Issue