📄 logimportdef.java
字号:
package cn.edu.buaa.ieguam.logmanage;
import cn.edu.buaa.ieguam.logmanage.MBean;
import cn.edu.buaa.ieguam.logmanage.MBeanInfoSetting;
import cn.edu.buaa.ieguam.logmanage.DBConnection;
import java.lang.StringBuffer;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;
/**
* 定义并实现日志导入的处理规则
* @author tongxiaodong
* Creation time:Apr 23, 2007 10:49:29 PM
*/
public class LogImportDef implements ReadTreeMBean {
private DBConnection dbConnect = null;
public LogImportDef()
{
}
public LogImportDef(DBConnection dbConnection)
{
this.dbConnect = dbConnection;
}
public void readMBean(Object fatherMBean, Object childMBean, String side) throws Exception
{
// TODO Auto-generated method stub
MBean child = (MBean)childMBean;
MBeanInfoSetting mbInfoSet = new MBeanInfoSetting();
String insertSql = null;
String querySql = null;
if(child.getDegree().equals("work")==false)
{
return;
}
/********* test *************/
//System.out.println("readMBean : testRead_2");
/*********************/
//根据childMBean节点的fkmMap关系,设置该节点相关字段的值
mbInfoSet.settingFkmForInsert(child);
//生成插入语句
insertSql = this.makeInsertSql(child);
/********* test *************/
//System.out.println("InsertSQL : testInsert_1");
System.out.println("InsertSQL : "+ insertSql);
/*********************/
//执行插入语句
if(insertSql == null)
{
return;
}
//this.dbConnect.connect();
//this.dbConnect.executeInsert(insertSql);
//this.dbConnect.closeConnec();
//判断是否有必要执行查询语句,若需要则生成查询语句,并查出刚插入记录的所有信息。
if(this.needQuery(child)==true)
{
/********* test *************/
//System.out.println("QuerySQL : testQuery_2");
//System.out.println("QuerySQL : "+ child.getPojoName());
/*********************/
querySql = this.makeQuerySql(child);
/********* test *************/
//System.out.println("QuerySQL : testQuery_1");
System.out.println("QuerySQL : "+ querySql);
/*********************/
//this.dbConnect.connect();
//this.dbConnect.executeQuery(querySql);
//this.dbConnect.closeConnec();
}
//根据查询信息,给pojo中所有空属性值赋值。
//ResultSet rst = this.dbConnect.getResultSet();
//this.settingColValue(rst,child);
}
/**
* 构造插入操作的SQL语句
* @return
*/
public String makeInsertSql(MBean mBean)
{
String insertSql = null;
StringBuffer intoStr = new StringBuffer();
StringBuffer valuesStr = new StringBuffer();
int size = 0;
int iNum = 0;
/********* test *************/
//System.out.println("makeInsertSQL : test_1");
/*********************/
List colInsertList = mBean.getColInsertList();
if(colInsertList == null)
{
return null;
}
String pojoCol = null;
size = colInsertList.size();
intoStr.append("Into "+mBean.getTableName()+" ");
valuesStr.append("Values( ");
for(iNum=0;iNum<size;iNum++)
{
pojoCol = (String)colInsertList.get(iNum);
/********* test *************/
//System.out.println("tong : test_1");
//System.out.println(pojoCol);
/*********************/
intoStr = intoStr.append(this.combineInto(mBean,pojoCol));
valuesStr = valuesStr.append(this.combineValues(mBean,pojoCol,","));
}
intoStr = this.deleTail(intoStr,",");
valuesStr = this.deleTail(valuesStr,",");
valuesStr.append(" );");
insertSql = "Insert "+intoStr.toString()+" "+valuesStr.toString();
return insertSql;
}
/**
* 构造查询操作的SQL语句
* @return
*/
public String makeQuerySql(MBean mBean)
{
String querySql = null;
StringBuffer selectStr = new StringBuffer();
StringBuffer fromStr = new StringBuffer();
StringBuffer whereStr = new StringBuffer();
List colQueryList = null;
Iterator iter = null;
String pojoCol = null;
colQueryList = mBean.getColInsertList();
if(colQueryList == null)
{
return null;
}
selectStr = selectStr.append("Select * ");
fromStr = fromStr.append(" From "+mBean.getTableName());
whereStr = whereStr.append(" Where ");
iter = colQueryList.iterator();
while(iter.hasNext())
{
pojoCol = (String) iter.next();
whereStr = whereStr.append(this.combineWhere(mBean,pojoCol,"And"));
}
whereStr = this.deleTail(whereStr,"And");
whereStr = whereStr.append(";");
querySql = selectStr.toString()+fromStr.toString()+whereStr.toString();
return querySql;
}
/**
* 构造SQL插入语句中的Into部分
* @return
*/
public StringBuffer combineInto(MBean mBean,String pojoCol)
{
StringBuffer into = new StringBuffer();
MBean.SubBean subBean = null;
subBean = (MBean.SubBean) mBean.getOneOrm(pojoCol);
if(subBean != null)
{
into.append(subBean.getTableCol()+",");
}
return into;
}
/**
* 构造SQL插入语句中的Values部分
* 参数linkSym是每个条件后的连接符号,例如“,”或“And”
* @return
*/
public StringBuffer combineValues(MBean mBean,String pojoCol,String linkSym)
{
StringBuffer values= new StringBuffer();
//应该从pojo中获取value值
if(mBean.getPojo().getColValue(pojoCol) != null)
{
if(mBean.getPojo().getColValue(pojoCol) instanceof String)//若value的值为String类型
{
values.append("'"+mBean.getPojo().getColValue(pojoCol)+"'"+linkSym);
}
else
{
values.append(mBean.getPojo().getColValue(pojoCol).toString()+linkSym);
}
}
else
{
values.append("null"+linkSym);
}
return values;
}
/**
* 构造SQL查询语句中的Where部分
* 参数linkSym是每个条件后的连接符号,例如“,”或“And”
* @return
*/
public StringBuffer combineWhere(MBean mBean,String pojoCol,String linkSym)
{
StringBuffer where= new StringBuffer();
MBean.SubBean subBean = null;
String tableCol = null;
subBean = (MBean.SubBean) mBean.getOneOrm(pojoCol);
tableCol = subBean.getTableCol();
//应该从pojo中获取value值
if(mBean.getPojo().getColValue(pojoCol) != null)
{
if(mBean.getPojo().getColValue(pojoCol) instanceof String)//若value的值为String类型
{
where.append(tableCol+"='"+mBean.getPojo().getColValue(pojoCol)+"' "+linkSym+" ");
}
else
{
where.append(tableCol+"="+mBean.getPojo().getColValue(pojoCol).toString()+" "+linkSym+" ");
}
}
else
{
where.append(tableCol+"=null "+linkSym+" ");
}
return where;
}
/**
* 判断此节点mBean是否查询操作
* @param mBean
* @return
*/
private boolean needQuery(MBean mBean)
{
MBean father = null;
boolean flag = false;
father = mBean.getFather();
if(father != null)
{
if(father.hasLeftChild(mBean)!= null)//若mBean为father的左子节点
{
flag = true;
}
}
if(mBean.hasRightChild())//若mBean存在右子节点
{
flag = true;
}
return flag;
}
/**
* 去掉strBufArg尾部与tail匹配的部分,用于去除Select、From字符串末尾的“,”,Where字符串末尾的“And”
* @param strBufArg
* @param tail
* @return
*/
public StringBuffer deleTail(StringBuffer strBufArg,String tail)
{
int iNum = 0;
int kNum = 0;
int flag = 0;
for(iNum=strBufArg.length()-1;iNum>=tail.length()-1;iNum--)
{
flag = iNum;
for(kNum=tail.length()-1;kNum>=0;kNum--)
{
if(strBufArg.charAt(flag) != tail.charAt(kNum))
{
break;
}
flag--;
}
if(kNum<0)//若找到与tail匹配的字串
{
break;
}
}
if(iNum>=tail.length()-1)//若找到与tail匹配的字串
{
strBufArg.delete(iNum-tail.length()+1,strBufArg.length());
}
return strBufArg;
}
/**
* 将ResultSet中的值赋给mBean的各属性
* @param resultSet
* @param mBean
* @throws SQLException
*/
private void settingColValue(ResultSet resultSet,MBean mBean) throws SQLException
{
if(resultSet==null || mBean==null)
{
return;
}
Iterator keyIter = null;
String pojoCol = null;
String tableCol = null;
MBean.SubBean subBean = null;
if(resultSet.next()==true)
{
keyIter = mBean.getOrmMap().keySet().iterator();
while(keyIter.hasNext())
{
pojoCol = (String)keyIter.next();
subBean = (MBean.SubBean)mBean.getOneOrm(pojoCol);
tableCol = subBean.getTableCol();
mBean.getPojo().setColValue(pojoCol,resultSet.getObject(tableCol));
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -