package com.nfwork.dbfound.model.bean; import java.sql.SQLException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.dom4j.Element; import com.nfwork.dbfound.core.Context; import com.nfwork.dbfound.exception.DBFoundPackageException; import com.nfwork.dbfound.model.ModelEngine; public class Execute extends SqlEntity { private static final long serialVersionUID = 7670352852092590245L; private String name = "_default";// execute对象的名字 private String modelName; private Sqls sqls; // execute对象对应的配置sql private Map<String, Param> params; // query对象对应参数 private String currentPath; @Override public void init(Element element) { params = new HashMap<String, Param>(); super.init(element); } @Override public void run() { if (getParent() instanceof Model) { Model model = (Model) getParent(); model.putExecute(name, this); } else { super.run(); } } public Execute cloneEntity() { Execute execute; try { execute = (Execute) this.clone(); } catch (CloneNotSupportedException e) { throw new DBFoundPackageException( "Execute克隆异常:" + e.getMessage(), e); } HashMap<String, Param> params = new HashMap<String, Param>(); for (Iterator iterator = this.params.entrySet().iterator(); iterator .hasNext();) { Map.Entry entry = (Map.Entry) iterator.next(); Param param = (Param) entry.getValue(); params.put(entry.getKey().toString(), (Param) param.cloneEntity()); } execute.setParams(params); if (sqls != null) execute.setSqls(sqls.cloneEntity()); return execute; } /** * 执行对应的sql集合 * @param context * @param provideName */ public void execute(Context context, String provideName){ if (sqls != null) { for (int i = 0; i < sqls.sqlList.size(); i++) { SqlEntity sql = sqls.sqlList.get(i); sql.execute(context, params, provideName); } } } @Override public void execute(Context context, Map<String, Param> params, String provideName){ String currentPath = context.getCurrentPath(); if (modelName == null) { modelName = context.getCurrentModel(); } ModelEngine.execute(context, modelName, name, currentPath); } /** * 设定参数 * * @param name * @param value */ public void setParam(String name, String value) { params.get(name).setValue(value); } /** * 得到参数值 * * @param name * @return */ public String getParam(String name) { return params.get(name).getStringValue(); } public String getName() { return name; } public void setName(String name) { this.name = name; } public Map<String, Param> getParams() { return params; } public Sqls getSqls() { return sqls; } public void setSqls(Sqls sqls) { this.sqls = sqls; } public void setParams(Map<String, Param> params) { this.params = params; } public String getCurrentPath() { return currentPath; } public void setCurrentPath(String currentPath) { this.currentPath = currentPath; } public String getModelName() { return modelName; } public void setModelName(String modelName) { this.modelName = modelName; } }