80 lines
2.8 KiB
Java
80 lines
2.8 KiB
Java
package org.gcube.dataharvest.harvester;
|
|
|
|
import java.text.ParseException;
|
|
import java.util.ArrayList;
|
|
import java.util.Calendar;
|
|
import java.util.Date;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.Set;
|
|
import java.util.SortedMap;
|
|
|
|
import org.gcube.accounting.analytics.Filter;
|
|
import org.gcube.accounting.analytics.Info;
|
|
import org.gcube.accounting.analytics.TemporalConstraint;
|
|
import org.gcube.accounting.analytics.TemporalConstraint.AggregationMode;
|
|
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQuery;
|
|
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQueryFactory;
|
|
import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord;
|
|
import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord;
|
|
import org.gcube.dataharvest.datamodel.Harvest;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
public class MethodInvocationHarvester extends BasicHarvester {
|
|
|
|
private static Logger logger = LoggerFactory.getLogger(MethodInvocationHarvester.class);
|
|
|
|
public MethodInvocationHarvester(Date start, Date end) throws ParseException {
|
|
super(start, end);
|
|
}
|
|
|
|
@Override
|
|
public List<Harvest> getData() throws Exception {
|
|
try {
|
|
logger.debug("MethodInvocationHarvester::getData()");
|
|
ArrayList<Harvest> data = new ArrayList<Harvest>();
|
|
AccountingPersistenceQuery accountingPersistenceQuery = AccountingPersistenceQueryFactory.getInstance();
|
|
Calendar start = Calendar.getInstance();
|
|
Calendar end = Calendar.getInstance();
|
|
start.setTime(startDate);
|
|
end.setTime(endDate);
|
|
TemporalConstraint temporalConstraint = new TemporalConstraint(start.getTimeInMillis(),
|
|
end.getTimeInMillis(), AggregationMode.MONTHLY);
|
|
|
|
List<Filter> filters = new ArrayList<>();
|
|
filters.add(new Filter(ServiceUsageRecord.CALLED_METHOD, "tag"));
|
|
|
|
List<String> contexts = new ArrayList<>();
|
|
contexts.add("/d4science.research-infrastructures.eu/SoBigData/TagMe");
|
|
|
|
logger.debug("MethodInvocationHarvester::getData()::getContextTimeSeries");
|
|
SortedMap<Filter, SortedMap<Calendar, Info>> result = accountingPersistenceQuery.getContextTimeSeries(
|
|
AggregatedServiceUsageRecord.class, temporalConstraint, filters, contexts, true);
|
|
if (result == null) {
|
|
logger.error("No data found.");
|
|
} else {
|
|
Set<Filter> ks = result.keySet();
|
|
if (ks != null) {
|
|
Iterator<Filter> ksi = ks.iterator();
|
|
while (ksi.hasNext()) {
|
|
// System.out.println("" + ksi.next().toString());
|
|
logger.debug("Filter: " + ksi.next().toString());
|
|
}
|
|
}
|
|
}
|
|
|
|
return data;
|
|
} catch (Exception x) {
|
|
StackTraceElement[] ste = x.getStackTrace();
|
|
String errorMessage = "MethodInvocationHarvester: " + x.getLocalizedMessage();
|
|
for (StackTraceElement s : ste) {
|
|
errorMessage += "\n" + s.toString();
|
|
}
|
|
logger.error(errorMessage);
|
|
throw x;
|
|
}
|
|
}
|
|
|
|
}
|