package org.anyline.entity;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.JsonNode;
import org.anyline.entity.adapter.KeyAdapter.KEY_CASE;
import org.anyline.entity.data.Column;
import org.anyline.util.*;
import org.anyline.util.regular.Regular;
import org.anyline.util.regular.RegularUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.*;
public class DataSet implements Collection<DataRow>, Serializable {
private static final long serialVersionUID = 6443551515441660101L;
protected static final Logger log = LoggerFactory.getLogger(DataSet.class);
private LinkedHashMap<String, Column> metadatas= null ; // 数据类型相关(需要开启ConfigTable.IS_AUTO_CHECK_METADATA)
private boolean result = true ; // 执行结果
private String code = null ; // code
private Exception exception = null ; // 异常
private String message = null ; // 提示信息
private PageNavi navi = null ; // 分页
private List<String> head = null ; // 表头
private List<DataRow> rows = null ; // 数据
private List<String> primaryKeys = null ; // 主键
private String datalink = null ; // 数据连接
private String dataSource = null ; // 数据源(表|视图|XML定义SQL)
private String schema = null ; //
private String table = null ; //
private long createTime = 0 ; // 创建时间
private long expires = -1 ; // 过期时间(毫秒) 从创建时刻计时expires毫秒后过期
private boolean isFromCache = false ; // 是否来自缓存
private boolean isAsc = false ; //
private boolean isDesc = false ; //
private Map<String, Object> tags = new HashMap<>() ; // 标签
/**
* 创建索引
*
* @param key key
* @return DataSet
* crateIndex("ID");
* crateIndex("ID:ASC");
*/
public DataSet creatIndex(String key) {
return this;
}
public DataSet() {
rows = new ArrayList<DataRow>();
createTime = System.currentTimeMillis();
}
public DataSet(List<Map<String, Object>> list) {
rows = new ArrayList<DataRow>();
if (null == list)
return;
for (Map<String, Object> map : list) {
DataRow row = new DataRow(map);
rows.add(row);
}
}
public static DataSet build(Collection<?> list, String ... fields) {
return parse(list, fields);
}
/**
* list解析成DataSet
* @param list list
* @param fields 如果list是二维数据
* fields 下标对应的属性(字段/key)名称 如"ID","CODE","NAME"
* 如果不输入则以下标作为DataRow的key 如row.put("0","100").put("1","A01").put("2","张三");
* 如果属性数量超出list长度,取null值存入DataRow
*
* 如果list是一组数组
* fileds对应条目的属性值 如果不输入 则以条目的属性作DataRow的key 如"USER_ID:id","USER_NM:name"
*
* @return DataSet
*/
public static DataSet parse(Collection<?> list, String ... fields) {
DataSet set = new DataSet();
if (null != list) {
for (Object obj : list) {
DataRow row = null;
if(obj instanceof Collection){
row = DataRow.parseList((Collection)obj, fields);
}else {
row = DataRow.parse(obj, fields);
}
set.add(row);
}
}
return set;
}
public static DataSet parseJson(KEY_CASE keyCase, String json) {
if (null != json) {
try {
return parseJson(keyCase, BeanUtil.JSON_MAPPER.readTree(json));
} catch (Exception e) {
}
}
return null;
}
public static DataSet parseJson(String json) {
return parseJson(KEY_CASE.CONFIG, json);
}
public static DataSet parseJson(KEY_CASE keyCase, JsonNode json) {
DataSet set = new DataSet();
if (null != json) {
if (json.isArray()) {
Iterator<JsonNode> items = json.iterator();
while (items.hasNext()) {
JsonNode item = items.next();
set.add(DataRow.parseJson(keyCase, item));
}
}
}
return set;
}
public static DataSet parseJson(JsonNode json) {
return parseJson(KEY_CASE.CONFIG, json);
}
public DataSet setMetadatas(LinkedHashMap metadatas){
this.metadatas = metadatas;
return this;
}
public LinkedHashMap<String, Column> getMetadatas(){
return metadatas;
}
public Column getMetadata(String column){
if(null == metadatas){
return null;
}
return metadatas.get(column.toUpperCase());
}
public String getMetadataTypeName(String column){
Column col = getMetadata(column);
if(null != col){
return col.getTypeName();
}
return null;
}
public Integer getMetadataType(String column){
Column col = getMetadata(column);
if(null != col){
return col.getType();
}
return null;
}
public String getMetadataFullType(String column){
Column col = getMetadata(column);
if(null != col){
return col.getFullType();
}
return null;
}
public String getMetadataClassName(String column){
Column col = getMetadata(column);
if(null != col){
return col.getClassName();
}
return null;
}
public DataSet Camel(){
for(DataRow row:rows){
row.Camel();
}
return this;
}
public DataSet camel(){
for(DataRow row:rows){
row.camel();
}
return this;
}
public DataSet setIsNew(boolean bol) {
for (DataRow row : rows) {
row.setIsNew(bol);
}
return this;
}
/**
* 移除每个条目中指定的key
*
* @param keys keys
* @return DataSet
*/
public DataSet remove(String... keys) {
for (DataRow row : rows) {
for (String key : keys) {
row.remove(key);
}
}
return this;
}
public DataSet trim(){
for(DataRow row:rows){
row.trim();
}
return this;
}
/**
* 添加主键
*
* @param applyItem 是否应用到集合中的DataRow 默认true
* @param pks pks
* @return DataSet
*/
public DataSet addPrimaryKey(boolean applyItem, String... pks) {
if (null != pks) {
List<String> list = new ArrayList<>();
for (String pk : pks) {
list.add(pk);
}
addPrimaryKey(applyItem, list);
}
return this;
}
public DataSet addPrimaryKey(String... pks) {
return addPrimaryKey(true, pks);
}
public DataSet addPrimaryKey(boolean applyItem, Collection<String> pks) {
if (null == primaryKeys) {
primaryKeys = new ArrayList<>();
}
if (null == pks) {
return this;
}
for (String pk : pks) {
if (BasicUtil.isEmpty(pk)) {
continue;
}
pk = key(pk);
if (!primaryKeys.contains
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
anyline-master.zip (624个子文件)
package.html 5KB
package.html 270B
package.html 266B
package.html 250B
package.html 241B
DataSet.java 155KB
DefaultService.java 104KB
DefaultJDBCAdapter.java 102KB
DefaultDao.java 98KB
DataRow.java 83KB
BeanUtil.java 69KB
ServiceProxy.java 60KB
Perl5Compiler.java 56KB
Perl5Matcher.java 56KB
WDocument.java 54KB
HtmlUtil.java 53KB
TDengineAdapter.java 52KB
OracleAdapter.java 51KB
Wtable.java 49KB
Perl5Util.java 47KB
SQLAdapter.java 46KB
ComponentTag.java 46KB
ExcelUtil.java 45KB
MySQLAdapter.java 44KB
MSSQLAdapter.java 44KB
PostgresqlAdapter.java 44KB
DMAdapter.java 44KB
DocxUtil.java 43KB
MariaAdapter.java 43KB
FileUtil.java 43KB
Neo4jAdapter.java 42KB
DateUtil.java 41KB
AnylineService.java 41KB
JDBCAdapter.java 40KB
DB2Adapter.java 39KB
DerbyAdapter.java 39KB
SQLiteAdapter.java 39KB
H2Adapter.java 38KB
WebUtil.java 35KB
AnimatedGifEncoder.java 35KB
AbstractBasicController.java 35KB
AmapClient.java 33KB
ConfigParser.java 31KB
AnylineController.java 30KB
AwkCompiler.java 28KB
Table.java 27KB
AwkMatcher.java 27KB
TableBuilder.java 26KB
BasicUtil.java 24KB
RegularUtil.java 24KB
Wtc.java 21KB
HttpUtil.java 21KB
DefaultPageNavi.java 21KB
Td.java 21KB
WechatPayUtil.java 21KB
Util.java 20KB
DESUtil.java 20KB
EasemobUtil.java 20KB
ConfigTable.java 19KB
Perl5Substitution.java 19KB
ImgUtil.java 19KB
PatternMatcherInput.java 18KB
XMLRun.java 18KB
SMSUtil.java 18KB
ThingsBoardClient.java 18KB
ClassUtil.java 18KB
HttpClient.java 17KB
MatchActionProcessor.java 16KB
Column.java 16KB
NumberUtil.java 16KB
AnylineAction.java 16KB
DefaultConfigStore.java 16KB
GISUtil.java 15KB
ZipUtil.java 15KB
BasicRun.java 15KB
Downloader.java 15KB
FTPUtil.java 15KB
GlobCompiler.java 15KB
AnylineDao.java 14KB
NumberTextUtil.java 14KB
SMUtil.java 13KB
Navi.java 13KB
IDCardUtil.java 13KB
SFTPUtil.java 13KB
PatternMatcher.java 13KB
AnylineConfig.java 13KB
MapUtil.java 12KB
Pop3Util.java 12KB
StyleParser.java 12KB
DownloadTask.java 12KB
MinioUtil.java 11KB
RSAUtil.java 11KB
DefaultSQLStore.java 11KB
WechatProgrameUtil.java 11KB
Wtr.java 11KB
WatermarkUtil.java 11KB
OSSUtil.java 11KB
WechatMPUtil.java 11KB
DefaultAdapter.java 11KB
COSUtil.java 10KB
共 624 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
m0_72731342
- 粉丝: 2
- 资源: 1832
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- threadmanager.cpp
- 腾讯云小程序 - 一站式开发与部署平台
- 基于JSP+Java+Servlet采用MVC模式开发的购物网站+源码(毕业设计&课程设计&项目开发)
- 基于组态王的升降式横移立体车库控制系统+源码(毕业设计&课程设计&项目开发)
- 基于python+Django和协同过滤算法的电影推荐系统+源码(毕业设计&课程设计&项目开发)
- 环境配置 vscode+jupyter
- 项目全部代码,还包含使用到的图片
- 项目全部代码,还包含使用到的图片
- 基于java+MapReduce实现基于物品协同过滤算法,即电影推荐系统+源码+开发文档+算法解析(毕业设计&课程设计&项目开发
- 节点编程(整合所有节点编程代码).7z
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功