📄 workitemreledatadao.java
字号:
package cn.com.iaspec.workflow.engine.dao;
import java.sql.*;
import java.util.*;
import org.apache.log4j.*;
import cn.com.iaspec.workflow.db.*;
import cn.com.iaspec.workflow.*;
import cn.com.iaspec.workflow.vo.db.*;
import cn.com.iaspec.workflow.vo.workflow.ActivityVariable;
public class WorkItemReleDataDAO{
private static Logger logger=Logger.getLogger(WorkItemReleDataDAO.class);
public WorkItemReleDataDAO(){
}
/**
* 查询LaWorkItemRel信息
* @param info LaWorkItemRel
* @throws SQLException
* @return List
*/
public List query(WorkItemReleData data)
throws SQLException{
Connection conn=null;
Statement stm=null;
try{
conn=WorkflowDBConnectionManager.getInstance().getConnection();
stm=conn.createStatement();
String sql=" select * from workitemreledata ";
StringBuffer sbWhere=getQueryString(data);
sql=sql+sbWhere.toString();
logger.info("......query sql:"+sql);
ResultSet rs=stm.executeQuery(sql);
List list=this.resultsetToWorkItemReleData(rs);
return list;
}
finally{
WorkflowDBConnectionManager.getInstance().close(stm,false);
WorkflowDBConnectionManager.getInstance().close(conn);
}
}
/**
* 更新ActiInsReleData信息
* @param info LaWorkItemRel
* @throws SQLException
* @return List
*/
public void update(WorkItemReleData newData,WorkItemReleData oldData)
throws SQLException{
Connection conn=null;
Statement stm=null;
try{
conn=WorkflowDBConnectionManager.getInstance().getConnection();
stm=conn.createStatement();
String sql=" update workitemreledata set ";
StringBuffer sbWhere=getQueryString(oldData);
StringBuffer sbUpdata=getQueryString(newData);
if(sbWhere.length()<=0||sbUpdata.length()<=0){
throw new SQLException("更新数据为空!");
}
sql=sql+sbUpdata.toString()+sbWhere.toString();
logger.info("......query sql:"+sql);
stm.execute(sql);
}
finally{
WorkflowDBConnectionManager.getInstance().close(stm,false);
WorkflowDBConnectionManager.getInstance().close(conn);
}
}
/**
* 更新信息
* @param newDataList List
* @param oldDataList List
* @throws SQLException
*/
public void update(List newDataList,List oldDataList)
throws Exception{
Connection conn=null;
Statement stm=null;
try{
conn=WorkflowDBConnectionManager.getInstance().getConnection();
stm=conn.createStatement();
StringBuffer sbSql=new StringBuffer();
if(newDataList==null||oldDataList==null){
throw new SQLException("更新数据为空!");
}
for(int i=0;i<newDataList.size();i++){
WorkItemReleData newData=(WorkItemReleData)newDataList.get(i);
WorkItemReleData oldData=(WorkItemReleData)oldDataList.get(i);
String sql=" update workitemreledata set ";
StringBuffer sbWhere=this.getQueryString(oldData);
StringBuffer sbUpdata=this.getStrInsertValues(newData);
if(sbWhere.length()<=0||sbUpdata.length()<=0){
throw new SQLException("更新数据为空!");
}
sql=sql+sbUpdata.toString()+sbWhere.toString();
sbSql.append(sql);
sbSql.append(";");
}
//删除最后一个;号
if(sbSql.length()>0){
sbSql.delete(sbSql.length()-1,sbSql.length());
logger.info("......query sql:"+sbSql.toString());
stm.execute(sbSql.toString());
}
}
finally{
WorkflowDBConnectionManager.getInstance().close(stm,false);
WorkflowDBConnectionManager.getInstance().close(conn);
}
}
private List resultsetToWorkItemReleData(ResultSet rs)
throws SQLException{
List list=new ArrayList();
while(rs.next()){
WorkItemReleData data=new WorkItemReleData();
data.setWkrWkiId(rs.getLong("wkr_wkiid"));
data.setWkrClassPath(rs.getString("wkr_classpath"));
data.setWkrDirection(rs.getString("wkr_direction"));
data.setWkrGlobalName(rs.getString("wkr_globalname"));
data.setWkrId(rs.getLong("wkr_id"));
data.setWkrNumbValue(rs.getDouble("wkr_numbvalue"));
data.setWkrObjectValue(null);
data.setWkrRemark(rs.getString("wkr_remark"));
data.setWkrStringValue(rs.getString("wkr_stringvalue"));
data.setWkrVariableName(rs.getString("wkr_variablename"));
data.setWkrVariableType(rs.getInt("wkr_variabletype"));
list.add(data);
}
return list;
}
/**
* 取得查询条件
* @param rel LaWorkItemRel
* @return StringBuffer
*/
private StringBuffer getQueryString(WorkItemReleData data){
StringBuffer sb=new StringBuffer();
if(data!=null){
if(data.getWkrWkiId()!=WorkflowConstant.LONG_INIT_VALUE){
sb.append(" wkr_wkiid = "+data.getWkrWkiId()+" ");
sb.append(" and ");
}
if(data.getWkrClassPath()!=null&&!data.getWkrClassPath().equals("")){
sb.append(" wkr_classpath = '"+data.getWkrClassPath()+"' ");
sb.append(" and ");
}
if(data.getWkrDirection()!=null&&!data.getWkrDirection().equals("")){
sb.append(" wkr_direction = '"+data.getWkrDirection()+"' ");
sb.append(" and ");
}
if(data.getWkrGlobalName()!=null&&!data.getWkrGlobalName().equals("")){
sb.append(" wkr_globalname = '"+data.getWkrGlobalName()+"' ");
sb.append(" and ");
}
if(data.getWkrId()!=WorkflowConstant.LONG_INIT_VALUE){
sb.append(" wkr_id = "+data.getWkrId()+" ");
sb.append(" and ");
}
if(data.getWkrNumbValue()!=WorkflowConstant.DOUBLE_INIT_VALUE){
sb.append(" wkr_numbvalue = "+data.getWkrNumbValue()+" ");
sb.append(" and ");
}
if(data.getWkrRemark()!=null&&!data.getWkrRemark().equals("")){
sb.append(" wkr_remark = '"+data.getWkrRemark()+"' ");
sb.append(" and ");
}
if(data.getWkrStringValue()!=null&&!data.getWkrStringValue().equals("")){
sb.append(" wkr_stringvalue = '"+data.getWkrStringValue()+"' ");
sb.append(" and ");
}
if(data.getWkrVariableName()!=null&&!data.getWkrVariableName().equals("")){
sb.append(" wkr_variablename = '"+data.getWkrVariableName()+"' ");
sb.append(" and ");
}
if(data.getWkrVariableType()!=WorkflowConstant.INT_INIT_VALUE){
sb.append(" wkr_variabletype = "+data.getWkrVariableType()+" ");
sb.append(" and ");
}
}
if(sb.length()>0){
//增加查询条件关键字
sb.insert(0," where ");
//去除最后一个" AND "操作符
sb.delete(sb.length()-5,sb.length());
}
return sb;
}
/**
* 根据data取得update语句
* @param data ActiInsReleData
* @throws Exception
* @return StringBuffer
*/
private StringBuffer getStrInsertValues(WorkItemReleData data)
throws Exception{
StringBuffer sbSQL=new StringBuffer();
if(data.getWkrWkiId()!=WorkflowConstant.LONG_INIT_VALUE){
sbSQL.append("wkr_wkiid =");
sbSQL.append(data.getWkrWkiId());
sbSQL.append(",");
}
if(data.getWkrClassPath()!=null&&!data.getWkrClassPath().equals("")){
sbSQL.append("wkr_classpath ='");
sbSQL.append(data.getWkrClassPath());
sbSQL.append("',");
}
if(data.getWkrDirection()!=null&&!data.getWkrDirection().equals("")){
sbSQL.append("wkr_direction ='");
sbSQL.append(data.getWkrDirection());
sbSQL.append("',");
}
if(data.getWkrGlobalName()!=null&&!data.getWkrDirection().equals("")){
sbSQL.append("wkr_globalname ='");
sbSQL.append(data.getWkrGlobalName());
sbSQL.append("',");
}
if(data.getWkrId()!=WorkflowConstant.LONG_INIT_VALUE){
sbSQL.append("wkr_id =");
sbSQL.append(data.getWkrId());
sbSQL.append(",");
}
if(data.getWkrNumbValue()!=WorkflowConstant.DOUBLE_INIT_VALUE){
sbSQL.append("wkr_numbvalue =");
sbSQL.append(data.getWkrNumbValue());
sbSQL.append(",");
}
if(data.getWkrRemark()!=null&&!data.getWkrRemark().equals("")){
sbSQL.append("wkr_remark ='");
sbSQL.append(data.getWkrRemark());
sbSQL.append("',");
}
if(data.getWkrStringValue()!=null&&!data.getWkrStringValue().equals("")){
sbSQL.append("wkr_stringvalue ='");
sbSQL.append(data.getWkrStringValue());
sbSQL.append("',");
}
if(data.getWkrVariableName()!=null&&!data.getWkrVariableName().equals("")){
sbSQL.append("wkr_variablename ='");
sbSQL.append(data.getWkrVariableName());
sbSQL.append("',");
}
if(data.getWkrVariableType()!=WorkflowConstant.INT_INIT_VALUE){
sbSQL.append("wkr_variabletype =");
sbSQL.append(data.getWkrNumbValue());
sbSQL.append(",");
}
//删除最后一个逗号
if(sbSQL.length()>0){
sbSQL.delete(sbSQL.length()-1,sbSQL.length());
}
return sbSQL;
}
public void updateWKIReleData(List variableList,long actiInstId)throws Exception{
ActivityVariable variableInst = null,variableDef = null;
String updateField = null;
ActiInsReleDataDAO actiReleDao = new ActiInsReleDataDAO();
if (variableList!=null&&variableList.size()>0){
for(int i=0;i<variableList.size();i++){
variableInst=(ActivityVariable)variableList.get(i);
if (variableInst==null)
continue;
variableDef=actiReleDao.getActiInstVar(actiInstId,
variableInst.getAttributeName());
if (variableDef==null)
continue;
//变量是不映射
if(variableDef.getDirection()==3){
updateField=this.buildSql(variableDef.attributeType);
if(updateField!=null){
doUpdate(updateField,variableInst.getStringValue(),
variableInst.getAttributeName(),actiInstId);
}
else{
logger.info("变量 "+variableInst.getAttributeName()+
" 的值是对象类型,赋值操作不成功!");
}
}
}
}
}
private void doUpdate(String updateField,String updateValue,String variableName,long actiInstId)
throws SQLException{
StringBuffer sql = new StringBuffer("update workitemReledata ")
.append("set #update_field# = ? ")
.append("where wkr_wkiid In (Select wki_id From workitem Where wki_atiid = ?) and wkr_variableName = ?");
Connection conn = null;
PreparedStatement ptmt = null;
try{
sql.replace(sql.indexOf("#update_field#"),
sql.indexOf("#update_field#")+"#update_field#".length(),updateField);
conn=WorkflowDBConnectionManager.getInstance().getConnection();
ptmt = conn.prepareStatement(sql.toString());
ptmt.setString(1,updateValue);
ptmt.setLong(2,actiInstId);
ptmt.setString(3,variableName);
ptmt.execute();
}
finally{
WorkflowDBConnectionManager.getInstance().close(ptmt,false);
WorkflowDBConnectionManager.getInstance().close(conn);
}
}
private String buildSql(int valueType){
String updateField = null;
switch(valueType){
case 1:
case 2:
case 3:
case 5:
case 6:
updateField = "wkr_numbValue";
break;
case 4:
updateField = "wkr_stringValue";
break;
default:
return null;
}
return updateField;
}
public static void main(String[] args){
StringBuffer sql = new StringBuffer("update workitemReledata ")
.append("set #update_field# = ? ")
.append("where wkr_atiid = ? and wkr_variableName = ?");
sql.replace(sql.indexOf("#update_field#"),
sql.indexOf("#update_field#")+"#update_field#".length(),"field");
System.out.println(sql);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -