This commit is contained in:
Luca Frosini 2015-06-24 10:34:54 +00:00
parent e4c8558c7f
commit 28525346d1
8 changed files with 27 additions and 34 deletions

View File

@ -4,27 +4,20 @@
package org.gcube.accounting.datamodel; package org.gcube.accounting.datamodel;
import org.gcube.accounting.exception.InvalidValueException; import org.gcube.accounting.exception.InvalidValueException;
import org.gcube.accounting.exception.NotAggregatableRecorsExceptions; import org.gcube.accounting.exception.NotAggregatableRecordsExceptions;
/** /**
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
*/ */
public interface AggregatedUsageRecord<T extends B, B extends SingleUsageRecord> extends UsageRecord { public interface AggregatedUsageRecord<T extends B, B extends SingleUsageRecord> extends SingleUsageRecord {
public T getAggregatedUsageRecord(B b) throws InvalidValueException ; public T getAggregatedUsageRecord(B b) throws InvalidValueException ;
/** /**
* Aggregate the Record provided as parameter with this record if Aggregatable * Aggregate the Record provided as parameter with this record if Aggregatable
* @throws NotAggregatableRecorsExceptions * @throws NotAggregatableRecordsExceptions
*/ */
public void aggregate(T record) throws NotAggregatableRecorsExceptions; public void aggregate(T record) throws NotAggregatableRecordsExceptions;
/* *
*
* @param records
* @return
* /
public Collection<T> aggregate(List<? extends B> records);
*/
} }

View File

@ -9,7 +9,7 @@ import java.security.NoSuchAlgorithmException;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import org.gcube.accounting.exception.NotAggregatableRecorsExceptions; import org.gcube.accounting.exception.NotAggregatableRecordsExceptions;
/** /**
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
@ -58,21 +58,21 @@ public abstract class AggregationStrategy<T extends B, B extends SingleUsageReco
return true; return true;
} }
public void aggregate(B record) throws NotAggregatableRecorsExceptions { public void aggregate(B record) throws NotAggregatableRecordsExceptions {
try{ try{
if(isAggregable(record)){ if(isAggregable(record)){
throw new NotAggregatableRecorsExceptions("The Record provided as argument has different values for field wich must be common to be aggragatable"); throw new NotAggregatableRecordsExceptions("The Record provided as argument has different values for field wich must be common to be aggragatable");
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
AggregatedUsageRecord<T, B> aggregatedUsageRecord = ((AggregatedUsageRecord<T, B>) t); AggregatedUsageRecord<T, B> aggregatedUsageRecord = ((AggregatedUsageRecord<T, B>) t);
aggregatedUsageRecord.aggregate(aggregatedUsageRecord.getAggregatedUsageRecord(record)); aggregatedUsageRecord.aggregate(aggregatedUsageRecord.getAggregatedUsageRecord(record));
throw new NotAggregatableRecorsExceptions(""); throw new NotAggregatableRecordsExceptions("");
}catch(NotAggregatableRecorsExceptions e){ }catch(NotAggregatableRecordsExceptions e){
throw e; throw e;
}catch(Exception ex){ }catch(Exception ex){
throw new NotAggregatableRecorsExceptions(ex.getCause()); throw new NotAggregatableRecordsExceptions(ex.getCause());
} }
} }

View File

@ -8,7 +8,7 @@ import java.util.Map;
import org.gcube.accounting.datamodel.AggregatedUsageRecord; import org.gcube.accounting.datamodel.AggregatedUsageRecord;
import org.gcube.accounting.exception.InvalidValueException; import org.gcube.accounting.exception.InvalidValueException;
import org.gcube.accounting.exception.NotAggregatableRecorsExceptions; import org.gcube.accounting.exception.NotAggregatableRecordsExceptions;
/** /**
* This Class is for library internal use only * This Class is for library internal use only
@ -47,7 +47,7 @@ public class JobUsageRecord extends org.gcube.accounting.datamodel.implementatio
*/ */
@Override @Override
public void aggregate(JobUsageRecord record) public void aggregate(JobUsageRecord record)
throws NotAggregatableRecorsExceptions { throws NotAggregatableRecordsExceptions {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }

View File

@ -8,7 +8,7 @@ import java.util.Map;
import org.gcube.accounting.datamodel.AggregatedUsageRecord; import org.gcube.accounting.datamodel.AggregatedUsageRecord;
import org.gcube.accounting.exception.InvalidValueException; import org.gcube.accounting.exception.InvalidValueException;
import org.gcube.accounting.exception.NotAggregatableRecorsExceptions; import org.gcube.accounting.exception.NotAggregatableRecordsExceptions;
/** /**
* This Class is for library internal use only * This Class is for library internal use only
@ -48,7 +48,7 @@ public class PortletUsageRecord extends org.gcube.accounting.datamodel.implement
*/ */
@Override @Override
public void aggregate(PortletUsageRecord record) public void aggregate(PortletUsageRecord record)
throws NotAggregatableRecorsExceptions { throws NotAggregatableRecordsExceptions {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }

View File

@ -8,7 +8,7 @@ import java.util.Map;
import org.gcube.accounting.datamodel.AggregatedUsageRecord; import org.gcube.accounting.datamodel.AggregatedUsageRecord;
import org.gcube.accounting.exception.InvalidValueException; import org.gcube.accounting.exception.InvalidValueException;
import org.gcube.accounting.exception.NotAggregatableRecorsExceptions; import org.gcube.accounting.exception.NotAggregatableRecordsExceptions;
/** /**
* This Class is for library internal use only * This Class is for library internal use only
@ -47,7 +47,7 @@ public class StorageUsageRecord extends org.gcube.accounting.datamodel.implement
*/ */
@Override @Override
public void aggregate(StorageUsageRecord record) public void aggregate(StorageUsageRecord record)
throws NotAggregatableRecorsExceptions { throws NotAggregatableRecordsExceptions {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }

View File

@ -7,26 +7,26 @@ package org.gcube.accounting.exception;
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
* *
*/ */
public class NotAggregatableRecorsExceptions extends Exception { public class NotAggregatableRecordsExceptions extends Exception {
/** /**
* Generated serial Version UID * Generated serial Version UID
*/ */
private static final long serialVersionUID = -1477792189431118048L; private static final long serialVersionUID = -1477792189431118048L;
public NotAggregatableRecorsExceptions() { public NotAggregatableRecordsExceptions() {
super(); super();
} }
public NotAggregatableRecorsExceptions(String message) { public NotAggregatableRecordsExceptions(String message) {
super(message); super(message);
} }
public NotAggregatableRecorsExceptions(Throwable cause) { public NotAggregatableRecordsExceptions(Throwable cause) {
super(cause); super(cause);
} }
public NotAggregatableRecorsExceptions(String message, Throwable cause) { public NotAggregatableRecordsExceptions(String message, Throwable cause) {
super(message, cause); super(message, cause);
} }
} }

View File

@ -8,7 +8,7 @@ import java.util.ServiceLoader;
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.SingleUsageRecord; import org.gcube.accounting.datamodel.BasicUsageRecord;
import org.gcube.accounting.datamodel.UsageRecord; import org.gcube.accounting.datamodel.UsageRecord;
import org.gcube.accounting.datamodel.implementations.ServiceUsageRecord; import org.gcube.accounting.datamodel.implementations.ServiceUsageRecord;
import org.gcube.accounting.exception.InvalidValueException; import org.gcube.accounting.exception.InvalidValueException;
@ -81,7 +81,7 @@ public abstract class Persistence {
} }
} }
public static SingleUsageRecord createTestUsageRecord(){ public static BasicUsageRecord createTestUsageRecord(){
ServiceUsageRecord serviceUsageRecord = new ServiceUsageRecord(); ServiceUsageRecord serviceUsageRecord = new ServiceUsageRecord();
try { try {
serviceUsageRecord.setConsumerId("accounting"); serviceUsageRecord.setConsumerId("accounting");
@ -158,7 +158,7 @@ public abstract class Persistence {
*/ */
protected abstract void reallyAccount(UsageRecord usageRecord) throws Exception; protected abstract void reallyAccount(UsageRecord usageRecord) throws Exception;
private void accountWithFallback(SingleUsageRecord usageRecord) throws Exception { private void accountWithFallback(BasicUsageRecord usageRecord) throws Exception {
String persistenceName = getInstance().getClass().getSimpleName(); String persistenceName = getInstance().getClass().getSimpleName();
try { try {
//logger.debug("Going to account {} using {}", usageRecord, persistenceName); //logger.debug("Going to account {} using {}", usageRecord, persistenceName);
@ -187,7 +187,7 @@ public abstract class Persistence {
* so that the {@link #UsageRecord} can be recorder later. * so that the {@link #UsageRecord} can be recorder later.
* @param usageRecord the {@link #UsageRecord} to persist * @param usageRecord the {@link #UsageRecord} to persist
*/ */
public void account(final SingleUsageRecord usageRecord){ public void account(final BasicUsageRecord usageRecord){
Runnable runnable = new Runnable(){ Runnable runnable = new Runnable(){
@Override @Override
public void run(){ public void run(){

View File

@ -6,7 +6,7 @@ package org.gcube.accounting.datamodel.persistence;
import java.util.Calendar; import java.util.Calendar;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
import org.gcube.accounting.datamodel.SingleUsageRecord; import org.gcube.accounting.datamodel.BasicUsageRecord;
import org.gcube.accounting.persistence.Persistence; import org.gcube.accounting.persistence.Persistence;
import org.junit.Test; import org.junit.Test;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -36,7 +36,7 @@ public class PersistenceTest {
int quantity = 3000; int quantity = 3000;
Calendar startTestTime = new GregorianCalendar(); Calendar startTestTime = new GregorianCalendar();
for(int i=0; i< quantity; i++){ for(int i=0; i< quantity; i++){
SingleUsageRecord usageRecord = Persistence.createTestUsageRecord(); BasicUsageRecord usageRecord = Persistence.createTestUsageRecord();
persistence.account(usageRecord); persistence.account(usageRecord);
} }
Calendar stopTestTime = new GregorianCalendar(); Calendar stopTestTime = new GregorianCalendar();