You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3245 lines
104 KiB
3245 lines
104 KiB
/****************************************************************************** |
|
* |
|
* Copyright: Intellectual Property of Four Elements Capital Pte Ltd, Singapore. |
|
* All rights reserved. |
|
* |
|
******************************************************************************/ |
|
|
|
package com.fourelementscapital.db.mariadb; |
|
|
|
import java.sql.Connection; |
|
import java.sql.PreparedStatement; |
|
import java.sql.ResultSet; |
|
import java.sql.ResultSetMetaData; |
|
import java.sql.SQLException; |
|
import java.sql.Statement; |
|
import java.sql.Timestamp; |
|
import java.text.SimpleDateFormat; |
|
import java.util.ArrayList; |
|
import java.util.Arrays; |
|
import java.util.Collection; |
|
import java.util.Date; |
|
import java.util.HashMap; |
|
import java.util.Iterator; |
|
import java.util.List; |
|
import java.util.Map; |
|
import java.util.TreeMap; |
|
import java.util.Vector; |
|
|
|
import org.apache.logging.log4j.Logger; |
|
import org.apache.logging.log4j.LogManager; |
|
|
|
import com.fourelementscapital.db.GeneralUtilDB; |
|
import com.fourelementscapital.db.SchedulerDB; |
|
import com.fourelementscapital.db.vo.SchedulerTrigger; |
|
|
|
/** |
|
* Scheduler MariaDB DAO implementation |
|
*/ |
|
public class SchedulerDBMariaDB extends SchedulerDB { |
|
|
|
|
|
private Logger log=LogManager.getLogger(SchedulerDBMariaDB.class.getName()); |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List listScheduler() throws Exception { |
|
|
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("Select a.*,b.folder_name,c.tagname as owner_tag,(select CONCAT(GROUP_CONCAT(cast(tags.tagname as CHAR(8000)) order by tags.tagname SEPARATOR ', '), ', ') from scheduler_tags as st left outer join tags on tags.id=st.tag_id WHERE st.scheduler_id=a.id ) as stags "); |
|
sb.append("FROM scheduler as a "); |
|
sb.append("LEFT join scheduler_folder as b on a.folder_id=b.id "); |
|
sb.append("left join tags as c on c.id=a.owner_tag_id "); |
|
sb.append("WHERE a.deleted IS NULL OR a.deleted<>1 "); |
|
sb.append("ORDER by a.name "); |
|
|
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
|
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
|
|
ResultSetMetaData metaData = rs.getMetaData(); |
|
int colCount = metaData.getColumnCount(); |
|
while(rs.next()){ |
|
//rtn.add(new BasicRowProcessor().toMap(rs)); |
|
rtn.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List listSchedulerTaskUIDJoin() throws Exception { |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("Select a.*,b.folder_name,c.tagname as owner_tag,(select CONCAT(GROUP_CONCAT(cast(tags.tagname as CHAR(8000)) order by tags.tagname SEPARATOR ', '), ', ') from scheduler_tags as st left outer join tags on tags.id=st.tag_id where st.scheduler_id=a.id ) as stags "); |
|
sb.append("from scheduler as a "); |
|
sb.append("left outer join scheduler_folder as b on a.folder_id=b.id AND a.taskuid = b.taskuid "); |
|
sb.append("left outer join tags as c on c.id=a.owner_tag_id "); |
|
sb.append("WHERE a.deleted IS NULL OR a.deleted<>1 "); |
|
sb.append("order by a.name "); |
|
|
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
|
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
//rtn.add(new BasicRowProcessor().toMap(rs)); |
|
rtn.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
|
|
rs.close(); |
|
ps.close(); |
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void fixSchBrokenFolders() throws Exception { |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("update scheduler set folder_id=0 where id in ( select id from ( "); |
|
sb.append("select a.id from scheduler as a "); |
|
sb.append("left outer join scheduler_folder as f on a.folder_id = f.id and a.taskuid = f.taskuid "); |
|
sb.append("where f.folder_name is null and a.folder_id >0 ) temp_table ) "); |
|
|
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
|
|
ps.executeUpdate(); |
|
ps.close(); |
|
|
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List listScheduler(List<String> themetags) throws Exception { |
|
String thms=""; |
|
for(String tg:themetags){ |
|
thms+=(thms.equals(""))?"'thm-"+tg+"'":",'thm-"+tg+"'"; |
|
} |
|
|
|
log.debug("thms:"+thms); |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("Select a.*,b.folder_name,c.tagname as owner_tag,(select CONCAT(GROUP_CONCAT(cast(tags.tagname as CHAR(8000)) order by tags.tagname SEPARATOR ', '), ', ') from scheduler_tags as st left outer join tags on tags.id=st.tag_id where st.scheduler_id=a.id ) as stags "); |
|
sb.append("from scheduler as a "); |
|
sb.append("left outer join scheduler_folder as b on a.folder_id=b.id AND a.taskuid = b.taskuid "); |
|
sb.append("left outer join tags as c on c.id=a.owner_tag_id "); |
|
sb.append("WHERE (a.deleted IS NULL OR a.deleted<>1 ) "); |
|
if(!thms.equals("")){ |
|
sb.append("AND a.id IN(select scheduler_id from scheduler_tags as a1 left outer join tags as a2 on a1.tag_id = a2.id where a2.tagname in ("+thms+")) "); |
|
}else{ |
|
sb.append("AND a.id=0 "); |
|
} |
|
sb.append("order by a.name "); |
|
|
|
log.debug("query:"+sb.toString()); |
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
|
|
//ps.setString(1, following_user); |
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
//rtn.add(new BasicRowProcessor().toMap(rs)); |
|
rtn.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List listTrashedScheduler() throws Exception { |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("SELECT a.*,IFNULL(TIMESTAMPDIFF(day,date(a.deletedon),now()),7) as deleteddays,b.folder_name,(select CONCAT(GROUP_CONCAT(cast(tags.tagname as CHAR(8000)) order by tags.tagname SEPARATOR ', '), ', ') from scheduler_tags as st left outer join tags on tags.id=st.tag_id WHERE st.scheduler_id=a.id ) as stags "); |
|
sb.append("FROM scheduler as a "); |
|
sb.append("LEFT outer join scheduler_folder as b on a.folder_id=b.id "); |
|
sb.append("WHERE a.deleted=1 "); |
|
sb.append("ORDER by a.deletedon DESC "); |
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
|
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
//Map d=new BasicRowProcessor().toMap(rs); |
|
Map d = GeneralUtilDB.resultsetToMap(rs); |
|
|
|
Object dd=d.get("deletedon"); |
|
if(dd!=null){ |
|
SimpleDateFormat sdf=new SimpleDateFormat("dd-MMM-yyyy HH:mm"); |
|
d.put("deletedon_format", sdf.format((Date)dd)); |
|
} |
|
rtn.add(d); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List searchScheduler(String ids) throws Exception { |
|
|
|
Vector rtn=new Vector(); |
|
|
|
String query="Select a.*,b.folder_name from scheduler as a left outer join scheduler_folder as b on a.folder_id=b.id "; |
|
query+=" WHERE a.id IN("+ids+") "; |
|
query+=" AND (a.deleted IS NULL OR a.deleted<>1) "; //added by rams to support trash bin feature. |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ResultSet rs=ps.executeQuery(); |
|
while(rs.next()){ |
|
rtn.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public boolean isDeleted(int id) throws Exception { |
|
|
|
boolean result = false; |
|
String query="Select deleted from scheduler WHERE id="+id; |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ResultSet rs=ps.executeQuery(); |
|
while(rs.next()){ |
|
if (rs.getInt("deleted") == 1) { |
|
result = true; |
|
} |
|
} |
|
rs.close(); |
|
ps.close(); |
|
return result; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List listAllTasksByUID(String taskuid) throws Exception { |
|
|
|
String query="SELECT a.*,b.folder_name FROM scheduler AS a LEFT OUTER JOIN scheduler_folder AS b ON a.folder_id=b.id "; |
|
query+=" WHERE a.taskuid=? "; |
|
query+=" AND (a.deleted IS NULL OR a.deleted<>1) "; //added by rams to support trash bin feature. |
|
query+=" ORDER BY a.name "; |
|
|
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ps.setString(1, taskuid); |
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
//rtn.add(new BasicRowProcessor().toMap(rs)); |
|
rtn.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Map listSchedulerItem(long scheduler_id) throws Exception { |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("SELECT a.*,b.folder_name FROM scheduler AS a LEFT OUTER JOIN scheduler_folder AS b ON a.folder_id=b.id where a.id=? ORDER BY a.name"); |
|
ps.setLong(1, scheduler_id); |
|
ResultSet rs=ps.executeQuery(); |
|
Map rtn=null; |
|
if(rs.next()){ |
|
//rtn=new BasicRowProcessor().toMap(rs); |
|
rtn = GeneralUtilDB.resultsetToMap(rs); |
|
} |
|
|
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List folderTasks(int folder_id) throws Exception { |
|
|
|
String query="Select * from scheduler WHERE folder_id=? "; |
|
query+=" AND (deleted IS NULL OR deleted<>1) "; |
|
|
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ps.setInt(1, folder_id); |
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
//rtn.add(new BasicRowProcessor().toMap(rs)); |
|
rtn.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List searchScheduler(String keyword, int tagid) throws Exception { |
|
|
|
Vector rtn=new Vector(); |
|
String query=null; |
|
if(keyword!=null && !keyword.equals("") && tagid>0) { |
|
query="Select a.*,b.folder_name from scheduler as a left outer join scheduler_folder as b on a.folder_id=b.id WHERE a.name LIKE '%"+keyword+"%' AND a.id IN(select scheduler_id from scheduler_tags WHERE tag_id="+tagid+") AND (a.deleted IS NULL OR a.deleted<>1)"; |
|
}else if (keyword!=null && !keyword.equals("")){ |
|
query="Select a.*,b.folder_name from scheduler as a left outer join scheduler_folder as b on a.folder_id=b.id WHERE a.name LIKE '%"+keyword+"%' AND (a.deleted IS NULL OR a.deleted<>1)"; |
|
}else if(tagid>0) { |
|
query="Select a.*,b.folder_name from scheduler as a left outer join scheduler_folder as b on a.folder_id=b.id WHERE a.id IN(select scheduler_id from scheduler_tags WHERE tag_id="+tagid+") AND (a.deleted IS NULL OR a.deleted<>1)"; |
|
}else{ |
|
query="Select a.*,b.folder_name from scheduler as a left outer join scheduler_folder as b on a.folder_id=b.id WHERE a.deleted IS NULL OR a.deleted<>1 "; |
|
} |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ResultSet rs=ps.executeQuery(); |
|
while(rs.next()){ |
|
//rtn.add(new BasicRowProcessor().toMap(rs)); |
|
rtn.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
|
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public boolean isNameExisting(String name,int scheduler_id) throws Exception { |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("Select * FROM scheduler where name=? AND id<>?"); |
|
ps.setString(1, name); |
|
ps.setInt(2, scheduler_id); |
|
|
|
ResultSet rs=ps.executeQuery(); |
|
|
|
boolean rtn=false; |
|
if(rs.next()){ |
|
rtn =true; |
|
} |
|
rs.close(); |
|
ps.close(); |
|
return rtn; |
|
|
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List listOfFolders(String taskuid) throws Exception { |
|
|
|
PreparedStatement ps=null; |
|
if(taskuid!=null){ |
|
ps=this.connection().prepareStatement("Select * FROM scheduler_folder where taskuid=? ORDER BY folder_name"); |
|
ps.setString(1, taskuid); |
|
}else{ |
|
ps=this.connection().prepareStatement("Select * FROM scheduler_folder ORDER BY folder_name"); |
|
} |
|
|
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
//rtn.add(new BasicRowProcessor().toMap(rs)); |
|
rtn.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List listofMyFolders(List<String> themetags) throws Exception { |
|
|
|
String thms=""; |
|
for(String tg:themetags){ |
|
thms+=(thms.equals(""))?"'thm-"+tg+"'":",'thm-"+tg+"'"; |
|
} |
|
|
|
String query=""; |
|
query+="Select * FROM scheduler_folder WHERE id in(select folder_id from scheduler where id in( "; |
|
query+=" Select scheduler_id from scheduler_tags as a1 "; |
|
query+=" left outer join tags as a2 on a1.tag_id = a2.id "; |
|
if(thms!=null && !thms.equals("")){ |
|
query+=" where a2.tagname in ("+thms+") ) "; |
|
}else{ |
|
query+=" )"; |
|
} |
|
query+=") ORDER BY folder_name "; |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
|
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
//rtn.add(new BasicRowProcessor().toMap(rs)); |
|
rtn.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
|
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public String getFolderTaskUID(int folder_id) throws Exception { |
|
|
|
PreparedStatement ps=null; |
|
|
|
ps=this.connection().prepareStatement("Select taskuid FROM scheduler_folder where id=?"); |
|
ps.setInt(1, folder_id); |
|
|
|
ResultSet rs=ps.executeQuery(); |
|
String rtn=null; |
|
while(rs.next()){ |
|
rtn=rs.getString("taskuid"); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void updateTaskFolder(int scheduler_id,int folder_id) throws Exception { |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("update scheduler SET folder_id=? where id=?"); |
|
ps.setInt(1, folder_id); |
|
ps.setInt(2, scheduler_id); |
|
ps.executeUpdate(); |
|
ps.close(); |
|
|
|
PreparedStatement ps1=this.connection().prepareStatement("update scheduler_taskdata SET val=? WHERE field_shortname=? AND scheduler_id=?"); |
|
if(folder_id>0){ |
|
ps1.setString(1, folder_id+""); |
|
}else{ |
|
ps1.setString(1, ""); |
|
} |
|
ps1.setString(2, "folder_id"); |
|
ps1.setInt(3, scheduler_id); |
|
ps1.executeUpdate(); |
|
ps1.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void updateCallingAnotherScript(int scheduler_id, int calling_another_script /* either 1 or 0 */) throws Exception { |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("update scheduler SET calling_another_script=? WHERE id=?"); |
|
ps.setInt(1, calling_another_script); |
|
ps.setInt(2, scheduler_id); |
|
ps.executeUpdate(); |
|
|
|
ps.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void moveTasks(String d_tuid, int d_fid, String s_tuid, int s_fid) throws Exception { |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("update scheduler SET taskuid=?,folder_id=? WHERE taskuid=? AND folder_id=?"); |
|
ps.setString(1, d_tuid); |
|
ps.setInt(2, d_fid); |
|
ps.setString(3, s_tuid); |
|
ps.setInt(4, s_fid); |
|
ps.executeUpdate(); |
|
|
|
PreparedStatement ps1=this.connection().prepareStatement("update scheduler_taskdata SET val=? WHERE field_shortname='folder_id' AND scheduler_id IN (SELECT id FROM scheduler WHERE folder_id=?)"); |
|
ps1.setString(1, d_fid+""); |
|
ps1.setInt(2, d_fid); |
|
ps1.executeUpdate(); |
|
|
|
ps1.close(); |
|
ps.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void renameFolder(String taskuid, String oldname, String newname) throws Exception { |
|
|
|
if(!oldname.equals(newname)){ |
|
checkFolderExisting(taskuid,newname); |
|
} |
|
PreparedStatement ps=this.connection().prepareStatement("update scheduler_folder set folder_name=replace(folder_name,?,?) where (folder_name LIKE ? OR folder_name=?) AND taskuid=?"); |
|
|
|
ps.setString(1, oldname); |
|
ps.setString(2, newname); |
|
ps.setString(3, oldname+"/%"); |
|
ps.setString(4, oldname); |
|
ps.setString(5, taskuid); |
|
|
|
ps.executeUpdate(); |
|
ps.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void moveItemToRootOrGroup(int scheduler_id, String taskuid, int folder_id) throws Exception { |
|
|
|
//PreparedStatement ps=this.connection().prepareStatement("update scheduler_folder set folder_name=replace(folder_name,?,?) where (folder_name LIKE ?+'/%' OR folder_name=?) AND taskuid=?"); |
|
|
|
this.connection().setAutoCommit(false); |
|
try{ |
|
String query="UPDATE scheduler SET taskuid=?,folder_id=? WHERE id=?"; |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ps.setString(1,taskuid); |
|
ps.setInt(2,folder_id); |
|
ps.setInt(3,scheduler_id); |
|
|
|
ps.executeUpdate(); |
|
|
|
|
|
PreparedStatement ps1=this.connection().prepareStatement("update scheduler_taskdata SET val=? WHERE field_shortname=? AND scheduler_id=?"); |
|
if(folder_id>0){ |
|
ps1.setString(1, folder_id+""); |
|
}else{ |
|
ps1.setString(1, ""); |
|
} |
|
ps1.setString(2, "folder_id"); |
|
ps1.setInt(3, scheduler_id); |
|
ps1.executeUpdate(); |
|
ps1.close(); |
|
|
|
this.connection().commit(); |
|
}catch(Exception e){ |
|
this.connection().rollback(); |
|
throw e; |
|
}finally{ |
|
this.connection().setAutoCommit(true); |
|
} |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public ArrayList<Integer> moveItems(String foldername, String taskuid, String parentfolder, String targetuid, String targetpath) throws Exception { |
|
|
|
//PreparedStatement ps=this.connection().prepareStatement("update scheduler_folder set folder_name=replace(folder_name,?,?) where (folder_name LIKE ?+'/%' OR folder_name=?) AND taskuid=?"); |
|
|
|
ArrayList rtn=new ArrayList(); |
|
if(parentfolder!=null && !parentfolder.equals("") && !parentfolder.endsWith("/")){ |
|
parentfolder+="/"; |
|
} |
|
if(targetpath!=null && !targetpath.equals("") && !targetpath.endsWith("/")){ |
|
targetpath+="/"; |
|
} |
|
|
|
checkFolderExisting(targetuid, targetpath+foldername); |
|
|
|
this.connection().setAutoCommit(false); |
|
try{ |
|
|
|
String wherecond="WHERE folder_id IN(SELECT id from scheduler_folder WHERE (folder_name LIKE ? OR folder_name=?) AND taskuid=?)"; |
|
|
|
|
|
PreparedStatement ps0=this.connection().prepareStatement("SELECT id from scheduler "+wherecond); |
|
ps0.setString(1,parentfolder+foldername+"/%"); |
|
ps0.setString(2,parentfolder+foldername); |
|
ps0.setString(3,taskuid); |
|
ResultSet rs=ps0.executeQuery(); |
|
while(rs.next()) { |
|
Integer id=rs.getInt("id"); |
|
rtn.add(id); |
|
} |
|
rs.close(); |
|
ps0.close(); |
|
|
|
|
|
String query="UPDATE scheduler SET taskuid=? "+wherecond; |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ps.setString(1,targetuid); |
|
ps.setString(2,parentfolder+foldername+"/%"); |
|
ps.setString(3,parentfolder+foldername); |
|
ps.setString(4,taskuid); |
|
ps.executeUpdate(); |
|
|
|
String query2="UPDATE scheduler_folder SET folder_name=replace(folder_name,?,?), taskuid=? WHERE (folder_name LIKE ? OR folder_name=?) AND taskuid=?"; |
|
PreparedStatement ps2=this.connection().prepareStatement(query2); |
|
ps2.setString(1, parentfolder+foldername); |
|
ps2.setString(2, targetpath+foldername); |
|
ps2.setString(3, targetuid); |
|
ps2.setString(4, parentfolder+foldername+"/%"); |
|
ps2.setString(5, parentfolder+foldername); |
|
ps2.setString(6, taskuid); |
|
ps2.executeUpdate(); |
|
|
|
this.connection().commit(); |
|
return rtn; |
|
}catch(Exception e){ |
|
this.connection().rollback(); |
|
throw e; |
|
}finally{ |
|
this.connection().setAutoCommit(true); |
|
} |
|
|
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void deleteFolder(int folderid) throws Exception { |
|
|
|
PreparedStatement ps0=this.connection().prepareStatement("select folder_name,taskuid from scheduler_folder where id=?"); |
|
ps0.setInt(1, folderid); |
|
ResultSet rs0=ps0.executeQuery(); |
|
try{ |
|
if(rs0.next()){ |
|
PreparedStatement ps1=null; |
|
ResultSet rs1=null; |
|
try{ |
|
String foldername=rs0.getString("folder_name"); |
|
String taskuid=rs0.getString("taskuid"); |
|
ps1=this.connection().prepareStatement("select * from scheduler_folder where left(folder_name,length(?))=? AND id<>? AND taskuid=? "); |
|
ps1.setString(1, foldername); |
|
ps1.setString(2, foldername); |
|
ps1.setInt(3, folderid); |
|
ps1.setString(4, taskuid); |
|
rs1=ps1.executeQuery(); |
|
if(rs1.next()){ |
|
throw new Exception("You can't delete this folder as it has Sub folder:"+rs1.getString("folder_name")+". Please delete that first"); |
|
} |
|
}catch(Exception e){ |
|
throw e; |
|
}finally{ |
|
if(rs1!=null) rs1.close(); |
|
if(ps1!=null) ps1.close(); |
|
} |
|
} |
|
}catch(Exception e1){ |
|
throw e1; |
|
}finally{ |
|
rs0.close(); |
|
ps0.close(); |
|
} |
|
|
|
|
|
PreparedStatement ps=this.connection().prepareStatement("delete from scheduler_folder where id=?"); |
|
ps.setInt(1, folderid); |
|
ps.executeUpdate(); |
|
|
|
PreparedStatement ps1=this.connection().prepareStatement("update scheduler SET folder_id=null where folder_id=?"); |
|
ps1.setInt(1, folderid); |
|
ps1.executeUpdate(); |
|
ps1.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public long addFolder(String taskuid,String foldername) throws Exception { |
|
|
|
checkFolderExisting(taskuid,foldername); |
|
|
|
long id=0; |
|
if(foldername.contains("/")){ |
|
String[] folders=foldername.split("/"); |
|
String parent=foldername.substring(0,foldername.lastIndexOf(folders[folders.length-1])); |
|
if(parent.contains("/")){ |
|
parent=parent.substring(0,parent.lastIndexOf("/")); |
|
} |
|
//throw new Exception("Parent folder:"+parent); |
|
PreparedStatement ps0=this.connection().prepareStatement("select folder_name from scheduler_folder WHERE folder_name=? AND taskuid=?"); |
|
ps0.setString(1, parent); |
|
ps0.setString(2, taskuid); |
|
ResultSet rs0=ps0.executeQuery(); |
|
if(!rs0.next()){ |
|
throw new Exception("Parent folder:"+parent+" does not exist, Please create parent folder inclusive of all root folders"); |
|
} |
|
} |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("insert into scheduler_folder(taskuid,folder_name) values(?,?)",Statement.RETURN_GENERATED_KEYS); |
|
ps.setString(1, taskuid); |
|
ps.setString(2, foldername); |
|
ps.executeUpdate(); |
|
ResultSet generatedKeys = ps.getGeneratedKeys(); |
|
|
|
if (generatedKeys.next()) { |
|
id=generatedKeys.getLong(1); |
|
} |
|
|
|
//added by rams on 5-june-2012 |
|
generatedKeys.close(); |
|
ps.close(); |
|
|
|
return id; |
|
} |
|
|
|
|
|
/** |
|
* Check whether folder is exist |
|
* @param taskuid taskuid |
|
* @param foldername folder name |
|
* @throws Exception |
|
*/ |
|
private void checkFolderExisting(String taskuid, String foldername) throws Exception { |
|
PreparedStatement ps3=this.connection().prepareStatement("select folder_name from scheduler_folder where taskuid=? AND folder_name=? "); |
|
ps3.setString(1, taskuid); |
|
ps3.setString(2, foldername); |
|
ResultSet rs3=ps3.executeQuery(); |
|
if(rs3.next()){ |
|
rs3.close(); |
|
throw new Exception("Folder name already existing!"); |
|
} |
|
rs3.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void deleteScheduler(int scheduler_id) throws Exception { |
|
PreparedStatement ps=this.connection().prepareStatement("UPDATE scheduler SET deleted=1, deletedon=? WHERE id=?"); |
|
ps.setTimestamp(1, new Timestamp(new Date().getTime())); |
|
ps.setInt(2, scheduler_id); |
|
ps.executeUpdate(); |
|
ps.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void putBackScheduler(int scheduler_id) throws Exception { |
|
PreparedStatement ps=this.connection().prepareStatement("UPDATE scheduler SET deleted=NULL, deletedon=NULL WHERE id=?"); |
|
ps.setInt(1, scheduler_id); |
|
ps.executeUpdate(); |
|
ps.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void purgeScheduler(int scheduler_id) throws Exception { |
|
|
|
PreparedStatement ps1=this.connection().prepareStatement("delete from scheduler_taskdata WHERE scheduler_id=?"); |
|
ps1.setInt(1, scheduler_id); |
|
ps1.executeUpdate(); |
|
ps1.close(); |
|
|
|
PreparedStatement ps2=this.connection().prepareStatement("delete from scheduler_logs WHERE scheduler_id=?"); |
|
ps2.setInt(1, scheduler_id); |
|
ps2.executeUpdate(); |
|
ps2.close(); |
|
|
|
PreparedStatement ps3=this.connection().prepareStatement("delete from scheduler_queuelogs WHERE scheduler_id=?"); |
|
ps3.setInt(1, scheduler_id); |
|
ps3.executeUpdate(); |
|
ps3.close(); |
|
|
|
PreparedStatement ps4=this.connection().prepareStatement("delete from scheduler_tags WHERE scheduler_id=?"); |
|
ps4.setInt(1, scheduler_id); |
|
ps4.executeUpdate(); |
|
ps4.close(); |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("delete from scheduler WHERE id=?"); |
|
ps.setInt(1, scheduler_id); |
|
ps.executeUpdate(); |
|
ps.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Map getScheduler(int scheduler_id) throws Exception { |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("Select a.*,b.folder_name,c.tagname as owner_tag,( "); |
|
sb.append(" select CONCAT(GROUP_CONCAT(cast(tags.tagname as CHAR(8000)) order by tags.tagname SEPARATOR ', '), ', ') "); |
|
sb.append(" from scheduler_tags as st "); |
|
sb.append(" left outer join tags on tags.id=st.tag_id "); |
|
sb.append(" where st.scheduler_id=a.id "); |
|
sb.append(") as stags "); |
|
sb.append("FROM scheduler as a "); |
|
sb.append("LEFT OUTER JOIN scheduler_folder as b on a.folder_id=b.id left outer join tags as c on c.id=a.owner_tag_id "); |
|
sb.append("WHERE a.id=? "); |
|
|
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString(), ResultSet.CONCUR_READ_ONLY); |
|
|
|
ps.setInt(1, scheduler_id); |
|
ResultSet rs=ps.executeQuery(); |
|
|
|
Map data=null; |
|
if(rs.next()){ |
|
//data=new BasicRowProcessor().toMap(rs); |
|
data = GeneralUtilDB.resultsetToMap(rs); |
|
} |
|
if(data!=null){ |
|
|
|
PreparedStatement ps1=this.connection().prepareStatement("Select * from scheduler_taskdata WHERE scheduler_id=?",ResultSet.CONCUR_READ_ONLY); |
|
|
|
ps1.setInt(1, scheduler_id); |
|
ResultSet rs1=ps1.executeQuery(); |
|
while(rs1.next()){ |
|
String shortname=rs1.getString("field_shortname"); |
|
String val=rs1.getString("val"); |
|
|
|
data.put(shortname, val); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs1.close(); |
|
ps1.close(); |
|
|
|
} |
|
|
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return data; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public int addSchedulerLog(int scheduler_id, Date start, Date end,String timezone, String status,String messages) throws Exception{ |
|
|
|
PreparedStatement pstmt=this.connection().prepareStatement("INSERT INTO scheduler_logs(scheduler_id,start_time,end_time,timezone,status,messages) VALUES(?,?,?,?,?,?)",Statement.RETURN_GENERATED_KEYS); |
|
pstmt.setInt(1, scheduler_id); |
|
pstmt.setTimestamp(2,new Timestamp(start.getTime())); |
|
pstmt.setTimestamp(3, new Timestamp(end.getTime())); |
|
pstmt.setString(4, timezone); |
|
pstmt.setString(5,status); |
|
pstmt.setString(6,messages); |
|
pstmt.executeUpdate(); |
|
ResultSet rs1 = pstmt.getGeneratedKeys(); |
|
int thisid=0; |
|
if(rs1.next()){ |
|
thisid=rs1.getInt(1); |
|
} |
|
pstmt.close(); |
|
return thisid; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void updateSchedulerLogMsg(int log_id,String messages) throws Exception{ |
|
PreparedStatement pstmt=this.connection().prepareStatement("Update scheduler_logs SET messages=? WHERE id=?"); |
|
pstmt.setString(1, messages); |
|
pstmt.setInt(2, log_id); |
|
pstmt.executeUpdate(); |
|
pstmt.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Map getQueueLog(int scheduler_id, long trigger_time) throws Exception { |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("select * from scheduler_queuelogs WHERE scheduler_id=? AND trigger_time=?; "); |
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED); |
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
ps.setInt(1, scheduler_id); |
|
ps.setLong(2, trigger_time); |
|
ResultSet rs=ps.executeQuery(); |
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ); |
|
Map rtn=null; |
|
if(rs.next()){ |
|
//rtn=new BasicRowProcessor().toMap(rs); |
|
rtn = GeneralUtilDB.resultsetToMap(rs); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public synchronized List listOfQueueLogs(String sids_trids, long now) throws Exception { |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
|
|
/* |
|
if(sids_trids==null){ |
|
sb.append("select a.*,cast(c.val as char(200)) as dependencies,b.name,b.calling_another_script,b.taskuid,b.timezone,LENGTH(d.console_message) AS console_message_size from ( "); |
|
sb.append(" select * from scheduler_queuelogs "); |
|
sb.append(" WHERE ID in ( select id from ( "); |
|
sb.append(" select id from scheduler_queuelogs "); |
|
sb.append(" where trigger_time<="+now); |
|
sb.append(" order by trigger_time desc limit 0 ) temp_table "); |
|
sb.append(" ) union all "); |
|
sb.append(" select * from scheduler_queuelogs "); |
|
sb.append(" where status is null and trigger_time>"+now); |
|
sb.append(") as a "); |
|
sb.append("left outer join scheduler as b on a.scheduler_id=b.id "); |
|
sb.append("left outer join scheduler_taskdata as c on c.scheduler_id=b.id and c.field_shortname ='dependentids' "); |
|
sb.append("left outer join scheduler_queuelogs_cmessage as d on d.scheduler_id =a.scheduler_id and d.trigger_time = a.trigger_time "); |
|
sb.append("ORDER BY a.trigger_time asc,a.start_time,a.scheduler_id; "); |
|
}else{ |
|
sb.append("select a.*,cast(c.val as char(200)) as dependencies,b.name,b.calling_another_script,b.taskuid,b.timezone,LENGTH(d.console_message) AS console_message_size from ( "); |
|
sb.append(" select * from scheduler_queuelogs "); |
|
sb.append(" WHERE ID in ( "); |
|
sb.append(" select id from scheduler_queuelogs "); |
|
sb.append(" where concat(scheduler_id, concat('_',trigger_time) ) IN ("+sids_trids+") and is_triggered<>1 "); |
|
sb.append(" AND status IS NULL "); |
|
sb.append(" ) union all "); |
|
sb.append(" select * from scheduler_queuelogs "); |
|
sb.append(" where status is null and trigger_time>="+now); |
|
sb.append(") as a "); |
|
sb.append("left outer join scheduler as b on a.scheduler_id=b.id "); |
|
sb.append("left outer join scheduler_taskdata as c on c.scheduler_id=b.id and c.field_shortname ='dependentids' "); |
|
sb.append("left outer join scheduler_queuelogs_cmessage as d on d.scheduler_id =a.scheduler_id and d.trigger_time = a.trigger_time "); |
|
sb.append("ORDER BY a.trigger_time asc,a.start_time,a.scheduler_id; "); |
|
} |
|
*/ |
|
|
|
if(sids_trids==null){ |
|
sb.append("select a.host, a.scheduler_id, a.trigger_time, a.status, a.db_insert, a.db_update, a.db_delete, a.is_triggered, a.start_time, a.end_time, a.db_connection_ids, a.response_code, "); |
|
sb.append("cast(c.val as char(200)) as dependencies,b.name,b.calling_another_script,b.taskuid,b.timezone,LENGTH(d.console_message) AS console_message_size from ( "); |
|
sb.append(" select host, scheduler_id, trigger_time, status, db_insert, db_update, db_delete, is_triggered, start_time, end_time, db_connection_ids, response_code "); |
|
sb.append(" from scheduler_queuelogs "); |
|
sb.append(" WHERE ID in ( select id from ( "); |
|
sb.append(" select id from scheduler_queuelogs "); |
|
sb.append(" where trigger_time<="+now); |
|
sb.append(" order by trigger_time desc limit 0 ) temp_table "); |
|
sb.append(" ) union all "); |
|
sb.append(" select host, scheduler_id, trigger_time, status, db_insert, db_update, db_delete, is_triggered, start_time, end_time, db_connection_ids, response_code "); |
|
sb.append(" from scheduler_queuelogs "); |
|
sb.append(" where status is null and trigger_time>"+now); |
|
sb.append(") as a "); |
|
sb.append("left outer join scheduler as b on a.scheduler_id=b.id "); |
|
sb.append("left outer join scheduler_taskdata as c on c.scheduler_id=b.id and c.field_shortname ='dependentids' "); |
|
sb.append("left outer join scheduler_queuelogs_cmessage as d on d.scheduler_id =a.scheduler_id and d.trigger_time = a.trigger_time "); |
|
sb.append("ORDER BY a.trigger_time asc,a.start_time,a.scheduler_id; "); |
|
}else{ |
|
sb.append("select a.host, a.scheduler_id, a.trigger_time, a.status, a.db_insert, a.db_update, a.db_delete, a.is_triggered, a.start_time, a.end_time, a.db_connection_ids, a.response_code, "); |
|
sb.append("cast(c.val as char(200)) as dependencies,b.name,b.calling_another_script,b.taskuid,b.timezone,LENGTH(d.console_message) AS console_message_size from ( "); |
|
sb.append(" select host, scheduler_id, trigger_time, status, db_insert, db_update, db_delete, is_triggered, start_time, end_time, db_connection_ids, response_code "); |
|
sb.append(" from scheduler_queuelogs "); |
|
sb.append(" WHERE ID in ( "); |
|
sb.append(" select id from scheduler_queuelogs "); |
|
sb.append(" where concat(scheduler_id, concat('_',trigger_time) ) IN ("+sids_trids+") and is_triggered<>1 "); |
|
sb.append(" AND status IS NULL "); |
|
sb.append(" ) union all "); |
|
sb.append(" select host, scheduler_id, trigger_time, status, db_insert, db_update, db_delete, is_triggered, start_time, end_time, db_connection_ids, response_code "); |
|
sb.append(" from scheduler_queuelogs "); |
|
sb.append(" where status is null and trigger_time>="+now); |
|
sb.append(") as a "); |
|
sb.append("left outer join scheduler as b on a.scheduler_id=b.id "); |
|
sb.append("left outer join scheduler_taskdata as c on c.scheduler_id=b.id and c.field_shortname ='dependentids' "); |
|
sb.append("left outer join scheduler_queuelogs_cmessage as d on d.scheduler_id =a.scheduler_id and d.trigger_time = a.trigger_time "); |
|
sb.append("ORDER BY a.trigger_time asc,a.start_time,a.scheduler_id; "); |
|
} |
|
|
|
//System.out.println("query - listOfQueueLogs :"+sb.toString()); |
|
|
|
log.debug("query:"+sb.toString()); |
|
boolean ro=isReadOnly(); |
|
setReadOnly(true); |
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED); |
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
|
|
//long startTime = System.nanoTime(); |
|
ResultSet rs=ps.executeQuery(); |
|
//long endTime = System.nanoTime(); |
|
//System.out.println("Took - listOfQueueLogs : " + ((endTime - startTime) / 1000000) + "ms"); |
|
|
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
//Map row=new BasicRowProcessor().toMap(rs); |
|
Map row = GeneralUtilDB.resultsetToMap(rs); |
|
row.remove("inject_code"); //to avoid too much of text being transported to client. |
|
row.remove("executed_code"); //to avoid too much of text being transported to client. |
|
rtn.add(row); |
|
} |
|
//added by rams on 5-june-2012 |
|
setReadOnly(ro); //setting back the original. |
|
rs.close(); |
|
ps.close(); |
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public synchronized Map listOfQueueLog(int scheduler_id, long trigger_time ) throws Exception { |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("select a.*,b.name,b.taskuid,b.timezone from scheduler_queuelogs as a "); |
|
sb.append("left outer join scheduler as b on a.scheduler_id=b.id "); |
|
sb.append("WHERE a.scheduler_id=? and trigger_time=? "); |
|
sb.append("ORDER BY a.trigger_time asc,a.start_time,a.scheduler_id; "); |
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED); |
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
|
|
ps.setInt(1, scheduler_id); |
|
ps.setLong(2, trigger_time); |
|
|
|
//System.out.println("query - listOfQueueLog :"+sb.toString()); |
|
|
|
//long startTime = System.nanoTime(); |
|
ResultSet rs=ps.executeQuery(); |
|
//long endTime = System.nanoTime(); |
|
//System.out.println("Took - listOfQueueLog : " + ((endTime - startTime) / 1000000) + "ms"); |
|
|
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ); |
|
Map rtn=null; |
|
if(rs.next()){ |
|
//rtn=new BasicRowProcessor().toMap(rs); |
|
rtn = GeneralUtilDB.resultsetToMap(rs); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public synchronized List listOfLast15Logs(long now, int scheduler_id) throws Exception { |
|
//String query="select a.*,b.*,c.id as error_logid,a.id as qlog_id from scheduler_queuelogs as a left outer join scheduler as b on a.scheduler_id=b.id left outer join scheduler_logs as c on a.log_id=c.id AND c.messages is not null where a.trigger_time<"+now+" AND "+datequery+" AND a.host='"+getHostName()+"' order by a.trigger_time desc,a.start_time desc,a.scheduler_id"; |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("select a.*,LENGTH(inject_code) as executed_code_length,LENGTH(inject_code) as inject_code_length,b.*,c.id as error_logid,a.id as qlog_id "); |
|
sb.append("from scheduler_queuelogs as a "); |
|
sb.append("left join scheduler as b on a.scheduler_id=b.id "); |
|
sb.append("left join scheduler_logs as c on a.log_id=c.id AND c.messages is not null "); |
|
sb.append("where a.trigger_time<"+now+" AND a.scheduler_id="+scheduler_id+" " ); |
|
//sb.append("where a.trigger_time < NOW() AND a.scheduler_id="+scheduler_id ); |
|
sb.append("order by a.trigger_time desc,a.start_time desc limit 50; "); |
|
|
|
//System.out.println("SchedulerDB.listOfHistoryQueueLogs()query:"+query); |
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED); |
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
ResultSet rs=ps.executeQuery(); |
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
//Map row=new BasicRowProcessor().toMap(rs); |
|
Map row = GeneralUtilDB.resultsetToMap(rs); |
|
row.remove("inject_code"); //to avoid too much of text being transported to client. |
|
row.remove("executed_code"); //to avoid too much of text being transported to client. |
|
rtn.add(row); |
|
//rtn.add(new BasicRowProcessor().toMap(rs)); |
|
} |
|
log.debug("listOfHistoryQueueLogs() called:"); |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public String getConsoleMsg(int scheduler_id, long trigger_time) throws Exception { |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("Select console_message from scheduler_queuelogs_cmessage WHERE scheduler_id=? and trigger_time=? "); |
|
|
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED); |
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
|
|
ps.setInt(1,scheduler_id); |
|
ps.setLong(2,trigger_time); |
|
ResultSet rs=ps.executeQuery(); |
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ); |
|
String rtn=null; |
|
if(rs.next()){ |
|
rtn=rs.getString("console_message"); |
|
} |
|
rs.close(); |
|
ps.close(); |
|
return rtn; |
|
} |
|
|
|
//For 2nd Scheduler |
|
public String getConsoleMsgFrom2ndScheduler(int scheduler_id) throws Exception { |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("Select console_message from scheduler_queuelogs_cmessage WHERE scheduler_id=?"); |
|
|
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED); |
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
|
|
ps.setInt(1,scheduler_id); |
|
ResultSet rs=ps.executeQuery(); |
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ); |
|
String rtn=null; |
|
if(rs.next()){ |
|
rtn=rs.getString("console_message"); |
|
} |
|
rs.close(); |
|
ps.close(); |
|
return rtn; |
|
} |
|
//For 2nd Scheduler |
|
public String checkCompletedSignalFromPeer(int scheduler_id) throws Exception { |
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("select message from scheduler_exeplanlogs where message like '%Server rcvd completed signal%' and scheduler_id=?"); |
|
|
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED); |
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
|
|
ps.setInt(1,scheduler_id); |
|
ResultSet rs=ps.executeQuery(); |
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ); |
|
String rtn=null; |
|
if(rs.next()){ |
|
rtn=rs.getString("message"); |
|
} |
|
rs.close(); |
|
ps.close(); |
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public synchronized List listOfHistoryQueueLogs(long now, String datequery) throws Exception { |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
|
|
/* |
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("select a.*,LENGTH(inject_code) as executed_code_length,LENGTH(inject_code) as inject_code_length,b.*, "); |
|
sb.append("c.id as error_logid,a.id as qlog_id,LENGTH(d.console_message) AS console_message_size "); |
|
sb.append("from scheduler_queuelogs as a "); |
|
sb.append("left join scheduler as b on a.scheduler_id=b.id "); |
|
sb.append("left join scheduler_logs as c on a.log_id=c.id AND c.messages is not null "); |
|
sb.append("left join scheduler_queuelogs_cmessage as d on d.scheduler_id =a.scheduler_id and d.trigger_time = a.trigger_time "); |
|
sb.append("where a.trigger_time<"+now+" AND "+datequery+" order by a.trigger_time desc,a.start_time desc,a.scheduler_id; "); |
|
*/ |
|
|
|
sb.append("select a.host, a.scheduler_id, a.trigger_time, a.status, a.db_insert, a.db_update, a.db_delete, a.is_triggered, a.start_time, a.end_time, a.db_connection_ids, a.response_code, "); |
|
sb.append("LENGTH(a.inject_code) as executed_code_length,LENGTH(a.inject_code) as inject_code_length, "); |
|
sb.append("b.timezone, b.taskuid, b.name, "); |
|
sb.append("c.id as error_logid,a.id as qlog_id,LENGTH(d.console_message) AS console_message_size "); |
|
sb.append("from scheduler_queuelogs as a "); |
|
sb.append("left join scheduler as b on a.scheduler_id=b.id "); |
|
sb.append("left join scheduler_logs as c on a.log_id=c.id AND c.messages is not null "); |
|
sb.append("left join scheduler_queuelogs_cmessage as d on d.scheduler_id =a.scheduler_id and d.trigger_time = a.trigger_time "); |
|
sb.append("where a.trigger_time<"+now+" AND "+datequery+" order by a.trigger_time desc,a.start_time desc,a.scheduler_id; "); |
|
|
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED); |
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
|
|
//System.out.println("query - listOfHistoryQueueLogs :"+sb.toString()); |
|
//long startTime = System.nanoTime(); |
|
ResultSet rs=ps.executeQuery(); |
|
//long endTime = System.nanoTime(); |
|
//System.out.println("Took - listOfHistoryQueueLogs : " + ((endTime - startTime) / 1000000) + "ms"); |
|
|
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ); |
|
Vector rtn=new Vector(); |
|
|
|
while(rs.next()){ |
|
//Map row=new BasicRowProcessor().toMap(rs); |
|
Map row = GeneralUtilDB.resultsetToMap(rs); |
|
|
|
row.remove("inject_code"); //to avoid too much of text being transported to client. |
|
row.remove("executed_code"); //to avoid too much of text being transported to client. |
|
rtn.add(row); |
|
//rtn.add(new BasicRowProcessor().toMap(rs)); |
|
} |
|
|
|
log.debug("listOfHistoryQueueLogs() called:"); |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void removeQueueLogs(long currentTime, String tasktypes) throws Exception{ |
|
|
|
// execute only if tasktypes has value |
|
if (tasktypes != null && !"".equals(tasktypes)) { |
|
|
|
//PreparedStatement ps=this.connection().prepareStatement("DELETE from scheduler_queuelogs WHERE trigger_time>? AND host=?"); |
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("delete from scheduler_queuelogs "); |
|
sb.append("where id in( select * from ( "); |
|
sb.append("select sq.id from scheduler_queuelogs as sq "); |
|
sb.append("left outer join scheduler as s on s.id=sq.scheduler_id "); |
|
sb.append("where s.taskuid IN ("+tasktypes+") "); |
|
sb.append(") table_temp ) AND trigger_time>? "); |
|
|
|
//PreparedStatement ps=this.connection().prepareStatement("DELETE from scheduler_queuelogs WHERE trigger_time>? "); |
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
|
|
ps.setLong(1, currentTime); |
|
//ps.setString(2, getHostName()); |
|
ps.executeUpdate(); |
|
ps.close(); |
|
} |
|
|
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void removeQueueLog(long currentTime, int scheduler_id) throws Exception{ |
|
PreparedStatement ps=this.connection().prepareStatement("DELETE from scheduler_queuelogs WHERE trigger_time>? AND scheduler_id=?"); |
|
ps.setLong(1, currentTime); |
|
ps.setInt(2, scheduler_id); |
|
ps.executeUpdate(); |
|
ps.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void updateQueueLogStatus(int id,String status, String computerName) throws Exception{ |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("UPDATE scheduler_queuelogs SET status=?,log_insertedby=? where id=?"); |
|
ps.setString(1, status); |
|
ps.setString(2, computerName); |
|
ps.setInt(3, id); |
|
ps.executeUpdate(); |
|
ps.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void updateQueueLogStatus(int scheduler_id, long trigger_time, String status, String computerName) throws Exception{ |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("UPDATE scheduler_queuelogs SET status=?,log_insertedby=? WHERE scheduler_id=? AND trigger_time=?"); |
|
ps.setString(1, status); |
|
ps.setString(2, computerName); |
|
ps.setInt(3, scheduler_id); |
|
ps.setLong(4, trigger_time); |
|
ps.executeUpdate(); |
|
ps.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void updateQueueNullStatus(int scheduler_id, long trigger_time,String status) throws Exception{ |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("UPDATE scheduler_queuelogs SET status=? WHERE scheduler_id=? AND trigger_time=? AND (status is null OR status ='')"); |
|
ps.setString(1, status); |
|
ps.setInt(2, scheduler_id); |
|
ps.setLong(3, trigger_time); |
|
ps.executeUpdate(); |
|
ps.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void updateResponseCode(int scheduler_id, long trigger_time,int code) throws Exception{ |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("UPDATE scheduler_queuelogs SET response_code=? WHERE scheduler_id=? AND trigger_time=?"); |
|
ps.setInt(1, code); |
|
ps.setInt(2, scheduler_id); |
|
ps.setLong(3, trigger_time); |
|
ps.executeUpdate(); |
|
ps.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void updateServerStartEnd(int scheduler_id,long trigger_time,Date start, Date end) throws Exception{ |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("UPDATE scheduler_queuelogs SET start_time=?,end_time=?,timebyserver=? WHERE scheduler_id=? AND trigger_time=?"); |
|
ps.setTimestamp(1, new Timestamp(start.getTime())); |
|
ps.setTimestamp(2, new Timestamp(end.getTime())); |
|
ps.setInt(3, 1); |
|
ps.setInt(4, scheduler_id); |
|
ps.setLong(5, trigger_time); |
|
ps.executeUpdate(); |
|
ps.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void updateHostAndStarted(int scheduler_id,long trigger_time,Date start, String host) throws Exception{ |
|
PreparedStatement ps=this.connection().prepareStatement("UPDATE scheduler_queuelogs SET start_time=?,host=? WHERE scheduler_id=? AND trigger_time=?"); |
|
ps.setTimestamp(1, new Timestamp(start.getTime())); |
|
ps.setString(2, host); |
|
ps.setInt(3, scheduler_id); |
|
ps.setLong(4, trigger_time); |
|
ps.executeUpdate(); |
|
ps.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public String getHostName() throws Exception { |
|
return java.net.InetAddress.getLocalHost().getHostName(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void updateExecutedCodeQLog(int scheduler_id, long trigger_time, String code ) throws Exception{ |
|
String query="UPDATE scheduler_queuelogs SET executed_code=? WHERE scheduler_id=? and trigger_time=?"; |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ps.setString(1, code); |
|
ps.setInt(2,scheduler_id); |
|
ps.setLong(3, trigger_time); |
|
ps.executeUpdate(); |
|
ps.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void updateQueueLog(Collection data, Vector connection_ids, String computerName) throws Exception{ |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("SELECT * from scheduler_queuelogs WHERE scheduler_id=? AND trigger_time=? "); |
|
|
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
|
|
String queryinsert="INSERT INTO scheduler_queuelogs(is_triggered,start_time,end_time,status,log_id,host,log_insertedby,db_insert,db_update,db_delete,inject_code,scheduler_id,trigger_time) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)"; |
|
String queryupdate="UPDATE scheduler_queuelogs SET is_triggered=?,start_time=?,end_time=?,status=?,log_id=?,host=?,log_insertedby=?,db_insert=?,db_update=?,db_delete=?,inject_code=? WHERE scheduler_id=? AND trigger_time=?"; |
|
|
|
Number scheduler_id1=null; |
|
Number trigger_time1=null; |
|
for(Iterator i=data.iterator();i.hasNext();){ |
|
Map record=(Map)i.next(); |
|
Number scheduler_id=(Number)record.get("scheduler_id"); |
|
Number trigger_time=(Number)record.get("trigger_time"); |
|
|
|
if(trigger_time1==null && trigger_time!=null){ |
|
trigger_time1=trigger_time; |
|
} |
|
|
|
if(scheduler_id1==null && scheduler_id!=null){ |
|
scheduler_id1=scheduler_id; |
|
} |
|
|
|
|
|
if(scheduler_id!=null &&trigger_time!=null && trigger_time.longValue()>0 && scheduler_id.intValue()>0){ |
|
PreparedStatement ps1=null; |
|
|
|
ps.setInt(1, scheduler_id.intValue()); |
|
ps.setLong(2, trigger_time.longValue()); |
|
//ps.setString(3, getHostName()); |
|
|
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED); |
|
|
|
ResultSet rs=ps.executeQuery(); |
|
|
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ); |
|
|
|
|
|
String status1=(String)record.get("status"); |
|
String oldinj_code=null; |
|
|
|
if(rs.next()){ |
|
ps1=this.connection().prepareStatement(queryupdate); |
|
|
|
if(rs.getString("status")!=null && (status1==null || (status1!=null && status1.equals("")))){ |
|
status1=rs.getString("status"); |
|
} |
|
if(rs.getString("inject_code")!=null){ |
|
oldinj_code=rs.getString("inject_code"); |
|
} |
|
|
|
}else{ |
|
ps1=this.connection().prepareStatement(queryinsert); |
|
} |
|
//release JDBC resources |
|
rs.close(); |
|
|
|
int is_triggered1=(record.get("is_triggered")==null?0: ((Number)record.get("is_triggered")).intValue()); |
|
|
|
Date sd=(Date)record.get("start_time"); |
|
Date ed=(Date)record.get("end_time"); |
|
|
|
Integer log_id=0; |
|
try{ |
|
log_id=(Integer)record.get("log_id"); |
|
}catch(Exception e){ |
|
|
|
} |
|
|
|
ps1.setInt(1, is_triggered1); |
|
if(sd!=null){ |
|
ps1.setTimestamp(2,new Timestamp(sd.getTime())); |
|
}else{ |
|
ps1.setTimestamp(2,null); |
|
} |
|
if(ed!=null){ |
|
ps1.setTimestamp(3, new Timestamp(ed.getTime())); |
|
}else{ |
|
ps1.setTimestamp(3, null); |
|
} |
|
|
|
ps1.setString(4,status1); |
|
if(log_id==null){ |
|
ps1.setInt(5,0); |
|
}else{ |
|
ps1.setInt(5,log_id); |
|
} |
|
|
|
String host=(String)record.get("host"); |
|
if(host!=null){ |
|
ps1.setString(6,host); |
|
}else{ |
|
ps1.setString(6,null); |
|
} |
|
|
|
String comp=computerName; |
|
if(comp!=null){ |
|
ps1.setString(7,comp); |
|
}else{ |
|
ps1.setString(7,null); |
|
} |
|
|
|
Integer insert=(Integer)record.get("db_insert"); |
|
if(insert!=null){ |
|
ps1.setInt(8,insert); |
|
}else{ |
|
ps1.setObject(8,null); |
|
} |
|
|
|
Integer update=(Integer)record.get("db_update"); |
|
if(update!=null){ |
|
ps1.setInt(9,update); |
|
}else{ |
|
ps1.setObject(9,null); |
|
} |
|
|
|
Integer delete=(Integer)record.get("db_delete"); |
|
if(delete!=null){ |
|
ps1.setInt(10,delete); |
|
}else{ |
|
ps1.setObject(10,null); |
|
} |
|
|
|
|
|
String code=(String)record.get("inject_code"); |
|
|
|
if(code!=null && !code.equals("")){ |
|
ps1.setString(11,code); |
|
}else{ |
|
ps1.setString(11,oldinj_code); |
|
} |
|
|
|
|
|
ps1.setInt(12,scheduler_id.intValue()); |
|
ps1.setLong(13,trigger_time.longValue()); |
|
ps1.executeUpdate(); |
|
ps1.close(); |
|
|
|
String console_message=(String)record.get("console_message"); |
|
|
|
if(console_message!=null){ |
|
PreparedStatement ps3=this.connection().prepareStatement("select scheduler_id from scheduler_queuelogs_cmessage where scheduler_id=? and trigger_time=? "); |
|
ps3.setInt(1, scheduler_id.intValue()); |
|
ps3.setLong(2, trigger_time.longValue()); |
|
ResultSet rs3=ps3.executeQuery(); |
|
if(rs3.next()){ |
|
PreparedStatement ps4=this.connection().prepareStatement("DELETE FROM scheduler_queuelogs_cmessage where scheduler_id=? and trigger_time=? "); |
|
ps4.setInt(1, scheduler_id.intValue()); |
|
ps4.setLong(2, trigger_time.longValue()); |
|
ps4.executeUpdate(); |
|
ps4.close(); |
|
} |
|
rs3.close(); |
|
ps3.close(); |
|
|
|
PreparedStatement ps5=this.connection().prepareStatement("INSERT INTO scheduler_queuelogs_cmessage(scheduler_id,trigger_time,console_message) VALUES(?,?,?)"); |
|
ps5.setInt(1, scheduler_id.intValue()); |
|
ps5.setLong(2, trigger_time.longValue()); |
|
ps5.setString(3, console_message); |
|
ps5.executeUpdate(); |
|
} |
|
} |
|
} |
|
ps.close(); |
|
//if(ps1!=null){ |
|
// ps1.close(); |
|
//} |
|
log.debug("scheduelr_id1:"+scheduler_id1+" connection_ids:"+connection_ids+" trigger_time1:"+trigger_time1); |
|
if(scheduler_id1!=null && scheduler_id1.intValue()>0 && connection_ids!=null && connection_ids.size()>0 && trigger_time1!=null && trigger_time1.longValue() > 0){ |
|
//String query=; |
|
PreparedStatement ps3=this.connection().prepareStatement("INSERT INTO scheduler_auditlog(scheduler_id,trigger_time,connection_id) VALUES(?,?,?)"); |
|
for(Iterator i=connection_ids.iterator();i.hasNext();){ |
|
ps3.setInt(1, scheduler_id1.intValue()); |
|
ps3.setLong(2, trigger_time1.longValue()); |
|
ps3.setString(3,(String)i.next()); |
|
ps3.executeUpdate(); |
|
} |
|
|
|
} |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Map getDBLogSummary(String con_ids) throws Exception { |
|
//public Map getDBLogSummary(int scheduler_id, long trigger_time) throws Exception { |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("select "); |
|
sb.append(" CASE action "); |
|
sb.append(" WHEN 'I' THEN 'db_insert' "); |
|
sb.append(" WHEN 'D' THEN 'db_delete' "); |
|
sb.append(" WHEN 'N' OR 'NU' THEN 'db_update' "); |
|
sb.append(" END as action_t "); |
|
sb.append(",count(*) as count_t "); |
|
sb.append("from audit_logs.gen_logs "); |
|
sb.append("where connection_id IN("+con_ids+") "); |
|
sb.append("and action<>'O' "); |
|
sb.append("group by action "); |
|
|
|
log.debug("~~~getDBLogSummary():query:"+sb.toString()); |
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
//ps.setInt(1, scheduler_id); |
|
//ps.setLong(2, trigger_time); |
|
ResultSet rs1=ps.executeQuery(); |
|
HashMap hm=new HashMap(); |
|
while(rs1.next()){ |
|
String key=rs1.getString("action_t"); |
|
Integer val=rs1.getInt("count_t"); |
|
if(key!=null && val!=null) { |
|
hm.put(key,val); |
|
} |
|
} |
|
//added by rams on 5-june-2012 |
|
rs1.close(); |
|
ps.close(); |
|
|
|
return hm; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Vector getDataLogHistory(int scheduler_id, long trigger_time) throws Exception { |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("select "); |
|
sb.append("dbase+'_'+tablename+'_'+connection_id as uid, "); |
|
sb.append("STR_TO_DATE(cdate,'%d-%m-%Y') as cdate1, "); |
|
sb.append("STR_TO_DATE(trans_date,'%d-%m-%Y %H:%i:%s') as trans_date1, "); |
|
sb.append("trans_date,tablename,dbase,cdate,contract,val,sval, "); |
|
sb.append("case action "); |
|
sb.append("when 'O' then 'N1' "); |
|
sb.append("else action "); |
|
sb.append("end as action_t "); |
|
sb.append("from audit_logs.gen_logs "); |
|
sb.append("where connection_id IN (select connection_id from bbsync.scheduler_auditlog where scheduler_id=? and trigger_time=?) "); |
|
sb.append("order by connection_id,dbase,tablename,trans_date,action_t DESC,contract,cdate,val,sval "); |
|
|
|
PreparedStatement ps1=this.connection().prepareStatement(sb.toString()); |
|
ps1.setInt(1, scheduler_id); |
|
ps1.setLong(2, trigger_time); |
|
|
|
Vector rtn=new Vector(); |
|
ResultSet rs1=ps1.executeQuery(); |
|
while(rs1.next()){ |
|
//rtn.add(new BasicRowProcessor().toMap(rs1)); |
|
rtn.add(GeneralUtilDB.resultsetToMap(rs1)); |
|
} |
|
|
|
//added by rams on 5-june-2012 |
|
rs1.close(); |
|
ps1.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public String getLogMessages(int log_id) throws Exception { |
|
PreparedStatement ps1=this.connection().prepareStatement("Select messages from scheduler_logs WHERE id=?"); |
|
|
|
ps1.setInt(1, log_id); |
|
|
|
String rtn=null; |
|
ResultSet rs1=ps1.executeQuery(); |
|
while(rs1.next()){ |
|
rtn=rs1.getString("messages"); |
|
} |
|
|
|
//added by rams on 5-june-2012 |
|
rs1.close(); |
|
ps1.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public int toggleActive(int scheduler_id) throws Exception { |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("update scheduler set active=CASE active WHEN -1 THEN 0 ELSE -1 END where id=?"); |
|
ps.setInt(1, scheduler_id); |
|
ps.executeUpdate(); |
|
ps.close(); |
|
|
|
PreparedStatement ps1=this.connection().prepareStatement("Select active from scheduler WHERE id=?"); |
|
ps1.setInt(1, scheduler_id); |
|
ResultSet rs=ps1.executeQuery(); |
|
|
|
Map data=null; |
|
int rtn=0; |
|
if(rs.next()){ |
|
rtn=rs.getInt("active"); |
|
} |
|
rs.close(); |
|
ps1.close(); |
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Integer addOrUpdateSchedulerGetId(int scheduler_id,Map<String,String> data, String taskUID) throws Exception{ |
|
|
|
Integer thisid=null; |
|
|
|
PreparedStatement pstmt; |
|
boolean updatemode=false; |
|
if(scheduler_id>0){ |
|
updatemode=true; |
|
pstmt=this.connection().prepareStatement("UPDATE scheduler SET name=?,exp_second=?,exp_minute=?,exp_hour=?,exp_day=?,exp_week=?,exp_month=?,timezone=?,taskuid=?,folder_id=?,calling_another_script=?,owner_tag_id=? WHERE id=?"); |
|
}else{ |
|
pstmt=this.connection().prepareStatement("INSERT INTO scheduler(name,exp_second,exp_minute,exp_hour,exp_day,exp_week,exp_month,timezone,taskuid,folder_id,calling_another_script,owner_tag_id,alert_type) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)",Statement.RETURN_GENERATED_KEYS); |
|
//pstmt=this.connection().prepareStatement("INSERT INTO scheduler(name,exp_second,exp_minute,exp_hour,exp_day,exp_week,exp_month,timezone,taskuid,folder_id,calling_another_script,owner_tag_id,alert_type,is_wiki_done,active) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",Statement.RETURN_GENERATED_KEYS); |
|
} |
|
|
|
pstmt.setString(1, data.get("name")); |
|
pstmt.setString(2, data.get("exp_second")); |
|
pstmt.setString(3, data.get("exp_minute")); |
|
pstmt.setString(4, data.get("exp_hour")); |
|
pstmt.setString(5, data.get("exp_day")); |
|
pstmt.setString(6, data.get("exp_week")); |
|
pstmt.setString(7, data.get("exp_month")); |
|
pstmt.setString(8, data.get("timezone")); |
|
pstmt.setString(9, taskUID); |
|
|
|
Integer itgr=0; |
|
try{ itgr=Integer.parseInt((String)data.get("folder_id")); }catch(Exception e){} |
|
pstmt.setInt(10, itgr); |
|
|
|
int calling=0; |
|
try{calling=Integer.parseInt(data.get("calling_another_script"));}catch(Exception e){} |
|
pstmt.setInt(11,calling); |
|
|
|
if(data.get("owner_tag_id")!=null){ |
|
try{ |
|
pstmt.setInt(12,Integer.parseInt(data.get("owner_tag_id"))); |
|
}catch(Exception e){ |
|
pstmt.setInt(12,0); |
|
} |
|
}else{ |
|
pstmt.setInt(12,0); |
|
} |
|
|
|
//pstmt.setInt(14, Integer.parseInt(data.get("is_wiki_done"))); |
|
//pstmt.setInt(15, Integer.parseInt(data.get("active"))); |
|
|
|
if(updatemode){ |
|
pstmt.setInt(13, scheduler_id); |
|
pstmt.executeUpdate(); |
|
|
|
PreparedStatement pstmt1=this.connection().prepareStatement("DELETE FROM scheduler_taskdata WHERE scheduler_id=?"); |
|
pstmt1.setInt(1, scheduler_id); |
|
pstmt1.executeUpdate(); |
|
pstmt1.close(); |
|
thisid=scheduler_id; |
|
}else{ |
|
pstmt.setString(13, "email"); //by default email for new tasks. |
|
pstmt.executeUpdate(); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
if(!updatemode){ |
|
ResultSet rs1 = pstmt.getGeneratedKeys(); |
|
if(rs1.next()){ |
|
thisid=rs1.getInt(1); |
|
} |
|
} |
|
return thisid; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void addOrUpdateSchedulerInsertTaskdata(Integer thisid,Map<String,String> data, String shortname) throws Exception{ |
|
PreparedStatement pstmt1=this.connection().prepareStatement("INSERT INTO scheduler_taskdata(field_shortname,val,scheduler_id) VALUES(?,?,?)"); |
|
pstmt1.setString(1,shortname ); |
|
pstmt1.setString(2,data.get(shortname) ); |
|
pstmt1.setInt(3,thisid ); |
|
pstmt1.executeUpdate(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public boolean updateAlertType(String alert_type,int scheduler_id) throws Exception { |
|
|
|
Vector peers=new Vector(); |
|
String query1="UPDATE scheduler SET alert_type=? WHERE id=?"; |
|
PreparedStatement ps1=this.connection().prepareStatement(query1); |
|
ps1.setString(1, alert_type); |
|
ps1.setInt(2, scheduler_id); |
|
ps1.executeUpdate(); |
|
ps1.close(); |
|
|
|
return true; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List listDependencyList(String ids, Date d) throws Exception { |
|
//String query="select a.*,b.*,c.id as error_logid,a.id as qlog_id from scheduler_queuelogs as a left outer join scheduler as b on a.scheduler_id=b.id left outer join scheduler_logs as c on a.log_id=c.id AND c.messages is not null where a.trigger_time<"+now+" AND "+datequery+" AND a.host='"+getHostName()+"' order by a.trigger_time desc,a.start_time desc,a.scheduler_id"; |
|
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
String query="select * from scheduler_queuelogs WHERE scheduler_id IN("+ids+") AND end_time>='"+sdf.format(d)+"' AND is_triggered=1 AND (status='success' OR status='warning') "; |
|
|
|
//System.out.println("SchedulerDB.listOfHistoryQueueLogs()query:"+query); |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
//ps.setDate(1, new java.sql.Date(d.getTime())); |
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
//rtn.add(new BasicRowProcessor().toMap(rs)); |
|
rtn.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Vector getPeersList() throws Exception { |
|
|
|
String query="select peername from peerslist"; |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ResultSet rs=ps.executeQuery(); |
|
Vector peers=new Vector(); |
|
while(rs.next()){ |
|
String pn=rs.getString("peername"); |
|
peers.add(pn); |
|
} |
|
rs.close(); |
|
ps.close(); |
|
|
|
return peers; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List getSingleColData(String query) throws Exception { |
|
|
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ResultSet rs=ps.executeQuery(); |
|
ArrayList data=new ArrayList(); |
|
while(rs.next()){ |
|
data.add(rs.getString(1)); |
|
} |
|
rs.close(); |
|
ps.close(); |
|
return data; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Vector getPeersData() throws Exception { |
|
|
|
String query="select * from peerslist ORDER BY last_online DESC"; |
|
//String query="select * from peerslist_1 ORDER BY last_online DESC"; |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ResultSet rs=ps.executeQuery(); |
|
Vector data=new Vector(); |
|
while(rs.next()){ |
|
//data.add(new BasicRowProcessor().toMap(rs)); |
|
data.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
rs.close(); |
|
ps.close(); |
|
return data; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public String getPeerFriendlyName(String peername) throws Exception { |
|
|
|
String query="select friendlyname from peerslist WHERE peername=?"; |
|
//String query="select * from peerslist_1 ORDER BY last_online DESC"; |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ps.setString(1, peername); |
|
ResultSet rs=ps.executeQuery(); |
|
String rtn=null; |
|
if(rs.next()){ |
|
//data.add(new BasicRowProcessor().toMap(rs)); |
|
rtn=rs.getString("friendlyname"); |
|
} |
|
rs.close(); |
|
ps.close(); |
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void updatePeersLastOnline(String peername,long time) throws Exception { |
|
Vector peers=new Vector(); |
|
String query1="UPDATE peerslist set last_online=? WHERE peername=?"; |
|
PreparedStatement ps1=this.connection().prepareStatement(query1); |
|
ps1.setLong(1, time); |
|
ps1.setString(2, peername); |
|
ps1.executeUpdate(); |
|
ps1.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void updatePeersNotes(String peername,String notes, String friendlyname,String cmail) throws Exception { |
|
|
|
Vector peers=new Vector(); |
|
String query1="UPDATE peerslist set notes=?, friendlyname=?,contact_mail=? WHERE peername=?"; |
|
PreparedStatement ps1=this.connection().prepareStatement(query1); |
|
ps1.setString(1, notes); |
|
ps1.setString(2, friendlyname); |
|
ps1.setString(3, cmail); |
|
ps1.setString(4, peername); |
|
ps1.executeUpdate(); |
|
ps1.close(); |
|
|
|
//System.out.println("++++++++++++++++++++++++++++++++++++++++++updatePeersList() called"); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void updatePeersToggle(String peername,int active, String user) throws Exception { |
|
Vector peers=new Vector(); |
|
|
|
String query1="UPDATE peerslist set active=? WHERE peername=?"; |
|
PreparedStatement ps1=this.connection().prepareStatement(query1); |
|
ps1.setInt(1, active); |
|
ps1.setString(2, peername); |
|
ps1.executeUpdate(); |
|
ps1.close(); |
|
|
|
int action=PEER_ASSOCIATION_HISTORY_PEER_ACTIVE; |
|
if(active==-1){ |
|
action=PEER_ASSOCIATION_HISTORY_PEER_NOACTIVE; |
|
} |
|
String taskuid=null; |
|
trackPeerAssoHistory(taskuid,peername,action, user); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void updatePeersList(String peername) throws Exception { |
|
|
|
Vector peers=new Vector(); |
|
String query="select peername from peerslist where peername=?"; |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ps.setString(1,peername); |
|
ResultSet rs=ps.executeQuery(); |
|
if(!rs.next()){ |
|
String query1="Insert into peerslist(peername) values(?)"; |
|
PreparedStatement ps1=this.connection().prepareStatement(query1); |
|
ps1.setString(1, peername); |
|
ps1.executeUpdate(); |
|
ps1.close(); |
|
} |
|
rs.close(); |
|
ps.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Vector getAssociatedPeers(String taskuid) throws Exception { |
|
|
|
PreparedStatement ps=null; |
|
|
|
ps=this.connection().prepareStatement("Select peername FROM scheduler_taskpeers where taskuid=?"); |
|
ps.setString(1, taskuid); |
|
|
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
rtn.add(rs.getString("peername")); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Vector getAssoAvailablePeers(String taskuid) throws Exception { |
|
PreparedStatement ps=null; |
|
|
|
ps=this.connection().prepareStatement("Select peername FROM scheduler_taskpeers where taskuid=? AND peername not IN (select peername from peerslist where active=-1) "); |
|
ps.setString(1, taskuid); |
|
|
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
rtn.add(rs.getString("peername")); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List getLast50PeerActHistory(String peername) throws Exception { |
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("select a.username,a.taskuid,a.peername,a.action,a.action_datetime ,b.name,c.friendlyname "); |
|
sb.append("from scheduler_peers_actionhistory as a "); |
|
sb.append("left join scheduler_group as b on a.taskuid=b.taskuid "); |
|
sb.append("left join peerslist as c on a.peername = c.peername "); |
|
sb.append("where a.peername=? "); |
|
sb.append("order by action_datetime desc limit 50 "); |
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
ps.setString(1, peername); |
|
ResultSet rs=ps.executeQuery(); |
|
ArrayList rtn=new ArrayList(); |
|
while(rs.next()){ |
|
//rtn.add(new BasicRowProcessor().toMap(rs)); |
|
rtn.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
rs.close(); |
|
ps.close(); |
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List getLast50TaskActHistory(String taskuid) throws Exception { |
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("select a.username,a.taskuid,a.peername,a.action,a.action_datetime ,b.name,c.friendlyname "); |
|
sb.append("from scheduler_peers_actionhistory as a "); |
|
sb.append("left join scheduler_group as b on a.taskuid=b.taskuid "); |
|
sb.append("left join peerslist as c on a.peername = c.peername "); |
|
sb.append("where a.taskuid=? "); |
|
sb.append("order by action_datetime desc limit 50 "); |
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
ps.setString(1, taskuid); |
|
ResultSet rs=ps.executeQuery(); |
|
ArrayList rtn=new ArrayList(); |
|
while(rs.next()){ |
|
//rtn.add(new BasicRowProcessor().toMap(rs)); |
|
rtn.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
rs.close(); |
|
ps.close(); |
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* Track peer association history |
|
* @param taskuid task uid |
|
* @param peer peer |
|
* @param action action |
|
* @param user user |
|
* @throws Exception |
|
*/ |
|
private void trackPeerAssoHistory(String taskuid, String peer, int action, String user) throws Exception { |
|
|
|
PreparedStatement ps2=this.connection().prepareStatement("INSERT INTO scheduler_peers_actionhistory(taskuid,peername,action,action_datetime,username) VALUES(?,?,?,?,?) "); |
|
ps2.setString(1, taskuid); |
|
ps2.setString(2, peer); |
|
ps2.setInt(3,action ) ;// ex ScheduledTask.PEER_ASSOCIATION_HISTORY_ADDED |
|
ps2.setTimestamp(4, new Timestamp(new Date().getTime())); |
|
ps2.setString(5, user); |
|
ps2.executeUpdate(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void addPeerTaskuid(String taskuid, String peer, String user) throws Exception { |
|
|
|
PreparedStatement ps1=this.connection().prepareStatement("INSERT INTO scheduler_taskpeers(taskuid, peername) SELECT * FROM (SELECT ?,?) AS table_tmp WHERE NOT EXISTS ( SELECT taskuid, peername FROM scheduler_taskpeers WHERE taskuid = ? and peername = ? ) LIMIT 1 "); |
|
ps1.setString(1, taskuid); |
|
ps1.setString(2, peer); |
|
ps1.setString(3, taskuid); |
|
ps1.setString(4, peer); |
|
ps1.executeUpdate(); |
|
ps1.close(); |
|
trackPeerAssoHistory(taskuid,peer,PEER_ASSOCIATION_HISTORY_ADDED,user); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void deletePeerTaskuid(String taskuid, String peer, String user) throws Exception { |
|
|
|
PreparedStatement ps1=this.connection().prepareStatement("DELETE FROM scheduler_taskpeers WHERE taskuid = ? AND peername=? "); |
|
ps1.setString(1, taskuid); |
|
ps1.setString(2, peer); |
|
ps1.executeUpdate(); |
|
ps1.close(); |
|
trackPeerAssoHistory(taskuid,peer,PEER_ASSOCIATION_HISTORY_REMOVED,user); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Vector getAllPeerAssociation() throws Exception { |
|
|
|
PreparedStatement ps=null; |
|
ps=this.connection().prepareStatement("Select * FROM scheduler_taskpeers "); |
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
//rtn.add(new BasicRowProcessor().toMap(rs)); |
|
rtn.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Map getLastSuccessfulQLog(int scheduler_id) throws Exception { |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("select a.* from ( "); |
|
sb.append(" select scheduler_id,max(trigger_datetime) as trigger_datetime "); |
|
sb.append(" from scheduler_queuelogs "); |
|
sb.append(" WHERE status='success' AND start_time IS NOT NULL AND end_time IS NOT NULL AND scheduler_id ="+scheduler_id ); |
|
sb.append(" group by scheduler_id "); |
|
sb.append(") as b "); |
|
sb.append("left outer join scheduler_queuelogs as a on a.trigger_datetime=b.trigger_datetime and a.scheduler_id=b.scheduler_id; "); |
|
|
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED); |
|
PreparedStatement st=this.connection().prepareStatement(sb.toString(),ResultSet.CONCUR_READ_ONLY); |
|
|
|
ResultSet rs=st.executeQuery(); |
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ); |
|
Map rtn=null; |
|
while(rs.next()){ |
|
//rtn=new BasicRowProcessor().toMap(rs); |
|
rtn = GeneralUtilDB.resultsetToMap(rs); |
|
} |
|
rs.close(); |
|
st.close(); |
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Vector getLastSuccessfulQLogs(Vector scheduler_ids) throws Exception { |
|
|
|
String ids=null; |
|
for(Iterator i=scheduler_ids.iterator();i.hasNext();){ |
|
Object id=i.next(); |
|
ids=(ids==null)?id+"":ids+","+id; |
|
} |
|
|
|
String query="select a.* from (select scheduler_id,max(trigger_datetime) as trigger_datetime from scheduler_queuelogs WHERE status='success' AND start_time IS NOT NULL AND end_time IS NOT NULL AND scheduler_id in ("+ids+") "; |
|
query+="group by scheduler_id ) as b left outer join scheduler_queuelogs as a on a.trigger_datetime=b.trigger_datetime and a.scheduler_id=b.scheduler_id"; |
|
Statement st=this.connection().createStatement(); |
|
ResultSet rs=st.executeQuery(query); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
//rtn.add(new BasicRowProcessor().toMap(rs)); |
|
rtn.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
rs.close(); |
|
st.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public int addRScript(String name,String script, int restart) throws Exception { |
|
PreparedStatement ps1=this.connection().prepareStatement("INSERT INTO r_script(name,script,restart) VALUES(?,?,?)",Statement.RETURN_GENERATED_KEYS); |
|
ps1.setString(1, name); |
|
ps1.setString(2, script); |
|
ps1.setInt(3, restart); |
|
ps1.executeUpdate(); |
|
ResultSet rs1 = ps1.getGeneratedKeys(); |
|
int thisid=0; |
|
if(rs1.next()){ |
|
thisid=rs1.getInt(1); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs1.close(); |
|
ps1.close(); |
|
|
|
return thisid; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Map getRScript(int script_id) throws Exception { |
|
PreparedStatement ps=this.connection().prepareStatement("Select name,script,restart FROM r_script where id=?"); |
|
ps.setInt(1, script_id); |
|
|
|
ResultSet rs=ps.executeQuery(); |
|
Map rtn=null; |
|
if(rs.next()){ |
|
//rtn= new BasicRowProcessor().toMap(rs); |
|
rtn = GeneralUtilDB.resultsetToMap(rs); |
|
} |
|
|
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void addRScriptLog(int script_id,String peer, String status, Date start_time, Date end_time, String message) throws Exception { |
|
PreparedStatement ps1=this.connection().prepareStatement("INSERT INTO r_script_logs(script_id,peer,status,start_time,end_time,message) VALUES(?,?,?,?,?,?)"); |
|
ps1.setInt(1, script_id); |
|
ps1.setString(2, peer); |
|
ps1.setString(3, status); |
|
ps1.setTimestamp(4,new Timestamp(start_time.getTime())); |
|
ps1.setTimestamp(5,new Timestamp(end_time.getTime())); |
|
ps1.setString(6, message); |
|
ps1.executeUpdate(); |
|
|
|
ps1.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Vector rScriptLast5Logs() throws Exception { |
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("select a.*,b.name from r_script_logs as a left join r_script as b on a.script_id=b.id "); |
|
sb.append("where a.script_id in (select id from (select id from r_script order by id desc limit 5) temp_table) order by a.script_id desc "); |
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
|
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
//Map record= new BasicRowProcessor().toMap(rs); |
|
Map record= GeneralUtilDB.resultsetToMap(rs); |
|
rtn.add(record); |
|
} |
|
|
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void setGroupOrder( Vector taskuids) throws Exception { |
|
//PreparedStatement ps=null; |
|
|
|
//ps=this.connection().prepareStatement("delete FROM scheduler_group"); |
|
//ps.executeUpdate(); |
|
|
|
//PreparedStatement ps1=this.connection().prepareStatement("INSERT INTO scheduler_group(taskuid,disp_order) VALUES(?,?)"); |
|
PreparedStatement ps1=this.connection().prepareStatement("UPDATE scheduler_group SET disp_order=? WHERE taskuid=?"); |
|
int count=0; |
|
for(Iterator<String> i=taskuids.iterator();i.hasNext();){ |
|
ps1.setInt(1, count++); |
|
ps1.setString(2, i.next()); |
|
ps1.executeUpdate(); |
|
} |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Vector getGroupOrder( ) throws Exception { |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("select taskuid FROM scheduler_group ORDER by disp_order"); |
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
rtn.add(rs.getString("taskuid")); |
|
} |
|
|
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Vector getAllGroups( ) throws Exception { |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("select * FROM scheduler_group ORDER by disp_order"); |
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
//Map record= new BasicRowProcessor().toMap(rs); |
|
Map record = GeneralUtilDB.resultsetToMap(rs); |
|
rtn.add(record); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Vector getActiveGroups( ) throws Exception { |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("select * FROM scheduler_group WHERE active<>-1 ORDER by disp_order "); |
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
//Map record= new BasicRowProcessor().toMap(rs); |
|
Map record = GeneralUtilDB.resultsetToMap(rs); |
|
rtn.add(record); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Vector getGroups(String enginetype ) throws Exception { |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("select * FROM scheduler_group WHERE enginetype=? ORDER by disp_order "); |
|
ps.setString(1, enginetype); |
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
//Map record= new BasicRowProcessor().toMap(rs); |
|
Map record = GeneralUtilDB.resultsetToMap(rs); |
|
rtn.add(record); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void addSchedulerExeLogs(int scheduler_id, long trigger_time, Date date,String messages,int repCode, String computerName) throws Exception{ |
|
|
|
PreparedStatement pstmt=this.connection().prepareStatement("INSERT INTO scheduler_exeplanlogs(scheduler_id,trigger_time,trans_datetime,machine,message,repcode) VALUES(?,?,?,?,?,?)"); |
|
pstmt.setInt(1, scheduler_id); |
|
pstmt.setLong(2,trigger_time); |
|
pstmt.setTimestamp(3, new Timestamp(date.getTime())); |
|
pstmt.setString(4, computerName); |
|
pstmt.setString(5,messages); |
|
pstmt.setInt(6,repCode); |
|
pstmt.executeUpdate(); |
|
|
|
pstmt.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public boolean execLogsRepcodeExist(int scheduler_id, long trigger_time, int repcode) throws Exception { |
|
boolean rtn=false; |
|
PreparedStatement ps=this.connection().prepareStatement("select * FROM scheduler_exeplanlogs WHERE scheduler_id=? AND trigger_time=? and repcode=?"); |
|
ps.setInt(1, scheduler_id); |
|
ps.setLong(2, trigger_time); |
|
ps.setInt(3, repcode); |
|
ResultSet rs=ps.executeQuery(); |
|
|
|
while(rs.next()){ |
|
rtn=true; |
|
} |
|
|
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Vector getSchedulerExeLogs(int scheduler_id, long trigger_time ) throws Exception { |
|
|
|
String query = "select trans_datetime, machine, message, repcode FROM scheduler_exeplanlogs WHERE scheduler_id=? AND trigger_time=? ORDER by id"; |
|
|
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ps.setInt(1, scheduler_id); |
|
ps.setLong(2, trigger_time); |
|
|
|
//System.out.println("query - getSchedulerExeLogs : "+query); |
|
//long startTime = System.nanoTime(); |
|
ResultSet rs=ps.executeQuery(); |
|
//long endTime = System.nanoTime(); |
|
//System.out.println("Took - getSchedulerExeLogs : " + ((endTime - startTime) / 1000000) + "ms"); |
|
|
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
//Map record= new BasicRowProcessor().toMap(rs); |
|
Map record= GeneralUtilDB.resultsetToMap(rs); |
|
Timestamp tsm=(Timestamp)record.get("trans_datetime"); |
|
SimpleDateFormat sdf=new SimpleDateFormat("dd-MMM HH:mm:ss"); |
|
record.put("trans_datetime1", sdf.format(tsm)); |
|
rtn.add(record); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Vector getTriggerData(int scheduler_id) throws Exception { |
|
PreparedStatement ps=this.connection().prepareStatement("select * FROM scheduler_trigger where scheduler_id=?"); |
|
ps.setInt(1,scheduler_id); |
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
//Map record= new BasicRowProcessor().toMap(rs); |
|
Map record = GeneralUtilDB.resultsetToMap(rs); |
|
rtn.add(record); |
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Map getOneRowTriggerData(long row_id) throws Exception { |
|
PreparedStatement ps=this.connection().prepareStatement("select * FROM scheduler_trigger where id=?"); |
|
ps.setLong(1,row_id); |
|
ResultSet rs=ps.executeQuery(); |
|
Map record=new HashMap(); |
|
if(rs.next()){ |
|
//record= new BasicRowProcessor().toMap(rs); |
|
record = GeneralUtilDB.resultsetToMap(rs); |
|
|
|
} |
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return record; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void setTriggerData(int scheduler_id, SchedulerTrigger arry[]) throws Exception { |
|
PreparedStatement ps1=this.connection().prepareStatement("DELETE FROM scheduler_trigger where scheduler_id=?"); |
|
ps1.setInt(1, scheduler_id); |
|
ps1.executeUpdate(); |
|
ps1.close(); |
|
PreparedStatement ps=this.connection().prepareStatement("INSERT INTO scheduler_trigger(scheduler_id, exp_second,exp_minute,exp_hour,exp_week,exp_day,exp_month,inject_code) VALUES(?,?,?,?,?,?,?,?)"); |
|
for(int i=0;i<arry.length;i++){ |
|
ps.setInt(1,scheduler_id); |
|
ps.setString(2,arry[i].getExp_second()); |
|
ps.setString(3,arry[i].getExp_minute()); |
|
ps.setString(4,arry[i].getExp_hour()); |
|
ps.setString(5,arry[i].getExp_week()); |
|
ps.setString(6,arry[i].getExp_day()); |
|
ps.setString(7,arry[i].getExp_month()); |
|
ps.setString(8,arry[i].getInject_code()); |
|
ps.executeUpdate(); |
|
} |
|
ps.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void addPeerThreadStatus(String peername,String queuename, String taskuid, int allowedthread, int scheduler_id) throws Exception { |
|
PreparedStatement pstmt=this.connection().prepareStatement("INSERT into peer_queuethreads(peername,queuename,taskuid,allowed_threads,scheduler_id) values(?,?,?,?,?)"); |
|
pstmt.setString(1, peername); |
|
pstmt.setString(2,queuename); |
|
pstmt.setString(3, taskuid); |
|
pstmt.setInt(4, allowedthread); |
|
pstmt.setInt(5,scheduler_id); |
|
pstmt.executeUpdate(); |
|
pstmt.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void removePeerThreadStatus(String peername, int scheduler_id) throws Exception { |
|
PreparedStatement pstmt=this.connection().prepareStatement("DELETE FROM peer_queuethreads WHERE peername=? AND scheduler_id=?"); |
|
pstmt.setString(1, peername); |
|
pstmt.setInt(2,scheduler_id); |
|
pstmt.executeUpdate(); |
|
pstmt.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void removeAllPeerThreadStatus(String peername) throws Exception { |
|
PreparedStatement pstmt=this.connection().prepareStatement("DELETE FROM peer_queuethreads WHERE peername=?"); |
|
pstmt.setString(1, peername); |
|
pstmt.executeUpdate(); |
|
pstmt.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Vector getAvailablePeers(String peers /* "'rhino'" */, String taskuid /* "'peer1','peer2'" */) throws Exception { |
|
String query=""; |
|
query+="select peername from peerslist "; |
|
query+="WHERE peername IN ("+peers+") "; |
|
query+="AND peername NOT IN ( "; |
|
query+=" select distinct(peername) from peer_queuethreads as a "; |
|
//query+=" where taskuid="+taskuid+" AND peername IN ("+peers+") AND "; |
|
query+=" where queuename IN (select distinct queuename from peer_queuethreads WHERE taskuid="+taskuid+") AND peername IN ("+peers+") AND "; |
|
query+=" a.allowed_threads <= (select count(*) from peer_queuethreads as b where queuename IN (select distinct queuename from peer_queuethreads WHERE taskuid="+taskuid+") AND b.peername=a.peername) "; |
|
query+=") "; |
|
//System.out.println("ScedulerDBSQL: query:"+query); |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
|
|
ResultSet rs=ps.executeQuery(); |
|
Vector rtn=new Vector(); |
|
while(rs.next()){ |
|
rtn.add(rs.getString("peername")); |
|
} |
|
|
|
//added by rams on 5-june-2012 |
|
rs.close(); |
|
ps.close(); |
|
|
|
return rtn; |
|
} |
|
/* |
|
public int get20RecentMaxDuration(int scheduler_id, long trigger_time) throws Exception { |
|
|
|
|
|
PreparedStatement ps=this.connection().prepareStatement("select max(datediff(millisecond,start_time,end_time)) maxduration_in_last20 from scheduler_queuelogs where id in( select top 20 id from scheduler_queuelogs where scheduler_id=? and trigger_time<=? and status='success' order by trigger_time desc"); |
|
//PreparedStatement ps=this.connection().prepareStatement("select count(*) as overlapx from scheduler_queuelogs where id in (select top "+no_oftimes+" id from scheduler_queuelogs where scheduler_id=? and trigger_time>? order by trigger_time) and status='overlapped'"); |
|
|
|
ps.setInt(1, scheduler_id); |
|
ps.setLong(2, trigger_time); |
|
ResultSet rs=ps.executeQuery(); |
|
Map data=null; |
|
int rtn=0; |
|
if(rs.next()){ |
|
rtn=rs.getInt("maxduration_in_last20"); |
|
} |
|
return rtn; |
|
} |
|
*/ |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public long getTimeoutCriteriaInMs(int scheduler_id) throws Exception { |
|
|
|
String query="select max(cast((UNIX_TIMESTAMP(end_time)*1000 - UNIX_TIMESTAMP(start_time)*1000) as int)) as maxlast_50 from scheduler_queuelogs where id in (select * from (select id from scheduler_queuelogs where scheduler_id=? and status='success' order by start_time desc limit 50) temp_table)"; |
|
|
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ps.setInt(1, scheduler_id); |
|
ResultSet rs=ps.executeQuery(); |
|
|
|
long rtn=0; |
|
if(rs.next()){ |
|
rtn=rs.getLong(1); |
|
} |
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public long getMaxDurationInLast50Exec(int scheduler_id) throws Exception { |
|
|
|
boolean err=true; |
|
long rtn=0; |
|
int count=0; |
|
while(err && count<5){ |
|
try{ |
|
count++; |
|
err=false; |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("select max(cast((UNIX_TIMESTAMP(end_time)*1000 - UNIX_TIMESTAMP(start_time)*1000) as int))*2 as maxlast_50 "); |
|
sb.append("from scheduler_queuelogs "); |
|
sb.append("where id in( "); |
|
sb.append(" select id from ( "); |
|
sb.append(" select id from scheduler_queuelogs "); |
|
sb.append(" where scheduler_id=? and status='success' order by start_time desc limit 50 "); |
|
sb.append(" ) temp_table "); |
|
sb.append("); "); |
|
|
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED); |
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
|
|
ps.setInt(1, scheduler_id); |
|
ResultSet rs=ps.executeQuery(); |
|
this.connection().setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ); |
|
if(rs.next()){ |
|
rtn=rs.getLong("maxlast_50"); |
|
} |
|
|
|
}catch(SQLException ex){ |
|
|
|
log.error("getMaxDurationInLast50Exec(), Error message e:"+ex.getMessage()); |
|
if(ex.getMessage().contains("was deadlocked on lock resources with another process")){ |
|
log.error("getMaxDurationInLast50Exec(), try "+count); |
|
err=true; |
|
Thread.sleep(50); |
|
}else{ |
|
throw ex; |
|
} |
|
} |
|
} |
|
return rtn; |
|
} |
|
|
|
/* |
|
public Vector getFollowers(int scheduler_id) throws Exception { |
|
PreparedStatement ps=this.connection().prepareStatement("select username FROM scheduler_followers WHERE scheduler_id=?"); |
|
ps.setInt(1, scheduler_id); |
|
ResultSet rs=ps.executeQuery(); |
|
Vector v=new Vector(); |
|
while(rs.next()){ |
|
v.add(rs.getString("username")); |
|
} |
|
rs.close(); |
|
ps.close(); |
|
return v; |
|
} |
|
|
|
public void followFunction(int scheduler_id, String username) throws Exception { |
|
|
|
PreparedStatement ps1=this.connection().prepareStatement("INSERT scheduler_followers(username, scheduler_id) SELECT ?,? WHERE (select count(*) FROM scheduler_followers WHERE username=? AND scheduler_id=?)=0 "); |
|
ps1.setString(1,username); |
|
ps1.setInt(2,scheduler_id); |
|
ps1.setString(3,username); |
|
ps1.setInt(4,scheduler_id); |
|
ps1.executeUpdate(); |
|
ps1.close(); |
|
|
|
} |
|
|
|
public void unFollowFunction(int scheduler_id, String username) throws Exception { |
|
|
|
PreparedStatement ps1=this.connection().prepareStatement("DELETE FROM scheduler_followers WHERE username=? AND scheduler_id=?"); |
|
ps1.setString(1,username); |
|
ps1.setInt(2,scheduler_id); |
|
ps1.executeUpdate(); |
|
ps1.close(); |
|
|
|
} |
|
|
|
*/ |
|
|
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public String getOwnerTheme(int scheduler_id) throws Exception { |
|
|
|
String query=" select b.tagname from scheduler as a left outer join tags as b on b.id=a.owner_tag_id where a.id=?"; |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ps.setInt(1, scheduler_id); |
|
ResultSet rs=ps.executeQuery(); |
|
String tagname=null; |
|
if(rs.next()){ |
|
tagname=rs.getString("tagname"); |
|
tagname=tagname.replaceAll("thm-", ""); |
|
} |
|
|
|
return tagname; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void updateWikiDone(int scheduler_id, int done) throws Exception { |
|
String query="UPDATE scheduler set is_wiki_done=? where id=?"; |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ps.setInt(1, done); |
|
ps.setInt(2, scheduler_id); |
|
ps.executeUpdate(); |
|
ps.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void updateLast2UsersTag(int scheduler_id, int user_tagid) throws Exception { |
|
|
|
// works without 'limit 2', the result is equal. |
|
String query="DELETE FROM scheduler_tags WHERE id IN ( select id from ( SELECT st.id FROM scheduler_tags as st "; |
|
query+=" LEFT OUTER JOIN tags on tags.id=st.tag_id "; |
|
query+=" WHERE st.id NOT IN( "; |
|
query+=" select st1.id from scheduler_tags as st1 "; |
|
query+=" left outer join tags as t1 on t1.id=st1.tag_id "; |
|
query+=" WHERE LEFT(t1.tagname,4)='usr-' AND st1.scheduler_id=st.scheduler_id "; |
|
query+=" order by st1.id desc "; |
|
query+=" ) "; |
|
query+=" AND LEFT(tags.tagname,4)='usr-' AND st.scheduler_id=? ) temp_table) "; |
|
|
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ps.setInt(1, scheduler_id); |
|
ps.executeUpdate(); |
|
ps.close(); |
|
|
|
PreparedStatement ps2=this.connection().prepareStatement("DELETE FROM scheduler_tags WHERE scheduler_id=? AND tag_id=?"); |
|
ps2.setInt(1, scheduler_id); |
|
ps2.setInt(2, user_tagid); |
|
ps2.executeUpdate(); |
|
|
|
PreparedStatement ps1=this.connection().prepareStatement("INSERT INTO scheduler_tags(scheduler_id,tag_id) VALUES(?,?)"); |
|
ps1.setInt(1, scheduler_id); |
|
ps1.setInt(2, user_tagid); |
|
ps1.executeUpdate(); |
|
ps1.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public int addIfTagNotExist(String tagname) throws Exception { |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("select * FROM tags WHERE tagname=?"); |
|
ps.setString(1, tagname); |
|
ResultSet rs=ps.executeQuery(); |
|
int id=0; |
|
if(rs.next()){ |
|
id=rs.getInt("id"); |
|
}else{ |
|
PreparedStatement ps1=this.connection().prepareStatement("insert into tags(tagname) values(?)",Statement.RETURN_GENERATED_KEYS); |
|
ps1.setString(1, tagname); |
|
ps1.executeUpdate(); |
|
ResultSet generatedKeys = ps1.getGeneratedKeys(); |
|
if (generatedKeys.next()) { |
|
id=generatedKeys.getInt(1); |
|
} |
|
} |
|
return id; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Map getTaskEventActions(int scheduler_id,long trig_time) throws Exception{ |
|
|
|
String q="select field_shortname,val from scheduler_taskdata "; |
|
q+=" where field_shortname like 'on%' "; |
|
q+=" and scheduler_id=? "; |
|
q+=" union all "; |
|
q+=" select 'status' as field_shortname,status as val from scheduler_queuelogs "; |
|
q+=" where scheduler_id=? and trigger_time =? "; |
|
|
|
PreparedStatement ps=this.connection().prepareStatement(q); |
|
ps.setInt(1, scheduler_id); |
|
ps.setInt(2, scheduler_id); |
|
ps.setLong(3, trig_time); |
|
ResultSet rs=ps.executeQuery(); |
|
HashMap al=new HashMap(); |
|
while(rs.next()){ |
|
al.put(rs.getString(1),rs.getString(2)); |
|
|
|
} |
|
return al; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public String getErrorMessageEvenNull(int scheduler_id,long trig_time) throws Exception { |
|
|
|
String q="select b.messages from scheduler_queuelogs as a "; |
|
q+="left outer join scheduler_logs as b on a.log_id=b.id "; |
|
q+="where a.status='fail' "; |
|
q+="and a.scheduler_id=? and a.trigger_time=? "; |
|
|
|
PreparedStatement ps=this.connection().prepareStatement(q); |
|
ps.setInt(1, scheduler_id); |
|
ps.setLong(2, trig_time); |
|
|
|
ResultSet rs=ps.executeQuery(); |
|
|
|
String rtn=null; |
|
if(rs.next()){ |
|
rtn=rs.getString("messages"); |
|
|
|
} |
|
return rtn; |
|
} |
|
|
|
|
|
/* |
|
public void pushAlarmMessage(String message) throws Exception { |
|
PreparedStatement ps1=this.connection().prepareStatement("INSERT INTO tradingRef.stackAlarms(Date,Message,status) VALUES(NOW(),?,0)"); |
|
ps1.setString(1, message); |
|
ps1.executeUpdate(); |
|
ps1.close(); |
|
} |
|
*/ |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void pushAlarmMessage(String db_name_trading_ref, String message) throws Exception { |
|
PreparedStatement ps1=this.connection().prepareStatement("INSERT INTO " + db_name_trading_ref + ".stackAlarms(Date,Message,status) VALUES(NOW(),?,0)"); |
|
ps1.setString(1, message); |
|
ps1.executeUpdate(); |
|
ps1.close(); |
|
} |
|
|
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List<Integer> getDependsThis(int scheduler_id) throws Exception { |
|
String query="select scheduler_id from scheduler_taskdata where field_shortname='dependentids' AND (val LIKE '"+scheduler_id+"' OR val LIKE '"+scheduler_id+",%' OR val LIKE '%,"+scheduler_id+",%' OR val LIKE '%,"+scheduler_id+"' )"; |
|
|
|
log.debug("query:"+query); |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ResultSet rs=ps.executeQuery(); |
|
ArrayList<Integer> ids=new ArrayList(); |
|
while(rs.next()){ |
|
int sid=rs.getInt("scheduler_id"); |
|
ids.add(sid); |
|
} |
|
return ids; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List<Integer> getDependsTo(int scheduler_id) throws Exception { |
|
String query="select val from scheduler_taskdata where field_shortname='dependentids' AND scheduler_id = "+scheduler_id; |
|
|
|
log.debug("query:"+query); |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ResultSet rs=ps.executeQuery(); |
|
ArrayList<Integer> ids=new ArrayList(); |
|
while(rs.next()){ |
|
List<String> vals = Arrays.asList(rs.getString("val").split("\\s*,\\s*")); |
|
for (int i=0; i<vals.size(); i++) { |
|
ids.add(Integer.valueOf(vals.get(i))); |
|
} |
|
} |
|
return ids; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void addEditLogs(int scheduler_id,String user, String message) throws Exception { |
|
PreparedStatement pstmt=this.connection().prepareStatement("INSERT INTO scheduler_editlogs(scheduler_id,username,message,edited_datetime) VALUES(?,?,?,?)"); |
|
pstmt.setInt(1, scheduler_id); |
|
pstmt.setString(2,user); |
|
pstmt.setString(3, message); |
|
pstmt.setTimestamp(4, new Timestamp(new Date().getTime())); |
|
pstmt.executeUpdate(); |
|
pstmt.close(); |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List getEditLogs(int scheduler_id) throws Exception { |
|
|
|
ArrayList al=new ArrayList(); |
|
String query="select * from scheduler_editlogs where scheduler_id=?"; |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ps.setInt(1, scheduler_id); |
|
ResultSet rs=ps.executeQuery(); |
|
while(rs.next()){ |
|
|
|
//al.add(new BasicRowProcessor().toMap(rs)); |
|
al.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
rs.close(); |
|
ps.close(); |
|
|
|
return al; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public String getInjectCode4QLog(String sid_triggertime) throws Exception { |
|
String query="select inject_code from scheduler_queuelogs where concat(scheduler_id, concat('_',trigger_time) )=?"; |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
ps.setString(1,sid_triggertime); |
|
ResultSet rs=ps.executeQuery(); |
|
String rtn=null; |
|
if(rs.next()){ |
|
rtn=rs.getString("inject_code"); |
|
} |
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void updateTimeoutSettings(Map data) throws Exception { |
|
|
|
PreparedStatement d_ps=this.connection().prepareStatement("DELETE FROM scheduler_timeout_settings where ky=?"); |
|
PreparedStatement i_ps=this.connection().prepareStatement("INSERT INTO scheduler_timeout_settings(ky,val) VALUES(?,?)"); |
|
for(Iterator<String> it=data.keySet().iterator();it.hasNext();){ |
|
String ky=it.next(); |
|
String val=(String)data.get(ky); |
|
d_ps.setString(1, ky); |
|
d_ps.executeUpdate(); |
|
|
|
i_ps.setString(1,ky); |
|
i_ps.setString(2, val); |
|
i_ps.executeUpdate(); |
|
} |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Map getTimeoutSettings() throws Exception { |
|
|
|
HashMap h=new HashMap<String, String>(); |
|
PreparedStatement d_ps=this.connection().prepareStatement("SELECT * FROM scheduler_timeout_settings"); |
|
ResultSet rs=d_ps.executeQuery(); |
|
|
|
while(rs.next()){ |
|
h.put(rs.getString("ky"), rs.getString("val")); |
|
|
|
} |
|
return h; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public ArrayList getLast10minuteSuspectedFailure() throws Exception { |
|
|
|
ArrayList al=new ArrayList(); |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("select a.trigger_time,a.scheduler_id from scheduler_exeplanlogs as a "); |
|
sb.append("left outer join scheduler_queuelogs as b on ( a.scheduler_id = b.scheduler_id and a.trigger_time = b.trigger_time) "); |
|
sb.append("where a.trans_datetime between DATE_ADD(NOW(), interval -20 minute) and DATE_ADD(NOW(), interval -10 minute) "); |
|
sb.append(" and (b.status is null) "); |
|
sb.append(" order by trans_datetime desc "); |
|
|
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
|
|
ResultSet rs=ps.executeQuery(); |
|
while(rs.next()){ |
|
//al.add(new BasicRowProcessor().toMap(rs)); |
|
al.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
rs.close(); |
|
ps.close(); |
|
return al; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public boolean isAnyExecLogsInLast3Mins(int scheduler_id, long trigger_time) throws Exception { |
|
|
|
boolean found=false; |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("select count(*) ct from scheduler_exeplanlogs "); |
|
sb.append("WHERE trans_datetime > DATE_ADD(NOW(), interval -3 minute) AND scheduler_id=? AND trigger_time=? "); |
|
|
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
ps.setInt(1, scheduler_id); |
|
ps.setLong(2, trigger_time); |
|
ResultSet rs=ps.executeQuery(); |
|
while(rs.next()){ |
|
found=rs.getInt("ct")>0?true:false; |
|
} |
|
return found; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public ArrayList getPeersList4Engine(List<String> enginetypes) throws Exception { |
|
|
|
String eng=""; |
|
for(String tg:enginetypes){ |
|
eng+=(eng.equals(""))?"'"+tg+"'":",'"+tg+"'"; |
|
} |
|
|
|
|
|
String query="select * from peerslist "; |
|
query+=" where peername in( "; |
|
query+=" select distinct peername from scheduler_taskpeers "; |
|
query+=" where taskuid in(select taskuid from scheduler_group where enginetype IN ("+eng+")) "; |
|
query+=" ) "; |
|
PreparedStatement ps=this.connection().prepareStatement(query); |
|
// ps.setString(1, enginetype); |
|
ResultSet rs=ps.executeQuery(); |
|
ArrayList al=new ArrayList(); |
|
while(rs.next()){ |
|
//al.add(new BasicRowProcessor().toMap(rs)); |
|
al.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
return al; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public void userPrefSaveOrUpdate(String login, String ky, String val) throws Exception { |
|
|
|
PreparedStatement ps=this.connection().prepareStatement("DELETE FROM user_preference WHERE login=? AND ky=?"); |
|
ps.setString(1, login); |
|
ps.setString(2, ky); |
|
ps.executeUpdate(); |
|
|
|
log.debug("after deleting.."); |
|
if(val!=null){ |
|
|
|
PreparedStatement ps1=this.connection().prepareStatement("INSERT INTO user_preference(login,ky,val) VALUES(?,?,?)"); |
|
|
|
ps1.setString(1, login); |
|
ps1.setString(2, ky); |
|
ps1.setString(3, val); |
|
ps1.executeUpdate(); |
|
log.debug("after inserting.."); |
|
} |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public Map userPrefGetAll(String login) throws Exception { |
|
PreparedStatement ps=this.connection().prepareStatement("SELECT ky,val FROM user_preference where login=?"); |
|
ps.setString(1, login); |
|
ResultSet rs=ps.executeQuery(); |
|
TreeMap rtn=new TreeMap(); |
|
while(rs.next()){ |
|
rtn.put(rs.getString("ky"), rs.getString("val").toString()); |
|
} |
|
rs.close(); |
|
ps.close(); |
|
return rtn; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List getAutoCompleteXHR(String keyword) throws Exception { |
|
|
|
String theme=null; |
|
|
|
//System.out.println(" legnth:"+keyword.split(":").length); |
|
|
|
|
|
if(keyword.contains(":") && keyword.split(":").length>1){ |
|
theme=keyword.split(":")[0]; |
|
keyword=keyword.split(":")[1]; |
|
} |
|
|
|
if(keyword.contains(":") && keyword.split(":").length==1){ |
|
theme=keyword.split(":")[0]; |
|
keyword=null; |
|
|
|
} |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
sb.append("select a.name,a.id,b.folder_name,c.name as group_name,d.edited_datetime,d.username, c.icon, "); |
|
sb.append("(select CONCAT(GROUP_CONCAT(cast(tags.tagname as CHAR(8000)) order by tags.tagname SEPARATOR ', '), ', ') from scheduler_tags as st "); |
|
sb.append("left outer join tags on tags.id=st.tag_id "); |
|
sb.append("WHERE st.scheduler_id=a.id "); |
|
sb.append(") as stags "); |
|
sb.append("from scheduler as a "); |
|
sb.append("left outer join scheduler_folder as b on a.folder_id=b.id "); |
|
sb.append("left outer join scheduler_group as c on a.taskuid=c.taskuid "); |
|
sb.append("left outer join scheduler_editlogs as d on d.scheduler_id=a.id AND d.id = "); |
|
sb.append("(select dd.id from scheduler_editlogs as dd where dd.scheduler_id= a.id order by dd.edited_datetime DESC limit 1) "); |
|
sb.append("where ( (a.deleted is null OR a.deleted<>1) and c.active>=0 ) "); |
|
if(keyword!=null){ |
|
sb.append("and(a.name like '%"+keyword+"%' OR cast(a.id as char(10)) like '%"+keyword+"%' ) "); |
|
} |
|
if(theme!=null){ |
|
sb.append("AND a.id in (select scheduler_id from scheduler_tags left outer join tags on scheduler_tags.tag_id = tags.id where tags.tagname='thm-"+theme.trim()+"' )" ); |
|
} |
|
sb.append("ORDER BY d.edited_datetime DESC "); |
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
ResultSet rs=ps.executeQuery(); |
|
ArrayList al=new ArrayList(); |
|
while(rs.next()){ |
|
//al.add(new BasicRowProcessor().toMap(rs)); |
|
al.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
return al; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public List getFailedLast2Days(List<String> themes) throws Exception { |
|
|
|
StringBuffer sbThemes = new StringBuffer(); |
|
for (String t : themes) { |
|
if (sbThemes.length() > 0) sbThemes.append(','); |
|
sbThemes.append("'").append(t).append("'"); |
|
} |
|
String themeStr = sbThemes.toString(); |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
|
|
if(false){ |
|
sb.append("select count(*) as num_failed,scheduler_id,b.name as name,status,max(trigger_time) as last_trigger from bbsync.scheduler_queuelogs as a "); |
|
sb.append("LEFT JOIN bbsync.scheduler as b on a.scheduler_id=b.id WHERE scheduler_id IN "); |
|
sb.append("( select scheduler_id FROM bbsync.scheduler_tags WHERE tag_id IN "); |
|
sb.append(" (select id from bbsync.tags WHERE tagname in (" + themeStr + ")) "); |
|
sb.append(") AND trigger_datetime>=DATE_ADD(NOW(), INTERVAL -2 DAY) "); |
|
sb.append("AND a.status IS NOT NULL AND a.status NOT IN ('success','overlapped','warning','re-executed') "); |
|
sb.append("GROUP BY scheduler_id,b.name,status "); |
|
sb.append("ORDER BY max(trigger_time) desc "); |
|
|
|
}else{ |
|
|
|
sb.append("select count(*) as num_failed,scheduler_id,b.name as name,status,max(trigger_time) as last_trigger from scheduler_queuelogs as a "); |
|
sb.append("LEFT JOIN scheduler as b on a.scheduler_id=b.id WHERE scheduler_id IN "); |
|
sb.append("( select scheduler_id FROM scheduler_tags WHERE tag_id IN "); |
|
sb.append(" (select id from tags WHERE tagname in (" + themeStr + ")) "); |
|
sb.append(") AND trigger_datetime>=DATE_ADD(NOW(), INTERVAL -2 DAY) "); |
|
sb.append("AND a.status IS NOT NULL AND a.status NOT IN ('success','overlapped','warning','re-executed') "); |
|
sb.append("GROUP BY scheduler_id,b.name,status "); |
|
sb.append("ORDER BY max(trigger_time) desc "); |
|
|
|
} |
|
PreparedStatement ps=this.connection().prepareStatement(sb.toString()); |
|
|
|
ResultSet rs=ps.executeQuery(); |
|
ArrayList al=new ArrayList(); |
|
while(rs.next()){ |
|
//al.add(new BasicRowProcessor().toMap(rs)); |
|
al.add(GeneralUtilDB.resultsetToMap(rs)); |
|
} |
|
|
|
return al; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public String getTop20IdNameByNameQuery(String keyword) throws Exception { |
|
return "SELECT concat(concat(cast(id as char(10)),'|'),name) from scheduler where name like '%"+keyword+"%' limit 20"; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public String getTop20IdNameByIdQuery(String keyword) throws Exception { |
|
return "SELECT concat(concat(cast(id as char(10)),'|'),name) from scheduler where cast(id as char(10)) like '%"+keyword+"%' limit 20"; |
|
} |
|
|
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public String getHistoryQueueLogsDateQuery(long scheduelr_id, String stat) { |
|
return " a.trigger_datetime>=DATE_ADD(NOW(), interval -2 day) AND a.scheduler_id="+scheduelr_id+" AND a.status='"+stat+"'"; |
|
} |
|
|
|
|
|
}
|
|
|