package com.chickling.util;
import com.chickling.sqlite.ConnectionManager;
import com.chickling.models.MessageFactory;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* Created by jw6v on 2017/1/10.
*/
public class TemplateCRUDUtils {
private final static String InsertSQLTemplate="INSERT INTO `main`.`SQLtemplate` (`JobID`,`URLKey`,`SQLKey`,`DefaultValue`) VALUES (?,?,?,?);";
private final static String DeleteSQLTemplate="DELETE FROM `main`.`SQLtemplate` WHERE `JobID`=?;";
private final static String GetSQLTemplate="SELECT * FROM `main`.`SQLtemplate` WHERE `JobID`=?;";
private static Logger log = LogManager.getLogger(TemplateCRUDUtils.class);
public synchronized static boolean addSqlTemplate(int jobID, ArrayList<Map<String,String>> templateMaps){
PreparedStatement stat = null;
String QuerySQL="";
try {
stat = ConnectionManager.getInstance().getConnection().prepareStatement(InsertSQLTemplate);
for(Map templateMap: templateMaps) {
stat.setInt(1, jobID);
stat.setString(2, (String) templateMap.get("URLKey"));//userID
stat.setString(3, (String) templateMap.get("SQLKey"));
stat.setString(4, (String) templateMap.get("DefaultValue"));
stat.executeUpdate();
QuerySQL = stat.toString();
}
stat.close();
log.info( "Status:success; TimeStamp:"+TimeUtil.getCurrentTime()+"; JobID:"+jobID);
return true;
}catch (SQLException sqle){
log.error(sqle.toString()+";SQL:"+QuerySQL);
return false;
}
}
public synchronized static boolean deleteSqlTemplate(int jobID){
PreparedStatement stat = null;
String QuerySQL = DeleteSQLTemplate;
try {
stat = ConnectionManager.getInstance().getConnection().prepareStatement(QuerySQL);
QuerySQL=stat.toString();
stat.setInt(1, jobID);
stat.execute();
stat.close();
log.info( "Status:success; TimeStamp:"+TimeUtil.getCurrentTime()+"; JobID:"+jobID);
return true;
}catch(SQLException sqle){
log.error(sqle.toString()+";SQL:"+QuerySQL);
return false;
}
}
public synchronized static boolean updateSqlTemplate(int jobID, ArrayList<Map<String,String>> templateMap){
return(deleteSqlTemplate(jobID))&& (addSqlTemplate(jobID, templateMap));
}
public synchronized static List<Map> readSqlTemplate(int jobID){
String QuerySQL = "";
PreparedStatement stat = null;
ResultSet rs = null;
try {
QuerySQL = GetSQLTemplate;
stat = ConnectionManager.getInstance().getConnection().prepareStatement(QuerySQL);
stat.setInt(1, jobID);
QuerySQL=stat.toString();
rs = stat.executeQuery();
List<Map> rtn = MessageFactory.rtnTemplateMessage(rs);
stat.close();
return rtn;
}
catch(SQLException sqle){
log.error(sqle.toString()+";SQL:"+QuerySQL);
return new ArrayList<>();
}
}
}