diff --git a/src/main/java/it/inaf/oats/vospacebackend/implementation/TransferGeneratorImpl.java b/src/main/java/it/inaf/oats/vospacebackend/implementation/TransferGeneratorImpl.java index f1cd6d7b4b2c2cd1671849a4be5f8165a9881ff1..0c0028ead43dce9fc25787200f4d4acec40eb87e 100644 --- a/src/main/java/it/inaf/oats/vospacebackend/implementation/TransferGeneratorImpl.java +++ b/src/main/java/it/inaf/oats/vospacebackend/implementation/TransferGeneratorImpl.java @@ -30,28 +30,25 @@ import java.net.MalformedURLException; import java.util.List; import java.util.HashMap; import java.util.ArrayList; -import java.sql.*; import ca.nrc.cadc.net.TransientException; import ca.nrc.cadc.util.RsaSignatureGenerator; -import ca.nrc.cadc.util.RsaSignatureVerifier; import ca.nrc.cadc.uws.Job; import ca.nrc.cadc.uws.Parameter; import ca.nrc.cadc.vos.Protocol; import ca.nrc.cadc.vos.VOSURI; import ca.nrc.cadc.vos.View; +import ca.nrc.cadc.vos.server.transfers.TransferGenerator; import it.inaf.oats.vospacebackend.exceptions.ExceptionMessage; import it.inaf.oats.vospacebackend.exceptions.VOSpaceBackendException; +import it.inaf.oats.vospacebackend.utils.ConfigReader; import java.io.ByteArrayInputStream; import java.io.IOException; -import java.sql.SQLException; -import java.util.UUID; + +import java.security.InvalidKeyException; +import java.text.MessageFormat; import java.util.logging.Level; -import javax.sql.DataSource; -import java.io.UnsupportedEncodingException; -import java.security.InvalidKeyException; -import javax.servlet.ServletContext; import javax.xml.bind.DatatypeConverter; import org.apache.log4j.Logger; @@ -60,7 +57,7 @@ import org.apache.log4j.Logger; * * @author bertocco */ -public class TransferGeneratorImpl { +public class TransferGeneratorImpl implements TransferGenerator{ Logger log = Logger.getLogger(TransferGeneratorImpl.class); @@ -82,196 +79,32 @@ public class TransferGeneratorImpl { // Get the node path, file name, vosuri String path = target.getPath(); String fileName = target.getName(); - String vosuri = target.toString(); - /* - HashMap myMetadata; - try { - myMetadata = setPutRequest(unique_file_id_str, vosuri); - - if ((boolean)myMetadata.get("ifSuccessful")) { - log.debug("File Put Request correctly set"); - } else { - log.debug("File Put Request NOT set, return null"); - return null; - } - - - } catch (MalformedURLException e) { - log.debug("Error parsing target"); - return null; - } catch (VOSpaceBackendException ex) { - java.util.logging.Logger.getLogger(TransferGeneratorImpl.class.getName()).log(Level.SEVERE, null, ex); - } catch (SQLException ex) { - java.util.logging.Logger.getLogger(TransferGeneratorImpl.class.getName()).log(Level.SEVERE, null, ex); - } - */ + String vosuri = target.toString(); + String jobID = job.getID(); + try { String parametersToEncode = vosuri; String encodedParams = manageParametersEncoding(parametersToEncode); - result.add(new URL("http://localhost/VOSpaceBackend/service/myResource/" + encodedParams)); + ConfigReader myConf = new ConfigReader("VOSpace.properties"); + String serviceBaseURL= myConf.getProperty("vospacebackend.service.base.url"); + + result.add(new URL(serviceBaseURL + encodedParams + "/" + jobID)); } catch (MalformedURLException e) { log.debug("Error parsing target"); - return null; + return null; + } catch (VOSpaceBackendException ex) { + ExceptionMessage exMsg = new ExceptionMessage(); + log.debug(MessageFormat.format( + exMsg.getMessage("UNABLE_TO_READ_PROPERTIES"), "VOSpace.properties")); + log.debug(MessageFormat.format( + exMsg.getMessage("PROPERTY_NOT_FOUND"), "fs.posix.tmp.storage.root", "VOSpace.properties")); + return null; } return result; } -/* - public HashMap getPutRequests(String stored_f_name) - throws VOSpaceBackendException, SQLException { - - String myOp = "GET_PUT_REQ"; - - String myQuery = "SELECT * FROM vosbackend.RequestedPuts " + - "WHERE storedFileID=?"; - - FileRecord myParams = new FileRecord("", stored_f_name, "", ""); - - myResult = excuteQuery(myOp, myQuery, myParams); - - return myResult; - - } - - - public HashMap setPutRequest(String stored_f_name, String vosuriStr) - throws VOSpaceBackendException, SQLException { - - String myOp = "SET_PUT_REQ"; - String myQuery = "INSERT INTO vosbackend.RequestedPuts " + - "(storedFileID, vosuri)" + - " VALUES (?, ?);"; - log.debug("Received params: " + stored_f_name + " " + vosuriStr ); - FileRecord myParams = new FileRecord("", stored_f_name, "", "", vosuriStr); - - myResult = excuteQuery(myOp, myQuery, myParams); - - return myResult; - - } - - private HashMap excuteQuery(String operation, String query, FileRecord fileToStore) - throws VOSpaceBackendException, SQLException { - PreparedStatement preparedStatementInsert = null; - - Connection dbConnection = null; - - try { - dbConnection = getDBConnection(); - log.debug("Database connection get"); - } catch (SQLException e) { - log.fatal(e); - ExceptionMessage exMsg = new ExceptionMessage(); - throw new VOSpaceBackendException(ExceptionMessage.getMessage("UNABLE_TO_GET_DB_CONNECTION")); - } - - try { - dbConnection.setAutoCommit(false); - log.debug("Autocommit set false"); - } catch (SQLException e) { - log.fatal(e); - ExceptionMessage exMsg = new ExceptionMessage(); - throw new VOSpaceBackendException(ExceptionMessage.getMessage("ERROR_DISABLING_DB_AUTOCOMMIT")); - } - - // Starts JDBC Transaction - PreparedStatement preparedQuery = null; - try { - - HashMap fileToStoreFields = fileToStore.getFileRecord(); - ResultSet rs = null; - int rowCounter = 0; - switch (operation) { - case "GET_PUT_REQ": - preparedQuery = dbConnection.prepareStatement(query); - preparedQuery.setString(1, (String)fileToStoreFields.get("stored_file_name")); - preparedQuery.setString(2, (String)fileToStoreFields.get("vosuri")); - rs = preparedQuery.executeQuery(); - rowCounter = 0; - while (rs.next()) { - rowCounter = rowCounter +1; - myResult.put("stored_file_name", rs.getString("storedFileID")); - myResult.put("vosuri", rs.getString("vosuri")); - } - if (rowCounter == 0) { - log.debug("GET_PUT_REQ: query successfully executed. File " + (String)fileToStoreFields.get("stored_file_name") + " not found"); - myResult.put("ifSuccessful", false); - } else { - log.debug("GET_PUT_REQ: query successfully executed. File " + (String)fileToStoreFields.get("stored_file_name") + " found"); - myResult.put("ifSuccessful", true); - } - break; - case "SET_PUT_REQ": - log.debug("Going to prepare query for SET_PUT_REQ operation"); - preparedQuery = dbConnection.prepareStatement(query); - log.debug("StoredFileName to set in db reqs " + (String)fileToStoreFields.get("stored_file_name")); - log.debug("vosuri to set in db reqs " + (String)fileToStoreFields.get("vosuri")); - preparedQuery.setString(1, (String)fileToStoreFields.get("stored_file_name")); - preparedQuery.setString(2, (String)fileToStoreFields.get("vosuri")); - log.debug("Going to execute query"); - preparedQuery.executeUpdate(); - log.debug("Query executed"); - dbConnection.commit(); - log.debug("Query committed"); - myResult.put("ifSuccessful", true); - break; - - default: - myResult.put("ifSuccessful", false); - ExceptionMessage exMsg = new ExceptionMessage(); - log.fatal(ExceptionMessage.getMessage("DB_OPERATION_NOT_RECOGNIZED")); - throw new VOSpaceBackendException(ExceptionMessage.getMessage("DB_OPERATION_NOT_RECOGNIZED")); - } - - dbConnection.setAutoCommit(true); - - dbConnection.close(); - - } catch (SQLException e) { - - log.error("SQLException exception executing SET file" + e.getMessage()); - dbConnection.rollback(); - - } finally { - - if (preparedQuery != null) { - preparedQuery.close(); - } - - if (dbConnection != null) { - dbConnection.close(); - } - - } - - return myResult; - - } - - - public Connection getDBConnection() throws SQLException { - - String url = "jdbc:mysql://localhost:3306/vosbackend"; - String username = "vosbackadmin"; - String password = "Peper0ne"; - - System.out.println("Connecting database..."); - - Connection connection; - try { - connection = DriverManager.getConnection(url, username, password); - System.out.println("Database connected!"); - } catch (SQLException e) { - throw new IllegalStateException("Cannot connect the database!", e); - - } - - return connection; - - } - */ private String manageParametersEncoding(String toBeSigned) {