Implemented persistence
This commit is contained in:
parent
a6455ab4a9
commit
68738aca6d
|
@ -3,6 +3,7 @@
|
|||
*/
|
||||
package org.gcube.accounting.analytics.persistence.postgresql;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.Statement;
|
||||
|
@ -263,7 +264,46 @@ public class AccountingPersistenceQueryPostgreSQL implements AccountingPersisten
|
|||
|
||||
@Override
|
||||
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
|
||||
|
|
|
@ -34,7 +34,8 @@ public class Query extends PostgreSQLQuery {
|
|||
private String fieldOfRequesteValues;
|
||||
private String orderByField;
|
||||
private Integer limit;
|
||||
|
||||
|
||||
private String recordId;
|
||||
|
||||
public Query(Class<? extends AggregatedRecord<?, ?>> clz) throws Exception {
|
||||
this.clz = clz;
|
||||
|
@ -76,7 +77,11 @@ public class Query extends PostgreSQLQuery {
|
|||
contexts.add(context);
|
||||
}
|
||||
|
||||
|
||||
public void setRecordId(String recordId) {
|
||||
this.recordId = recordId;
|
||||
}
|
||||
|
||||
|
||||
public RecordToDBFields getRecordToDBMapper() {
|
||||
return recordToDBFields;
|
||||
}
|
||||
|
@ -300,4 +305,15 @@ public class Query extends PostgreSQLQuery {
|
|||
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.datamodel.UsageRecord;
|
||||
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.Test;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -204,8 +206,13 @@ public class AccountingPersistenceQueryPostgreSQLTest extends ContextTest {
|
|||
Info info = timeseries.get(c);
|
||||
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));
|
||||
ret = query.getNextPossibleValueQuery();
|
||||
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