(转)在JAVA实现DataTable对象(三)——DataTable对象实现
1: import java.util.ArrayList;
2: import java.util.List;
3:
6:
7: public final class DataTable {
8:
9: private DataRowCollection rows; //用于保存DataRow的集合对象
10: private DataColumnCollection columns; //用于保存DataColumn的对象
11: private String tableName; //表名
12: private boolean readOnly = false;
13: private int nextRowIndex = 0;
14: private DataExpression dataExpression;
15: private Object tag;
16:
17: public DataTable() {
18: this.columns = new DataColumnCollection();
19: this.rows = new DataRowCollection();
20: this.rows.setColumns(columns);
21: dataExpression = new DataExpression(this);
22: }
23:
24: public DataTable(String dataTableName) {
25: this();
26: this.tableName = dataTableName;
27: }
28:
29: public int getTotalCount() {
30: return rows.size();
31: }
32:
33: public boolean isReadOnly() {
34: return this.readOnly;
35: }
36:
37: public void setReadOnly(boolean readOnly) {
38: this.readOnly = readOnly;
39: }
40:
41: /**
42: * 功能描述: 返回表名
43: * @param
44: */
45: public String getTableName() {
46: return this.tableName;
47: }
48:
49: /**
50: * 功能描述: 设置表名
51: * @param
52: */
53: public void setTableName(String tableName) {
54: this.tableName = tableName;
55: }
56:
57: /**
58: * 功能描述: 返回该表引用的封装类
59: * @param
60: * @return: DataRowCollection
61: */
62: public DataRowCollection getRows() {
63: return this.rows;
64: }
65:
66: public DataColumnCollection getColumns() {
67: return this.columns;
68: }
69:
70: /**
71: * 功能描述: 获取指定行指定列的数据
72: * @param
73: * @return: Object
74: */
75:
76: public Object getValue(int row,
77: String colName) {
78: return this.rows.get(row).getValue(colName);
79: }
80:
81: public Object getValue(int row,
82: int col) {
83: return this.rows.get(row).getValue(col);
84: }
85:
86: /**
87: * 功能描述: 为该表数据新建一行
88: * @param
89: * @return: DataRow
90: */
91: public DataRow newRow() throws Exception {
92: DataRow tempRow = new DataRow(this);
93: nextRowIndex = nextRowIndex < this.rows.size() ? this.rows.size()
94: : nextRowIndex;
95: tempRow.setColumns(this.columns);
96: tempRow.setRowIndex(nextRowIndex++);
97: return tempRow;
98: }
99:
100: public void setValue(int row,
101: int col,
102: Object value) {
103: this.rows.get(row).setValue(col, value);
104: }
105:
106: public void setValue(int row,
107: String colName,
108: Object value) {
109: this.rows.get(row).setValue(colName, value);
110: }
111:
112: /**
113: * @param tag
114: */
115: public void setTag(Object tag) {
116: this.tag = tag;
117: }
118:
119: /**
120: * @return the tag
121: */
122: public Object getTag() {
123: return tag;
124: }
125:
126: public DataColumn addColumn(String columnName,
127: int dataType) throws Exception {
128: return this.columns.addColumn(columnName, dataType);
129: }
130:
131: public boolean addRow(DataRow row) throws Exception {
132: if (row.getRowIndex() > this.rows.size())
133: row.setRowIndex(this.rows.size());
134: return this.rows.add(row);
135: }
136:
137: //以下为数据表扩展方法实现集合
138: /**
139: * 功能描述: 返回符合过滤条件的数据行集合,并返回
140: * @param
141: * @return: DataTable
142: */
143: public List<DataRow> select(String filterString) {
144: List<DataRow> rows = new ArrayList<DataRow>();
145: if (StringUtil.isNotEmpty(filterString)) {
146: for (Object row : this.rows) {
147: DataRow currentRow = (DataRow) row;
148: if ((Boolean) dataExpression.compute(filterString,
149: currentRow.getItemMap())) {
150: rows.add(currentRow);
151: }
152: }
153: return rows;
154: } else {
155: return this.rows;
156: }
157: }
158:
159: /**
160: * 功能描述: 对当前表进行查询 过滤,并返回指定列集合拼装的DataTable对象
161: * @param
162: * @return: DataTable
163: */
164: public DataTable select(String filterString,
165: String[] columns,
166: boolean distinct) throws Exception {
167: DataTable result = new DataTable();
168: List<DataRow> rows = select(filterString);
169: //构造表结构
170: for (String c : columns) {
171: DataColumn dc = this.columns.get(c);
172: DataColumn newDc = new DataColumn(dc.getColumnName(),
173: dc.getDataType());
174: newDc.setCaptionName(dc.getCaptionName());
175: result.columns.add(newDc);
176: }
177: //填充数据
178: for (DataRow r : rows) {
179: DataRow newRow = result.newRow();
180: newRow.copyFrom(r);
181: result.addRow(newRow);
182: }
183: return result;
184: }
185:
186: public DataTable select(String tableName,
187: String selectField,
188: String filterString,
189: String groupField) {
190: DataTable result = new DataTable();
191: //
192: return result;
193: }
194:
195: /**
196: * 功能描述: 根据指定表达式对符合过滤条件的数据进行计算
197: * @param
198: * @return: Object
199: * @author: James Cheung
200: * @version: 2.0
201: */
202: public Object compute(String expression,
203: String filter) {
204: return dataExpression.compute(expression, select(filter));
205: }
206:
207: public Object max(String columns,
208: String filter) {
209: return null;
210: }
211:
212: public Object min(String columns,
213: String filter) {
214: return null;
215: }
216:
217: public Object avg(String columns,
218: String filter) {
219: return null;
220: }
221:
222: public Object max(String columns,
223: String filter,
224: String groupBy) {
225: return null;
226: }
227:
228: public Object min(String columns,
229: String filter,
230: String groupBy) {
231: return null;
232: }
233:
234: public Object avg(String columns,
235: String filter,
236: String groupBy) {
237: return null;
238: }
239:
240: private List<DataColumn> getColumns(String colString) {
241: List<DataColumn> columns = new ArrayList<DataColumn>();
242:
243: return columns;
244: }
245: }
(转)在JAVA实现DataTable对象(三)——DataTable对象实现的更多相关文章
- ADO.NET对象之 DataTable
ADO.NET可以在与数据库断开连接的方式下通过DataSet或DataTable对象进行数据处理,当需要更新数据时才重新与数据源进行连接,并更新数据源. DataTable对象表示保存在本机内存中的 ...
- [原创]java WEB学习笔记47:Servlet 监听器简介, ServletContext(Application 对象), HttpSession (Session 对象), HttpServletRequest (request 对象) 监听器,利用listener理解 三个对象的生命周期
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- DataTable转换为Model实体对象
记得在学校的时候,接触得最多的就是SqlHelper,每次在读取的时候不管是DataTable还是DataReader转换为实体对象的时候是最恼火的,因为要写很多代码,而且没有什么意义.后面接触到了反 ...
- 简单的反射 把datatable 转换成list对象
/// <summary> /// 把datatable 转换成list对象 /// </summary> /// <typeparam name="T&quo ...
- JAVA之旅(三十)——打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码
JAVA之旅(三十)--打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码 三十篇了,又是一个 ...
- JAVA写JSON的三种方法,java对象转json数据
JAVA写JSON的三种方法,java对象转json数据 转自:http://www.xdx97.com/#/single?bid=5afe2ff9-8cd1-67cf-e7bc-437b74c07a ...
- 将DataTable转换为List<T>对象遇到问题:类型“System.Int64”的对象无法转换为类型“System.Int32”。
可以利用反射将DataTable转换为List<T>对象:原始链接http://www.jb51.net/article/67386.htm 但是该方法在DataTable里某个字段类型是 ...
- 【转】给DataTable和DataRow扩展方法,直接转换为对象集合或对象
/// <summary> /// 类 说 明:给DataTable和DataRow扩展方法,直接转换为对象集合或对象 /// 补充说明:此扩展类可以极大的简化操作,但是性能低下,大数据以 ...
- java并发编程实战:第三章----对象的共享
我们不仅仅希望防止某个线程使用某个状态时,另一个线程在修改它:我们还希望某个线程修改了某个状态后,其他线程能够看到状态的变化. 一.可见性 重排序:在没有同步的情况下,编译器.处理器可能对代码的执行顺 ...
- C# 数组转换为DataTable 的三个方法
C# 数组转换为DataTable 的三个方法 using System; using System.Data; namespace ArrayToDataTable { class ArrayT ...
随机推荐
- JAVA JDK配置
配置环境变量_jdk 1.右键选择[计算机]——[属性] ——[左上角的高级系统设置] 2.点击[环境变量] 3.在[系统变量]里点击[新建], 变量名填写JAVA_HOME,变量值填写JDK的安装路 ...
- UITableView性能的优化()
1.0 使用不透明视图 不透明的视图可以极大地提高渲染的速度. 2.0 不要重复创建不必要的cell 也就是我们常说的 循环利用机制 (建立缓冲池) 3.0 减少视图的数目 4.0 不要做多余的绘 ...
- eclipse git 忽略文件
ps:git中只有.gitignore文件需要先加索引再提交,其它的都可以直接提交
- WIN7系统 如何上传文件到FTP服务器中
https://zhidao.baidu.com/question/214644671.html
- js基础-运算符
100 * "20" 字符串转数字 5 * "ss" NAN "ss" 转数字返回NAN 任何数字与NAN +-*/ 都返回NAN 5/N ...
- c 语言的复杂声明
简化的声明语法: dcl: optional *'s direct-dcl direct-dcl: name (dcl) direct-dcl() direct-dcl[optional size] ...
- 获取url后面的参数的方法
1. function GetRequest() { var url = 'http://wwww.jb51.net/?q=js'; //获取url中"?"符后的字串 if (ur ...
- java第一课总结
转眼间开学了,我们也正式进入了大二.心里既有激动,又有些感慨,还带有一些担忧.激动的是我们褪去了大一的稚气成为了一名大二的学长了,第一次体会到了大学学长的感觉,心里很是激动.感慨的是我们又成长了一岁, ...
- 动态代理 JDK动态代理 CGLIB代理
代理模式:代理类和被代理类实现共同的接口(或继承),代理类中存有指向被代理类的索引,实际执行时通过调用代理类的方法.实际执行的是被代理类的方法. 而AOP,是通过动态代理实现的. 一.简单来说: JD ...
- Mesh.CombineMeshes
[Mesh.CombineMeshes] public void CombineMeshes(CombineInstance[] combine, bool mergeSubMeshes = true ...