package cn.com.goldenwater.dcproj.utils.export; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Iterator; public class DBRow extends ArrayList { public DBRow() { } public DBRow(int size) { super(size); } public DataField getField(String fieldName) { DataField field = null; int i = 0; do { if (i >= size()) { break; } Object obj = get(i); DataField outField = (DataField) obj; if (outField.getFieldID().equalsIgnoreCase(fieldName)) { field = outField; break; } i++; } while (true); return field; } public DataField getField(String tableID, String fieldName) { DataField field = null; int i = 0; do { if (i >= size()) { break; } Object obj = get(i); DataField outField = (DataField) obj; if (outField.getTableID().trim().equalsIgnoreCase(tableID) && outField.getFieldID().trim().equalsIgnoreCase(fieldName)) { field = outField; break; } i++; } while (true); return field; } public int getFieldIndex(DataField field) { int index = -1; int length = size(); int i = 0; do { if (i >= length) { break; } DataField field2 = (DataField) get(i); if (field2.getTableID().trim().equalsIgnoreCase(field.getTableID()) && field2.getFieldID().trim().equalsIgnoreCase(field.getFieldID())) { index = i; break; } i++; } while (true); return index; } public void removeField(DataField field) { int i = 0; do { if (i >= size()) { break; } Object obj = get(i); DataField outField = (DataField) obj; if (outField.getFieldID().trim().equalsIgnoreCase(field.getFieldID().trim()) && outField.getTableID().trim().equalsIgnoreCase(field.getTableID().trim())) { remove(i); break; } i++; } while (true); } public void resetField(DataField field) { removeField(field); add(field); } public void printRow() { DataField field = null; for (int i = 0; i < size(); i++) { Object obj = get(i); DataField outField = (DataField) obj; System.out.print("��" + outField.getTableID() + "."); System.out.print(outField.getFieldID() + "��=\t"); System.out.print(outField.getValue() + "\t"); } System.out.println(); } public ArrayList getPrimaryKeys() { ArrayList keyFields = new ArrayList(); Iterator fieldIterator = iterator(); do { if (!fieldIterator.hasNext()) { break; } DataField field = (DataField) fieldIterator.next(); if (field.isPrimaryKey()) { keyFields.add(field); } } while (true); return keyFields; } private SimpleDateFormat stimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private SimpleDateFormat sdateFormat = new SimpleDateFormat("yyyy-MM-dd"); @Override public String toString() { StringBuffer sb = new StringBuffer(); sb.append("{"); for (int i = 0; i < size(); i++) { Object obj = get(i); DataField outField = (DataField) obj; Object value = outField.getValue(); Object _v; if (value != null && value instanceof java.sql.Timestamp) { _v = stimeFormat.format(new java.util.Date(((java.sql.Timestamp) value).getTime())); } else if (value != null && value instanceof java.sql.Date) { _v = sdateFormat.format(value); } else { _v = value; } if (i > 0) { sb.append(","); } sb.append("\"" + outField.getFieldID().toUpperCase() + "\":"); /** * 这里要进行转换处理 */ String type = outField.getType(); if ("NUMBER".equals(type)) { String _value = outField.getValue() != null ? ((String) outField.getValue()) : (String) outField.getValue(); sb.append(_value); } else { String _value = _v != null ? ((String) _v).trim() : (String) _v; sb.append(_value); } } sb.append("}\r\n"); return sb.toString(); } public String toTextString(boolean bdata, String tabCode) { DataField field = null; StringBuffer sb = new StringBuffer(); int k = 0; for (int i = 0; i < size(); i++) { if (i > k){ sb.append("\t");} Object obj = get(i); DataField outField = (DataField) obj; if ("ROWNUM_".equals(outField.getFieldID())) { k++; continue; } String value = (String) outField.getValue(); if (!bdata) {sb.append((value == null) ? "" : value);} else { sb.append(loadDicValue(value, outField.getFieldID(), tabCode)); } } return sb.toString(); } public String toHeadString(boolean bdata, String tabCode) { DataField field = null; StringBuffer sb = new StringBuffer(); int k = 0; for (int i = 0; i < size(); i++) { Object obj = get(i); DataField outField = (DataField) obj; //这里需要进行可读性质转换 if ("ROWNUM_".equals(outField.getFieldID())) { k++; continue; } if (i > k) { sb.append("\t"); } if (!bdata) { sb.append(outField.getFieldID()); } else { sb.append(loadHeadValue(outField.getFieldID(), tabCode)); } } return sb.toString(); } /** * 根据tabcode FieldID value 得到字典的对应类型 * * @param value * @param tabCode * @param FieldID * @return */ public String loadDicValue(String value, String tabCode, String FieldID) { return ((value == null) ? "" : value); } public Object getValue(String FieldID) { return getField(FieldID) == null ? null : getField(FieldID).getValue(); } public Object getStringValue(String FieldID) { return getField(FieldID) == null ? "" : (String) getField(FieldID).getValue(); } /** * 根据tabcode FieldID 得到头部具体的显示字段 * * @param FieldID * @param tabCode * @return */ public String loadHeadValue(String FieldID, String tabCode) { return FieldID; } }