package com.zt.generator.data;
|
|
import cn.hutool.core.date.DateUtil;
|
import org.apache.commons.lang.ArrayUtils;
|
import org.apache.commons.lang.StringUtils;
|
|
import java.io.Serializable;
|
import java.util.Date;
|
|
public class DataRow implements Serializable {
|
|
private boolean isWebMode;// 默认为false;
|
|
protected DataColumn[] columns;
|
|
protected Object[] values;
|
|
public DataRow(DataColumn[] types, Object[] values) {
|
columns = types;
|
this.values = values;
|
}
|
|
public Object get(int index) {
|
if (values == null) {
|
return null;
|
}
|
if (index < 0 || index >= columns.length) {
|
throw new RuntimeException("DataRow中没有指定的列:" + index);
|
}
|
return values[index];
|
}
|
|
public Object get(String columnName) {
|
if (columnName == null || columnName.equals("")) {
|
throw new RuntimeException("不能存取列名为空的列");
|
}
|
for (int i = 0; i < columns.length; i++) {
|
if (columns[i].getColumnName().equalsIgnoreCase(columnName)) {
|
return values[i];
|
}
|
}
|
// LogUtil.getLogger().warn("指定的列名没有找到:" + columnName);
|
throw new RuntimeException("指定的列名没有找到:" + columnName);
|
}
|
|
public String getString(int index) {
|
if (values[index] != null) {
|
if (!"".equals(values[index]) && this.columns[index].getColumnType() == DataColumn.DATETIME) {
|
if (StringUtils.isNotEmpty(this.columns[index].getDateFormat())) {
|
return DateUtil.format((Date) values[index], this.columns[index].getDateFormat());
|
} else {
|
// return DateUtil.toString((Date) values[index],
|
// "yyyy-MM-dd HH:mm:ss"); 根据目前系统,默认天与时间是分开的。
|
return DateUtil.format((Date) values[index], "yyyy-MM-dd");
|
}
|
}
|
String t = String.valueOf(values[index]).trim();
|
if (isWebMode) {
|
if (t == null || t.equals("")) {
|
return " ";
|
}
|
}
|
return t;
|
} else {
|
if (isWebMode) {
|
return " ";
|
}
|
return "";
|
}
|
}
|
|
public String getString(String columnName) {
|
if (columnName == null || columnName.equals("")) {
|
throw new RuntimeException("不能存取列名为空的列");
|
}
|
for (int i = 0; i < columns.length; i++) {
|
if (columns[i].getColumnName().equalsIgnoreCase(columnName)) {
|
return getString(i);
|
}
|
}
|
return "";
|
}
|
|
public Date getDate(int index) {
|
Object obj = get(index);
|
if (obj == null) {
|
return null;
|
}
|
if (obj instanceof Date) {
|
return (Date) obj;
|
} else {
|
return DateUtil.parseDateTime(obj.toString());
|
}
|
}
|
|
public Date getDate(String columnName) {
|
if (columnName == null || columnName.equals("")) {
|
throw new RuntimeException("不能存取列名为空的列");
|
}
|
for (int i = 0; i < columns.length; i++) {
|
if (columns[i].getColumnName().equalsIgnoreCase(columnName)) {
|
return getDate(i);
|
}
|
}
|
return null;
|
}
|
|
public double getDouble(int index) {
|
Object obj = get(index);
|
if (obj == null) {
|
return 0;
|
}
|
if (obj instanceof Number) {
|
return ((Number) obj).doubleValue();
|
} else {
|
String str = obj.toString();
|
if (StringUtils.isEmpty(str)) {
|
return 0;
|
}
|
return Double.parseDouble(str);
|
}
|
}
|
|
public double getDouble(String columnName) {
|
if (columnName == null || columnName.equals("")) {
|
throw new RuntimeException("不能存取列名为空的列");
|
}
|
for (int i = 0; i < columns.length; i++) {
|
if (columns[i].getColumnName().equalsIgnoreCase(columnName)) {
|
return getDouble(i);
|
}
|
}
|
return 0;
|
}
|
|
public long getLong(int index) {
|
Object obj = get(index);
|
if (obj == null) {
|
return 0;
|
}
|
if (obj instanceof Number) {
|
return ((Number) obj).longValue();
|
} else {
|
String str = obj.toString();
|
if (StringUtils.isEmpty(str)) {
|
return 0;
|
}
|
return Long.parseLong(str);
|
}
|
}
|
|
public long getLong(String columnName) {
|
if (columnName == null || columnName.equals("")) {
|
throw new RuntimeException("不能存取列名为空的列");
|
}
|
for (int i = 0; i < columns.length; i++) {
|
if (columns[i].getColumnName().equalsIgnoreCase(columnName)) {
|
return getLong(i);
|
}
|
}
|
return 0;
|
}
|
|
public int getInt(int index) {
|
Object obj = get(index);
|
if (obj == null) {
|
return 0;
|
}
|
if (obj instanceof Number) {
|
return ((Number) obj).intValue();
|
} else {
|
String str = obj.toString();
|
if (StringUtils.isEmpty(str)) {
|
return 0;
|
}
|
return Integer.parseInt(str);
|
}
|
}
|
|
public int getInt(String columnName) {
|
if (columnName == null || columnName.equals("")) {
|
throw new RuntimeException("不能存取列名为空的列");
|
}
|
for (int i = 0; i < columns.length; i++) {
|
if (columns[i].getColumnName().equalsIgnoreCase(columnName)) {
|
return getInt(i);
|
}
|
}
|
return 0;
|
}
|
|
public boolean isNull(int index) {
|
return get(index) == null;
|
}
|
|
public boolean isNull(String columnName) {
|
return get(columnName) == null;
|
}
|
|
public void set(int index, Object value) {
|
if (values == null) {
|
return;
|
}
|
if (index < 0 || index >= values.length) {
|
throw new RuntimeException("DataRow中没有指定的列:" + index);
|
}
|
values[index] = value;
|
}
|
|
public void set(String columnName, Object value) {
|
if (columnName == null || columnName.equals("")) {
|
throw new RuntimeException("不能存取列名为空的列");
|
}
|
for (int i = 0; i < values.length; i++) {
|
if (columns[i].getColumnName().equalsIgnoreCase(columnName)) {
|
values[i] = value;
|
return;
|
}
|
}
|
throw new RuntimeException("指定的列名没有找到:" + columnName);
|
|
}
|
|
public void set(int index, int value) {
|
set(index, new Integer(value));
|
}
|
|
public void set(String columnName, int value) {
|
set(columnName, new Integer(value));
|
}
|
|
public void set(String columnName, long value) {
|
set(columnName, new Long(value));
|
}
|
|
public void set(int index, long value) {
|
set(index, new Long(value));
|
}
|
|
public void set(String columnName, double value) {
|
set(columnName, new Double(value));
|
}
|
|
public void set(int index, double value) {
|
set(index, new Double(value));
|
}
|
|
public DataColumn getDataColumn(int index) {
|
if (index < 0 || index >= columns.length) {
|
throw new RuntimeException("DataRow中没有指定的列:" + index);
|
}
|
return columns[index];
|
}
|
|
public DataColumn getDataColumn(String columnName) {
|
if (columnName == null || columnName.equals("")) {
|
throw new RuntimeException("不能存取列名为空的列");
|
}
|
for (int i = 0; i < columns.length; i++) {
|
if (columns[i].getColumnName().equalsIgnoreCase(columnName)) {
|
return columns[i];
|
}
|
}
|
throw new RuntimeException("指定的列名没有找到");
|
}
|
|
// add by zhanglei 判断是否已包含列
|
public boolean containDataColumn(String columnName) {
|
if (columnName == null || columnName.equals("")) {
|
throw new RuntimeException("不能存取列名为空的列");
|
}
|
for (int i = 0; i < columns.length; i++) {
|
if (columns[i].getColumnName().equalsIgnoreCase(columnName)) {
|
return true;
|
}
|
}
|
return false;
|
}
|
|
public int getColumnCount() {
|
return columns.length;
|
}
|
|
public Object[] getDataValues() {
|
return values;
|
}
|
|
public DataColumn[] getDataColumns() {
|
return columns;
|
}
|
|
public void insertColumn(String columnName, Object columnValue) {
|
insertColumn(new DataColumn(columnName, DataColumn.STRING), columnValue);
|
}
|
|
public void insertColumn(String columnName, Object columnValue, int index) {
|
insertColumn(new DataColumn(columnName, DataColumn.STRING), columnValue, index);
|
}
|
|
public void insertColumn(DataColumn dc, Object columnValue) {
|
insertColumn(dc, columnValue, values.length);
|
}
|
|
public void insertColumn(DataColumn dc, Object columnValue, int index) {
|
if (index < 0 || index > columns.length) {
|
throw new RuntimeException(index + "超出范围,最大允许值为" + columns.length + "!");
|
}
|
columns = (DataColumn[]) ArrayUtils.add(columns, index, dc);
|
values = ArrayUtils.add(values, index, columnValue);
|
}
|
|
public boolean isWebMode() {
|
return isWebMode;
|
}
|
|
public void setWebMode(boolean isWebMode) {
|
this.isWebMode = isWebMode;
|
}
|
|
public void fill(Object[] values) {
|
if (values == null) {
|
return;
|
}
|
if (values.length != getColumnCount()) {
|
throw new RuntimeException("执行fill操作数组长度为" + values.length + ",要求的长度为" + getColumnCount() + "!");
|
}
|
for (int i = 0; i < values.length; i++) {
|
if (columns[i].ColumnType == DataColumn.DATETIME && !Date.class.isInstance(values[i])) {
|
throw new RuntimeException("第" + i + "列必须是Date对象!");
|
}
|
set(i, values[i]);
|
}
|
}
|
|
public String toString() {
|
StringBuffer sb = new StringBuffer();
|
for (int i = 0; i < this.columns.length; i++) {
|
if (i != 0) {
|
sb.append(",");
|
}
|
sb.append(this.columns[i].getColumnName());
|
sb.append(":");
|
sb.append(this.values[i]);
|
}
|
return sb.toString();
|
}
|
}
|