📄 objectbase.java
字号:
/**
* @author duke
* @version 1.2
* @date 2004-8-10 14:37
*/
package com.eshaper.appbuilder.objectbase;
import java.io.*;
import java.util.*;
import java.sql.*;
import com.eshaper.appbuilder.database.sql.QuerySql;
import com.eshaper.appbuilder.database.sql.SqlUtils;
import com.eshaper.appbuilder.database.utils.DBUtils;
import com.eshaper.appbuilder.objectbase.property.ObjectProperty;
import com.eshaper.appbuilder.objectbase.property.ObjectPropertys;
import com.eshaper.appbuilder.objectbase.property.ObjectPropertysUtils;
public class ObjectBase
{
public ObjectBase() throws Exception
{
initializePropertys();
init();
}
public ObjectBase(String name) throws Exception
{
setObjectName(name);
initializePropertys();
init();
}
protected void initializePropertys(){}
private void init() throws Exception
{
propertys = ObjectPropertysUtils.getPropertys(getObjectName());
opened=false;
}
public void setObjectName(String name)
{
object=name;
}
public String getObjectName()
{
return object;
}
public void setWhere(String value)
{
if (value!=null) where= value.trim();
}
public String getWhere()
{
return where;
}
public void setProperty(String value)
{
property= value;
}
public String getProperty()
{
return property;
}
public void setKey(String value)
{
key=value;
}
public String getKey()
{
return key;
}
public int getCount()
{
return count;
}
public void setPage(boolean value)
{
page=value;
}
public void setPageSize(int value)
{
pageSize=value;
}
public int getPageNo()
{
return pageNo;
}
public int getPageCount()
{
return pageCount;
}
public void setPageNo(int value)
{
pageNo=value;
}
public void list() throws Exception
{
String sqlstr="";
Connection conn = DBUtils.getConnection();
Statement stam = conn.createStatement();
ResultSet rs = stam.executeQuery(
SqlUtils.getQueryCountSql(object,"*","n",where).toString());
if (rs.next())
allCount=rs.getInt("n");
else
allCount=0;
rs.close();
//分页模式
if (page)
{
pageCount=allCount/pageSize+1;
if (pageNo<1) pageNo=1;
if (pageNo>pageCount) pageNo=pageCount;
QuerySql=SqlUtils.getPageSql(object,property,where,orderby,
pageNo,pageSize,"ID",-1);
}
else
{
QuerySql=SqlUtils.getQuerySql(object,property,where,orderby);
}
//System.out.println("QuerySql> "+QuerySql);
rs = stam.executeQuery(QuerySql.toString());
ResultSetMetaData rsmd = rs.getMetaData();
int countOfColumns = rsmd.getColumnCount();
while(rs.next())
{
ObjectDataRecord record = new ObjectDataRecord();
for(int i=1;i<=countOfColumns;i++)
{
String cname = rsmd.getColumnName(i);
String cvalue = rs.getString(i);
record.add(cname,cvalue);
}
dataRecords.addRecord(record);
count++;
}
rs.close();
stam.close();
DBUtils.freeConnection(conn);
opened=true;
}
public boolean next()
{
if(!opened) return false;
if(index<-1 || index>=(count-1)) return false;
index++;
return true;
}
public String value(String propertyStr) throws Exception
{
if (!opened) return "";
if(index<0 || index>=count) return "";
ObjectDataRecord record = dataRecords.getRecord(index);
String str=propertyStr;
String[] ary = str.split("[.]");
if(ary.length==1) return record.value(propertyStr);
str = record.value(ary[0]);
QuerySql sql = new QuerySql();
String uri=ary[0];
String uribef=uri;
for(int i=0;i<ary.length;i++)
{
if(i>0)
{
uribef=uri;
uri += "."+ary[i];
}
ObjectReferDataTable temptable = referDataTables.getTable(uri);
if(temptable==null)
{
if(i==0)
{
//增加数据表
temptable = new ObjectReferDataTable(uri);
sql=SqlUtils.getQuerySql(getObjectName(),uri,QuerySql.where); //time 10 少
Connection conn = DBUtils.getConnection();
Statement stmtTemp = conn.createStatement();
ResultSet rsTemp = stmtTemp.executeQuery(sql.toString());
int idx=0;
while (rsTemp.next()) //time 0-10
temptable.add(String.valueOf(idx++),rsTemp.getString(1));
rsTemp.close();
stmtTemp.close();
DBUtils.freeConnection(conn);
referDataTables.add(temptable);
propertysPool.put(uri,propertys);
}
if(i>0)
{
ObjectProperty propertyBef =
((ObjectPropertys)propertysPool.get(uribef)).getProperty(ary[i-1]);
if (propertyBef==null) return "";
ObjectReferDataTable temptablebef = referDataTables.getTable(uribef);
//增加数据表
temptable = new ObjectReferDataTable(uri);
sql=SqlUtils.getQuerySql(
propertyBef.getRefer(),
propertyBef.getReferProperty()+","+ary[i],
propertyBef.getReferProperty()+" IN "+temptablebef.getWhereInStr());
Connection conn = DBUtils.getConnection();
Statement stmtTemp = conn.createStatement();
ResultSet rsTemp = stmtTemp.executeQuery(sql.toString());
while (rsTemp.next()) //time 10
temptable.add(rsTemp.getString(1),rsTemp.getString(2));
rsTemp.close();
stmtTemp.close();
DBUtils.freeConnection(conn);
referDataTables.add(temptable);
ObjectPropertys propertysTemp =
ObjectPropertysUtils.getPropertys(propertyBef.getRefer());
propertysPool.put(uri,propertysTemp);
}
}
if(i==0)
str=temptable.value(index);
else
str=temptable.value(str);
}
return str;
}
QuerySql QuerySql = new QuerySql();
private String property="";
private String object="*";
private String where="";
private String orderby="";
private String key="";
private int allCount=0; //总记录数
private int count=0; //记录数
private boolean page=false; //分页模式
private int pageSize=10; //每页记录数
private int pageCount=1; //总页数
private int pageNo=1; //当前页
public int index = -1; //记录指针位置
private boolean opened=false;
private boolean connOpened=false;
private Hashtable propertysPool = new Hashtable();
private ObjectPropertys propertys = new ObjectPropertys();
private ObjectReferDataTables referDataTables = new ObjectReferDataTables();
private ObjectDataRecords dataRecords = new ObjectDataRecords();
public static void main(String args[]) throws Exception
{
System.out.println("id a b");
System.out.println("------------------------------------");
ObjectBase t = new ObjectBase("users");
t.setWhere("id>1 ");
t.setProperty("id,a,b");
t.setPage(true);
t.setPageNo(1);
t.list();
while (t.next())
System.out.println(t.index + "," +
t.value("id") +
" "+t.value("a")+
" "+t.value("b"));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -