package manager;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import util.ApplicationConstants;
import util.DataSourceFactory;
import util.Messenger;
import util.SqlRequestThread;
public class SQLRequestManager {
private final Log logger = LogFactory.getLog(SQLRequestManager.class);
private SqlRequestThread sqlreqTH ;
public void process(String data) {
// HANDLE SQL REQUEST ----------
logger.debug("Handling SQL request...");
String[] values = data.split("##");
System.out.println(data);
DriverManagerDataSource ds = DataSourceFactory.createDS(values[3],
values[0], values[1], Integer.decode(values[2]));
String request = values[4];
JdbcTemplate t = new JdbcTemplate(ds);
try {
Messenger.sendMessage(ApplicationConstants.SQL_INFO, "Executing query...");
} catch (Exception e1) {
e1.printStackTrace();
logger.error(e1.getMessage());
}
// -----------------------------
// USE THE THREAD
sqlreqTH = new SqlRequestThread(request,t);
sqlreqTH.start();
logger.debug("Starting thread for query : "+request);
// ----------------------------
}
@SuppressWarnings("deprecation")
public void stopThread(){
if(sqlreqTH != null){
// The only way i found to be sure to kill the process
// I know it is the best solution ever...&
sqlreqTH.stop();
logger.debug("STOPPING THREAD : "+sqlreqTH.isInterrupted());
sqlreqTH=null;
}
try {
Messenger.sendMessage(ApplicationConstants.SQL_INFO, "Query canceled !");
} catch (Exception e1) {
e1.printStackTrace();
logger.error(e1.getMessage());
}
}
}