⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objectbase.java

📁 创建中间企业对象层
💻 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 + -