package com.nfwork.dbfound.model.bean;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;
import com.nfwork.dbfound.core.Context;
import com.nfwork.dbfound.db.dialect.SqlDialect;
import com.nfwork.dbfound.exception.DBFoundPackageException;
import com.nfwork.dbfound.util.DBUtil;
import com.nfwork.dbfound.util.ParseUtil;
public class WhenSql extends SqlEntity {
private static final long serialVersionUID = 1781803860305201223L;
private String when;
@Override
public void execute(Context context, Map<String, Param> params,
String provideName) {
// 执行相应操作
if (fitWhen(context, params, provideName)) {
for (SqlEntity sql : sqlList) {
sql.execute(context, params, provideName);
}
}
}
// 判定条件是否成立
public boolean fitWhen(Context context, Map<String, Param> params,
String provideName) {
Connection conn = context.getConn(provideName);
SqlDialect dialect = context.getConnDialect(provideName);
// 2012年8月14日22:01:04 添加静态参数设置
when = ParseUtil.parse(when, params);
// end 添加
String sql = dialect.getWhenSql(when);
String esql = getExecuteSql(sql, params);
// 方言处理
esql = dialect.parseSql(esql);
PreparedStatement statement = null;
ResultSet set = null;
int flag = 0;
try {
statement = conn.prepareStatement(esql);
// 参数设定
initParam(statement, sql, params);
set = statement.executeQuery();
if (set.next()) {
flag = set.getInt(1);
}
} catch (SQLException e) {
throw new DBFoundPackageException("whenSql执行异常:" + e.getMessage(),
e);
}
finally {
DBUtil.closeResultSet(set);
DBUtil.closeStatement(statement);
log(esql, params);
}
if (flag != 0) {
return true;
}
return false;
}
public String getWhen() {
return when;
}
public void setWhen(String when) {
this.when = when;
}
}