// $Id$ // $Log: not supported by cvs2svn $ // Revision 1.3 2007/01/10 23:00:25 timur // implemented srmGetRequestTokens, store request description in database, fixed several srmv2 issues // // Revision 1.2 2007/01/06 00:23:55 timur // merging production branch changes to database layer to improve performance and reduce number of updates // /* * BringOnlineFileRequestStorage.java * * Created on June 17, 2004, 4:49 PM */ package org.dcache.srm.request.sql; import org.springframework.dao.DataAccessException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.concurrent.ScheduledExecutorService; import org.dcache.srm.request.BringOnlineFileRequest; import org.dcache.srm.request.Job; import org.dcache.srm.util.Configuration; /** * * @author timur */ public class BringOnlineFileRequestStorage extends DatabaseFileRequestStorage<BringOnlineFileRequest> { public static final String TABLE_NAME = "bringonlinefilerequests"; private static final String UPDATE_PREFIX = "UPDATE " + TABLE_NAME + " SET "+ "NEXTJOBID=?, " + "CREATIONTIME=?, " + "LIFETIME=?, " + "STATE=?, " + "ERRORMESSAGE=?, " +//5 "SCHEDULERID=?, " + "SCHEDULERTIMESTAMP=?," + "NUMOFRETR=?," + "LASTSTATETRANSITIONTIME=? "; /** Creates a new instance of BringOnlineFileRequestStorage */ public BringOnlineFileRequestStorage(Configuration.DatabaseParameters configuration, ScheduledExecutorService executor) throws DataAccessException { super(configuration, executor); } @Override protected BringOnlineFileRequest getFileRequest(Connection _con, long ID, Long NEXTJOBID, long CREATIONTIME, long LIFETIME, int STATE, String SCHEDULERID, long SCHEDULER_TIMESTAMP, int NUMOFRETR, long LASTSTATETRANSITIONTIME, long REQUESTID, Long CREDENTIALID, String STATUSCODE, ResultSet set, int next_index) throws SQLException { String SURL = set.getString(next_index++); String FILEID = set.getString(next_index++); String PINID = set.getString(next_index); Job.JobHistory[] jobHistoryArray = getJobHistory(ID,_con); return new BringOnlineFileRequest( ID, NEXTJOBID , CREATIONTIME, LIFETIME, STATE, SCHEDULERID, SCHEDULER_TIMESTAMP, NUMOFRETR, LASTSTATETRANSITIONTIME, jobHistoryArray, REQUESTID, STATUSCODE, SURL, FILEID, PINID); } @Override public String getTableName() { return TABLE_NAME; } private PreparedStatement getStatement(Connection connection, String query, Job fr) throws SQLException { BringOnlineFileRequest gfr = (BringOnlineFileRequest)fr; return getPreparedStatement(connection, query, gfr.getNextJobId(), gfr.getCreationTime(), gfr.getLifetime(), gfr.getState().getStateId(), gfr.latestHistoryEvent(),//5 gfr.getSchedulerId(), gfr.getSchedulerTimeStamp(), 0, // num of retries gfr.getLastStateTransitionTime(), gfr.getRequestId(),//10 gfr.getStatusCodeString(), gfr.getSurlString(), gfr.getFileId(), gfr.getPinId(), gfr.getId()); } private static final String UPDATE_REQUEST_SQL = UPDATE_PREFIX + ", REQUESTID=?" + ", STATUSCODE=?" + ", SURL=?" + ", FILEID=?" + ", PINID=? WHERE ID=?"; @Override public PreparedStatement getUpdateStatement(Connection connection, Job fr) throws SQLException { return getStatement(connection,UPDATE_REQUEST_SQL, fr); } private static final String INSERT_SQL = "INSERT INTO "+ TABLE_NAME+ "( " + "ID ,"+ "NEXTJOBID ,"+ "CREATIONTIME ,"+ "LIFETIME ,"+ "STATE ,"+ //5 "ERRORMESSAGE ,"+ "SCHEDULERID ,"+ "SCHEDULERTIMESTAMP ,"+ "NUMOFRETR ,"+ "LASTSTATETRANSITIONTIME,"+ //DATABSE FILE REQUEST STORAGE "REQUESTID , " + "STATUSCODE ,"+ // BRING ONLINE FILE REQUEST "SURL ,"+ //15 "FILEID ,"+ "PINID ) " + "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; @Override public PreparedStatement getCreateStatement(Connection connection, Job fr) throws SQLException { BringOnlineFileRequest gfr = (BringOnlineFileRequest)fr; return getPreparedStatement(connection, INSERT_SQL, gfr.getId(), gfr.getNextJobId(), gfr.getCreationTime(), gfr.getLifetime(), gfr.getState().getStateId(),//5 gfr.latestHistoryEvent(), gfr.getSchedulerId(), gfr.getSchedulerTimeStamp(), 0, // num of retries gfr.getLastStateTransitionTime(), //DATABSE FILE REQUEST STORAGE gfr.getRequestId(), gfr.getStatusCodeString(), // BRING ONLINE FILE REQUEST gfr.getSurlString(), gfr.getFileId(),//15 gfr.getPinId()); } }