diff --git a/src/main/java/org/gcube/dataaccess/databases/utils/ConnectionManager.java b/src/main/java/org/gcube/dataaccess/databases/utils/ConnectionManager.java index f1dcb07..ad10f84 100644 --- a/src/main/java/org/gcube/dataaccess/databases/utils/ConnectionManager.java +++ b/src/main/java/org/gcube/dataaccess/databases/utils/ConnectionManager.java @@ -3,6 +3,12 @@ package org.gcube.dataaccess.databases.utils; import java.io.ByteArrayInputStream; import java.io.IOException; import java.net.MalformedURLException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; import javax.xml.parsers.DocumentBuilderFactory; @@ -118,6 +124,56 @@ public class ConnectionManager { } + /** Method that execute a query */ + public List executeQueryJDBC(String query, Connection conn) + throws Exception { + + List result = null; + + + // Get a statement from the connection + Statement stmt = conn.createStatement(); + + // Execute the query + ResultSet rs = stmt.executeQuery(query); + + //get columns + List rows = new ArrayList(); + while (rs.next()) { + LinkedHashMap map = new LinkedHashMap(); + int colNum = rs.getMetaData().getColumnCount(); + + for (int i = 1; i < colNum + 1; i++) { + String columnName = rs.getMetaData().getColumnLabel(i); + // System.out.println("column Name: "+columnName); + Object columnValue = rs.getObject(i); + // System.out.println("value: "+columnValue); + int j = 1; + String newcolumnName = columnName; + //rename a column if the same name is already present + while (map.get(newcolumnName) != null) { + newcolumnName = columnName + "_" + j; + j++; + } + map.put(newcolumnName, columnValue); + } + rows.add(map); + } + + result = rows; + + if (result == null || result.size() == 0) { + AnalysisLogger.getLogger().debug( + "ConnectionManager->Error: Result not available"); + throw new Exception("Result not available"); + } + + + stmt.close(); + // conn.close(); + return result; + } + /** Method that execute a query */ public List executeQuery(String query, SessionFactory DBSessionFactory) throws Exception { @@ -175,7 +231,6 @@ public class ConnectionManager { "In ConnectionManager-> executing query: " + query); qr = ss.createSQLQuery(query); - qr.setResultTransformer(AliasToEntityOrderedMapResultTransformer.INSTANCE); @@ -211,7 +266,7 @@ public class ConnectionManager { } catch (Exception e) { - e.printStackTrace(); +// e.printStackTrace(); // System.out.println(String.format("Error while executing query: %1$s %2$s", // query, e.getMessage())); @@ -295,26 +350,27 @@ public class ConnectionManager { return obj; } - -// //to cancel the execution of the current query -// public void removeQueryExecution(SessionFactory DBSessionFactory) throws Exception{ -// -// try{ -// -// Session ss = DBSessionFactory.getCurrentSession(); -// -// ss.beginTransaction(); -// -// ss.cancelQuery(); -// -// ss.getTransaction().commit(); -// -// } -// catch (Exception e) { -// throw e; -// } -// -// } + + // //to cancel the execution of the current query + // public void removeQueryExecution(SessionFactory DBSessionFactory) throws + // Exception{ + // + // try{ + // + // Session ss = DBSessionFactory.getCurrentSession(); + // + // ss.beginTransaction(); + // + // ss.cancelQuery(); + // + // ss.getTransaction().commit(); + // + // } + // catch (Exception e) { + // throw e; + // } + // + // } // /** Method that creates the connection */ // public SessionFactory createConnection(AlgorithmConfiguration config) { diff --git a/src/main/java/org/gcube/dataaccess/databases/utils/DatabaseManagement.java b/src/main/java/org/gcube/dataaccess/databases/utils/DatabaseManagement.java index 21289aa..4d60777 100644 --- a/src/main/java/org/gcube/dataaccess/databases/utils/DatabaseManagement.java +++ b/src/main/java/org/gcube/dataaccess/databases/utils/DatabaseManagement.java @@ -5,6 +5,7 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; +import java.sql.Connection; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; @@ -327,13 +328,13 @@ public class DatabaseManagement { */ // method that allows to submit a query - public List submitQuery(String query, SessionFactory session, + public List submitQuery(String query, Connection conn, String pathFile) throws Exception { List results = new ArrayList(); - results = connection.executeQuery(query, session); - + results = connection.executeQueryJDBC(query, conn); + if (results != null) { AnalysisLogger.getLogger().debug( "DatabaseManagement-> Query result retrieved"); @@ -874,9 +875,9 @@ public class DatabaseManagement { } } - // // print check - // AnalysisLogger.getLogger().debug( - // "DatabaseManagement->HEADERS: " + header); +// // print check +// AnalysisLogger.getLogger().debug( +// "DatabaseManagement->HEADERS: " + header); // add headers mapResult.put("HEADERS", header); @@ -895,7 +896,7 @@ public class DatabaseManagement { ArrayList listvalues = new ArrayList( ((LinkedHashMap) element).values()); - // // print check +// // print check // AnalysisLogger.getLogger().debug( // "DatabaseManagement->values: " + listvalues); @@ -963,6 +964,9 @@ public class DatabaseManagement { // AnalysisLogger.getLogger().debug( // "writing the value: " + RowString + " key: " // + String.valueOf(i)); + +// AnalysisLogger.getLogger().debug( +// "row: " + RowString); // mapResult.put(Integer.valueOf(i), RowString); mapResult.put(String.valueOf(i), RowString);