package frame.object.data;
|
|
import java.util.List;
|
import java.util.Set;
|
|
import frame.data.DataLink;
|
import frame.data.DataType;
|
import frame.data.Entity;
|
import frame.data.EntitySet;
|
import frame.data.IDataProvider;
|
import frame.data.Page;
|
import frame.expression.VariantRequestParams;
|
import frame.object.http.HttpObject;
|
import frame.persist.NamedSQL;
|
import frame.persist.Result;
|
import frame.persist.SQLCreator;
|
import frame.persist.SQLRunner;
|
|
|
public class DataObject extends HttpObject implements IDataProvider {
|
|
protected String dataName;
|
private String operator;
|
|
|
@Override
|
protected void publishMethod() {
|
addMethod("getDataSet");
|
addMethod("getSetByPage");
|
addMethod("getComboboxDataSet");
|
addMethod("procedure");
|
addMethod("getLine");
|
addMethod("newObject");
|
addMethod("addLine");
|
addMethod("deleteById");
|
addMethod("getCount");
|
}
|
|
public void getDataSet() throws Exception {
|
Filter filter = new Filter(onlineUser.getUserRight(), dataPool);
|
OrderBy orderBy = new OrderBy(dataPool);
|
|
EntitySet entitySet = new EntitySet(dataName);
|
entitySet.loadDB(filter, orderBy);
|
|
resultPool.addValue(entitySet);
|
}
|
|
public void getSetByPage() throws Exception {
|
Filter filter = new Filter(onlineUser.getUserRight(), dataPool);
|
OrderBy orderBy = new OrderBy(dataPool);
|
|
EntitySet entitySet = new EntitySet(dataName);
|
|
int totalCount = entitySet.getDBCount(filter);
|
Page page = new Page(totalCount, dataPool);
|
|
entitySet.loadDB(filter, page, orderBy);
|
|
resultPool.addValue("page", page);
|
resultPool.addValue(entitySet);
|
}
|
|
public void getComboboxDataSet() throws Exception {
|
Filter filter = new Filter(onlineUser.getUserRight(), dataPool);
|
OrderBy orderBy = new OrderBy(dataPool);
|
|
EntitySet entitySet = new EntitySet(dataName);
|
entitySet.loadDB(filter, orderBy);
|
|
resultPool.addValue(entitySet);
|
}
|
|
public void procedure() throws Exception {
|
DataType returnType = path.getReturnType();
|
|
NamedSQL namedSQL = NamedSQL.getInstance(operator);
|
namedSQL.setReturnType(returnType);
|
|
//set parameter for first time
|
Set<String> pageVariants = Page.getVarinatNameSet();
|
boolean reset = DataLink.moveOnConsumer(this, namedSQL, pageVariants);
|
|
//set parameter for second time
|
Page page = null;
|
if (reset) {
|
int count = getProcedureDataCount(namedSQL);
|
page = new Page(count, dataPool);
|
|
DataLink.moveOnProvider(page, namedSQL);
|
}
|
|
Result result = namedSQL.exec();
|
resultPool.addValue(result.getValue());
|
|
if (page != null) {
|
resultPool.addValue("page", page);
|
}
|
}
|
|
public void getLine() throws Exception {
|
Id id = getId();
|
|
if (id.isEmpty()) {
|
resultPool.error("empty id");
|
return;
|
}
|
|
Entity entity = new Entity(dataName);
|
entity.loadDB(id);
|
|
resultPool.addValue(entity);
|
}
|
|
public void newObject() throws Exception {
|
Entity entity = new Entity(dataName);
|
|
Initializer initializer = InitializerContainer.get(dataName);
|
initializer.exec(new VariantRequestParams(request), entity);
|
|
resultPool.addValue("line", entity);
|
}
|
|
public void addLine() throws Exception {
|
Entity entity = new Entity(dataName);
|
|
Initializer initializer = InitializerContainer.get(dataName);
|
initializer.exec(new VariantRequestParams(request), entity);
|
DataLink.moveOnConsumer(dataPool, entity);
|
|
entity.insertDB();
|
|
resultPool.addValue("line", entity);
|
}
|
|
public void saveLine() throws Exception {
|
Entity entity = new Entity(dataName);
|
DataLink.moveOnConsumer(dataPool, entity);
|
|
entity.saveDB();
|
}
|
|
public void deleteById() throws Exception {
|
Id id = getId();
|
|
if (id.isEmpty()) {
|
resultPool.error("empty id");
|
return;
|
}
|
|
Entity entity = new Entity(dataName);
|
entity.set("id", id.getValue());
|
|
entity.deleteDB();
|
}
|
|
public void getCount() throws Exception {
|
Filter filter = new Filter(onlineUser.getUserRight(), dataPool);
|
|
Entity entity = new Entity(dataName);
|
int count = entity.getDBCount(filter);
|
|
resultPool.addValue(count);
|
}
|
|
protected Filter getFilter() {
|
Filter filter = new Filter(onlineUser.getUserRight(), dataPool);
|
return filter;
|
}
|
|
protected OrderBy getOrderBy() {
|
OrderBy orderBy = new OrderBy(dataPool);
|
return orderBy;
|
}
|
|
protected Id getId() {
|
Id id = new Id(dataPool);
|
return id;
|
}
|
|
private int getProcedureDataCount(NamedSQL namedSQL) throws Exception {
|
String sql = namedSQL.getSQL();
|
sql = SQLCreator.deletePageLimit(sql);
|
sql = "select count(1) from (" + sql + ") tempTbl";
|
|
namedSQL = new NamedSQL("getCount", sql);
|
int count = SQLRunner.getInteger(namedSQL);
|
|
return count;
|
}
|
|
@Override
|
public List<String> getDataNameList() {
|
// TODO Auto-generated method stub
|
return null;
|
}
|
|
@Override
|
public boolean containsData(String name) {
|
// TODO Auto-generated method stub
|
return false;
|
}
|
|
@Override
|
public Object getDataValue(String name) {
|
// TODO Auto-generated method stub
|
return null;
|
}
|
|
}
|