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); }