Implementing library

This commit is contained in:
Luca Frosini 2021-03-22 19:08:31 +01:00
parent 9c967f5e32
commit 2efd3e3d09
3 changed files with 46 additions and 12 deletions

View File

@ -30,6 +30,7 @@ import org.gcube.accounting.analytics.persistence.AccountingPersistenceBackendQu
import org.gcube.accounting.analytics.persistence.AccountingPersistenceBackendQueryConfiguration; import org.gcube.accounting.analytics.persistence.AccountingPersistenceBackendQueryConfiguration;
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQuery; import org.gcube.accounting.analytics.persistence.AccountingPersistenceQuery;
import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord; import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord;
import org.gcube.accounting.datamodel.aggregation.AggregatedStorageStatusRecord;
import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord; import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord;
import org.gcube.accounting.persistence.AccountingPersistenceConfiguration; import org.gcube.accounting.persistence.AccountingPersistenceConfiguration;
import org.gcube.accounting.utility.postgresql.RecordToDBConnection; import org.gcube.accounting.utility.postgresql.RecordToDBConnection;
@ -196,7 +197,7 @@ public class AccountingPersistenceQueryPostgreSQL implements AccountingPersisten
query.setTemporalConstraint(temporalConstraint); query.setTemporalConstraint(temporalConstraint);
query.setFilters(filters); query.setFilters(filters);
query.setContexts(contexts); query.setContexts(contexts);
query.setFieldOfRequesteValues(key); query.setTableFieldToRequest(key);
query.setOrderByField(orderingProperty); query.setOrderByField(orderingProperty);
query.setLimit(limit); query.setLimit(limit);
@ -301,6 +302,31 @@ public class AccountingPersistenceQueryPostgreSQL implements AccountingPersisten
} }
@Override
public SortedSet<String> getSpaceProvidersIds() throws Exception {
Class<? extends AggregatedRecord<?, ?>> aggregatedRecordClass = AggregatedStorageStatusRecord.class;
Connection connection = getConnection(aggregatedRecordClass);
try {
Statement statement = connection.createStatement();
Query query = new Query(aggregatedRecordClass);
query.setTableFieldToRequest(AggregatedStorageStatusRecord.PROVIDER_ID);
String sql = query.getDinstinctValuesQuery();
SortedSet<String> providersIds = new TreeSet<>();
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
String id = resultSet.getString(1);
providersIds.add(id);
}
return providersIds;
}finally {
connection.close();
}
}
@Override @Override
public List<UsageValue> getUsageValueQuotaTotal(List<UsageValue> listUsage) throws Exception { public List<UsageValue> getUsageValueQuotaTotal(List<UsageValue> listUsage) throws Exception {
return null; return null;
@ -312,11 +338,6 @@ public class AccountingPersistenceQueryPostgreSQL implements AccountingPersisten
return null; return null;
} }
@Override
public SortedSet<String> getSpaceProvidersIds() throws Exception {
return null;
}
@Override @Override
public void close() throws Exception { public void close() throws Exception {
// OK // OK

View File

@ -31,7 +31,7 @@ public class Query extends PostgreSQLQuery {
protected List<Filter> filters; protected List<Filter> filters;
protected Set<String> contexts; protected Set<String> contexts;
private String fieldOfRequesteValues; private String tableFieldToRequest;
private String orderByField; private String orderByField;
private Integer limit; private Integer limit;
@ -58,8 +58,8 @@ public class Query extends PostgreSQLQuery {
this.contexts = contexts; this.contexts = contexts;
} }
public void setFieldOfRequesteValues(String fieldOfRequesteValues) { public void setTableFieldToRequest(String tableFieldToRequest) {
this.fieldOfRequesteValues = fieldOfRequesteValues; this.tableFieldToRequest = tableFieldToRequest;
} }
public void setOrderByField(String orderByField) { public void setOrderByField(String orderByField) {
@ -234,7 +234,7 @@ public class Query extends PostgreSQLQuery {
protected void addGroupAndOrderByForOrderByField() { protected void addGroupAndOrderByForOrderByField() {
stringBuffer.append(" GROUP BY "); stringBuffer.append(" GROUP BY ");
String dbField = getTableField(fieldOfRequesteValues); String dbField = getTableField(tableFieldToRequest);
stringBuffer.append(dbField); stringBuffer.append(dbField);
stringBuffer.append(" ORDER BY "); stringBuffer.append(" ORDER BY ");
stringBuffer.append(orderByField); stringBuffer.append(orderByField);
@ -251,7 +251,7 @@ public class Query extends PostgreSQLQuery {
} }
protected void addRequestedField() { protected void addRequestedField() {
String dbField = getTableField(fieldOfRequesteValues); String dbField = getTableField(tableFieldToRequest);
stringBuffer.append(dbField); stringBuffer.append(dbField);
requestedTableField.add(dbField); requestedTableField.add(dbField);
stringBuffer.append(", SUM("); stringBuffer.append(", SUM(");
@ -316,4 +316,17 @@ public class Query extends PostgreSQLQuery {
return stringBuffer.toString(); return stringBuffer.toString();
} }
public String getDinstinctValuesQuery() {
String dbField = getTableField(tableFieldToRequest);
requestedTableField.add(dbField);
newQuery();
stringBuffer.append("DISTINCT ");
stringBuffer.append(dbField);
stringBuffer.append(" FROM ");
stringBuffer.append(recordToDBFields.getTableName());
return stringBuffer.toString();
}
} }

View File

@ -81,7 +81,7 @@ public class QueryTest extends ContextTest {
query.setTemporalConstraint(temporalConstraint); query.setTemporalConstraint(temporalConstraint);
query.setFilters(filters); query.setFilters(filters);
query.setContexts(contexts); query.setContexts(contexts);
query.setFieldOfRequesteValues(ServiceUsageRecord.CALLED_METHOD); query.setTableFieldToRequest(ServiceUsageRecord.CALLED_METHOD);
query.setOrderByField(AccountingPersistenceQuery.getDefaultOrderingProperties(AggregatedServiceUsageRecord.class)); query.setOrderByField(AccountingPersistenceQuery.getDefaultOrderingProperties(AggregatedServiceUsageRecord.class));
ret = query.getNextPossibleValueQuery(); ret = query.getNextPossibleValueQuery();
logger.debug(ret); logger.debug(ret);