package com.nfwork.dbfound.model.bean;
import java.util.HashMap;
import java.util.Map;
import org.dom4j.Element;
import com.nfwork.dbfound.core.Context;
import com.nfwork.dbfound.model.base.Entity;
public class Model extends Entity {
private static final long serialVersionUID = -1944232395561791090L;
private long fileLastModify;
private Map<String, Query> querys;
private Map<String, Execute> executes;
private Map<String, Param> params; // query对象对应参数
private String modelName;
private String connectionProvide = "_default";
private String fileLocation;
@Override
public void init(Element element) {
querys = new HashMap<String, Query>();
executes = new HashMap<String, Execute>();
params = new HashMap<String, Param>();
super.init(element);
}
@Override
public void run() {
}
public Model(String modelName) {
this.modelName = modelName;
}
public Query getQuery(String name) {
Query query = querys.get(name);
if (query == null) {
return null;
} else {
// 将model中全局的参数设置到query对象中
if (params.isEmpty() == false) {
Map<String, Param> map = new HashMap<String, Param>();
map.putAll(params);
map.putAll(query.getParams());
query.setParams(map);
}
return (Query) query.cloneEntity();
}
}
public Query getQuery(){
return getQuery("_default");
}
public void putQuery(String name, Query query) {
querys.put(name, query);
}
public void putExecute(String name, Execute execute) {
executes.put(name, execute);
}
public Execute getExecute(String name) {
Execute execute = executes.get(name);
if (execute == null) {
return null;
} else {
// 将model中全局的参数设置到execute对象中
if (params.isEmpty() == false) {
Map<String, Param> map = new HashMap<String, Param>();
map.putAll(params);
map.putAll(execute.getParams());
execute.setParams(map);
}
return (Execute) execute.cloneEntity();
}
}
public Execute getExecute(){
return getExecute("_default");
}
public String getModelName() {
return modelName;
}
public void setModelName(String modelName) {
this.modelName = modelName;
}
public Model() {
}
public Map<String, Param> getParams() {
return params;
}
public void setParams(Map<String, Param> params) {
this.params = params;
}
public String getConnectionProvide(Context context) {
// 支持动态设置数据来源
if (!"_default".equals(connectionProvide)) {
String value = context.getString(connectionProvide);
if (value != null) {
return value;
}
}
return connectionProvide;
}
public void setConnectionProvide(String connectionProvide) {
this.connectionProvide = connectionProvide;
}
public String getFileLocation() {
return fileLocation;
}
public void setFileLocation(String fileLocation) {
this.fileLocation = fileLocation;
}
public long getFileLastModify() {
return fileLastModify;
}
public void setFileLastModify(long fileLastModify) {
this.fileLastModify = fileLastModify;
}
}