diff --git a/pom.xml b/pom.xml
index 067ea2e..b626aed 100644
--- a/pom.xml
+++ b/pom.xml
@@ -58,6 +58,11 @@
42.2.19
+
+ org.gcube.accounting
+ accounting-lib
+ test
+
junit
junit
@@ -69,11 +74,6 @@
logback-classic
test
-
- org.gcube.accounting
- accounting-lib
- test
-
diff --git a/src/main/java/org/gcube/documentstore/persistence/PersistencePostgreSQL.java b/src/main/java/org/gcube/documentstore/persistence/PersistencePostgreSQL.java
index 1d2e390..1b67f33 100644
--- a/src/main/java/org/gcube/documentstore/persistence/PersistencePostgreSQL.java
+++ b/src/main/java/org/gcube/documentstore/persistence/PersistencePostgreSQL.java
@@ -3,14 +3,10 @@
*/
package org.gcube.documentstore.persistence;
-import java.io.Serializable;
import java.sql.Statement;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
import java.util.Map;
-import java.util.SortedSet;
-import java.util.TreeSet;
+import org.gcube.accounting.utility.postgresql.PostgreSQLQuery;
import org.gcube.accounting.utility.postgresql.RecordToDBMapping;
import org.gcube.documentstore.records.AggregatedRecord;
import org.gcube.documentstore.records.Record;
@@ -25,12 +21,6 @@ public class PersistencePostgreSQL extends PersistenceBackend {
protected static final Logger logger = LoggerFactory.getLogger(PersistencePostgreSQL.class);
- public static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss.SSS Z";
-
- public static final String URL_PROPERTY_KEY = "URL";
- public static final String USERNAME_PROPERTY_KEY = "username";
- public static final String PASSWORD_PROPERTY_KEY = "password";
-
protected StatementMap statementMap;
@Override
@@ -54,92 +44,11 @@ public class PersistencePostgreSQL extends PersistenceBackend {
}
- protected void appendString(StringBuffer values, String string) {
- values.append("'");
- values.append(string);
- values.append("'");
- }
-
- protected void appendValue(StringBuffer values, Serializable serializable) {
- if(serializable instanceof Number) {
- values.append(serializable.toString());
- return;
- }
-
- if(serializable instanceof Calendar) {
- Calendar calendar = (Calendar) serializable;
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATETIME_PATTERN);
- String date = simpleDateFormat.format(calendar.getTime());
- appendString(values, date);
- return;
- }
-
- if(serializable instanceof Enum) {
- Enum> e = (Enum>) serializable;
- appendString(values, e.name());
- return;
- }
-
- // String, URI etc
- appendString(values, serializable.toString());
- }
-
- protected void appendKey(StringBuffer sql, String key) {
- int lenght = key.length();
- boolean lastLowerCase = true;
- for (int i=0; i keys = new TreeSet<>(record.getRequiredFields());
- StringBuffer values = new StringBuffer();
- for(String key : keys) {
- if(first) {
- sql.append(" (");
- values.append(" (");
- first = false;
- }else {
- sql.append(",");
- values.append(",");
- }
- appendKey(sql, key);
- switch (key) {
- case "creationTime": case "startTime": case "endTime":
- Calendar calendar = Calendar.getInstance();
- calendar.setTimeInMillis((long) record.getResourceProperty(key));
- appendValue(values, calendar);
- break;
-
- default:
- appendValue(values, record.getResourceProperty(key));
- break;
- }
- }
- sql.append(") VALUES");
- sql.append(values);
- sql.append(");");
- return sql.toString();
- }
-
@Override
protected void reallyAccount(Record record) throws Exception {
Statement statement = statementMap.getStatement(record);
- String sqlCommand = getSQLInsertCommand(record);
+ PostgreSQLQuery postgreSQLQuery = new PostgreSQLQuery();
+ String sqlCommand = postgreSQLQuery.getSQLInsertCommand(record);
statement.executeUpdate(sqlCommand);
}
diff --git a/src/test/java/org/gcube/documentstore/persistence/PersistencePostgreSQLTest.java b/src/test/java/org/gcube/documentstore/persistence/PersistencePostgreSQLTest.java
index 154f946..92028d3 100644
--- a/src/test/java/org/gcube/documentstore/persistence/PersistencePostgreSQLTest.java
+++ b/src/test/java/org/gcube/documentstore/persistence/PersistencePostgreSQLTest.java
@@ -19,6 +19,7 @@ import org.gcube.accounting.datamodel.usagerecords.PortletUsageRecord;
import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord;
import org.gcube.accounting.datamodel.usagerecords.StorageStatusRecord;
import org.gcube.accounting.datamodel.usagerecords.StorageUsageRecord;
+import org.gcube.accounting.utility.postgresql.PostgreSQLQuery;
import org.gcube.common.authorization.client.exceptions.ObjectNotFound;
import org.junit.Assert;
import org.junit.Test;
@@ -201,26 +202,26 @@ public class PersistencePostgreSQLTest extends ContextTest {
@Test
public void testSQLStatementString() throws Exception {
- PersistencePostgreSQL persistencePostgreSQL = new PersistencePostgreSQL();
UsageRecord usageRecord = getTestAggregatedJobUsageRecord();
- String sql = persistencePostgreSQL.getSQLInsertCommand(usageRecord);
+ PostgreSQLQuery postgreSQLQuery = new PostgreSQLQuery();
+ String sql = postgreSQLQuery.getSQLInsertCommand(usageRecord);
logger.debug(sql);
usageRecord = getTestAggregatedPortletUsageRecord();
- sql = persistencePostgreSQL.getSQLInsertCommand(usageRecord);
+ sql = postgreSQLQuery.getSQLInsertCommand(usageRecord);
logger.debug(sql);
usageRecord = getTestAggregatedServiceUsageRecord();
- sql = persistencePostgreSQL.getSQLInsertCommand(usageRecord);
+ sql = postgreSQLQuery.getSQLInsertCommand(usageRecord);
logger.debug(sql);
usageRecord = getTestAggregatedStorageStatusRecord();
- sql = persistencePostgreSQL.getSQLInsertCommand(usageRecord);
+ sql = postgreSQLQuery.getSQLInsertCommand(usageRecord);
logger.debug(sql);
usageRecord = getTestAggregatedStorageUsageRecord();
- sql = persistencePostgreSQL.getSQLInsertCommand(usageRecord);
+ sql = postgreSQLQuery.getSQLInsertCommand(usageRecord);
logger.debug(sql);
}