Implemented persistence
This commit is contained in:
parent
a6455ab4a9
commit
68738aca6d
|
@ -3,6 +3,7 @@
|
||||||
*/
|
*/
|
||||||
package org.gcube.accounting.analytics.persistence.postgresql;
|
package org.gcube.accounting.analytics.persistence.postgresql;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.Statement;
|
import java.sql.Statement;
|
||||||
|
@ -263,7 +264,46 @@ public class AccountingPersistenceQueryPostgreSQL implements AccountingPersisten
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Record getRecord(String recordId, String type) throws Exception {
|
public Record getRecord(String recordId, String type) throws Exception {
|
||||||
return null;
|
Class<? extends AggregatedRecord<?, ?>> aggregatedRecordClass = RecordUtility.getAggregatedRecordClass(type);
|
||||||
|
Connection connection = getConnection(aggregatedRecordClass);
|
||||||
|
try {
|
||||||
|
Statement statement = connection.createStatement();
|
||||||
|
|
||||||
|
Query query = new Query(aggregatedRecordClass);
|
||||||
|
query.setRecordId("fa573711-ceb6-44ba-9c83-bd47e0915b80");
|
||||||
|
String sql = query.getRecordQuery();
|
||||||
|
|
||||||
|
RecordToDBFields recordToDBMapper = query.getRecordToDBMapper();
|
||||||
|
|
||||||
|
ResultSet resultSet = statement.executeQuery(sql);
|
||||||
|
resultSet.next();
|
||||||
|
|
||||||
|
AggregatedRecord<?, ?> instance = aggregatedRecordClass.newInstance();
|
||||||
|
Set<String> requiredFields = instance.getRequiredFields();
|
||||||
|
|
||||||
|
for(String recordField : requiredFields) {
|
||||||
|
String tableField = recordToDBMapper.getTableField(recordField);
|
||||||
|
Serializable serializable;
|
||||||
|
switch (recordField) {
|
||||||
|
case AggregatedRecord.START_TIME: case AggregatedRecord.END_TIME: case AggregatedRecord.CREATION_TIME:
|
||||||
|
OffsetDateTime offsetDateTime = resultSet.getObject(tableField, OffsetDateTime.class);
|
||||||
|
Calendar calendar = getCalendar(offsetDateTime);
|
||||||
|
serializable = calendar.getTimeInMillis();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
serializable = resultSet.getObject(tableField).toString();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
instance.setResourceProperty(recordField, serializable);
|
||||||
|
}
|
||||||
|
|
||||||
|
return instance;
|
||||||
|
|
||||||
|
}finally {
|
||||||
|
connection.close();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -34,7 +34,8 @@ public class Query extends PostgreSQLQuery {
|
||||||
private String fieldOfRequesteValues;
|
private String fieldOfRequesteValues;
|
||||||
private String orderByField;
|
private String orderByField;
|
||||||
private Integer limit;
|
private Integer limit;
|
||||||
|
|
||||||
|
private String recordId;
|
||||||
|
|
||||||
public Query(Class<? extends AggregatedRecord<?, ?>> clz) throws Exception {
|
public Query(Class<? extends AggregatedRecord<?, ?>> clz) throws Exception {
|
||||||
this.clz = clz;
|
this.clz = clz;
|
||||||
|
@ -76,7 +77,11 @@ public class Query extends PostgreSQLQuery {
|
||||||
contexts.add(context);
|
contexts.add(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setRecordId(String recordId) {
|
||||||
|
this.recordId = recordId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public RecordToDBFields getRecordToDBMapper() {
|
public RecordToDBFields getRecordToDBMapper() {
|
||||||
return recordToDBFields;
|
return recordToDBFields;
|
||||||
}
|
}
|
||||||
|
@ -300,4 +305,15 @@ public class Query extends PostgreSQLQuery {
|
||||||
return stringBuffer.toString();
|
return stringBuffer.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getRecordQuery(){
|
||||||
|
newQuery();
|
||||||
|
stringBuffer.append("* ");
|
||||||
|
stringBuffer.append(" FROM ");
|
||||||
|
stringBuffer.append(recordToDBFields.getTableName());
|
||||||
|
stringBuffer.append(" WHERE ");
|
||||||
|
stringBuffer.append(" id=");
|
||||||
|
appendString(recordId);
|
||||||
|
return stringBuffer.toString();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,8 @@ import org.gcube.accounting.analytics.persistence.AccountingPersistenceBackendQu
|
||||||
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQuery;
|
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQuery;
|
||||||
import org.gcube.accounting.datamodel.UsageRecord;
|
import org.gcube.accounting.datamodel.UsageRecord;
|
||||||
import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord;
|
import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord;
|
||||||
|
import org.gcube.accounting.utility.postgresql.RecordToDBMapping;
|
||||||
|
import org.gcube.documentstore.records.Record;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -204,8 +206,13 @@ public class AccountingPersistenceQueryPostgreSQLTest extends ContextTest {
|
||||||
Info info = timeseries.get(c);
|
Info info = timeseries.get(c);
|
||||||
logger.debug("{}", info);
|
logger.debug("{}", info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetRecord() throws Exception {
|
||||||
|
String type = RecordToDBMapping.getRecordTypeByClass(AggregatedServiceUsageRecord.class);
|
||||||
|
Record record = accountingPersistenceQueryPostgreSQL.getRecord("fa573711-ceb6-44ba-9c83-bd47e0915b80", type);
|
||||||
|
logger.debug("{}", record);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -85,7 +85,15 @@ public class QueryTest extends ContextTest {
|
||||||
query.setOrderByField(AccountingPersistenceQuery.getDefaultOrderingProperties(AggregatedServiceUsageRecord.class));
|
query.setOrderByField(AccountingPersistenceQuery.getDefaultOrderingProperties(AggregatedServiceUsageRecord.class));
|
||||||
ret = query.getNextPossibleValueQuery();
|
ret = query.getNextPossibleValueQuery();
|
||||||
logger.debug(ret);
|
logger.debug(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetRecordQuery() throws Exception {
|
||||||
|
Query query = new Query(AggregatedServiceUsageRecord.class);
|
||||||
|
query.setRecordId("fa573711-ceb6-44ba-9c83-bd47e0915b80");
|
||||||
|
String ret = query.getRecordQuery();
|
||||||
|
logger.debug(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue