dbbc0949fac47d7ab665b04ecc795230a8d26511.svn-base 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. package cn.com.goldenwater.dcproj.utils.export;
  2. import java.text.SimpleDateFormat;
  3. import java.util.ArrayList;
  4. import java.util.Iterator;
  5. public class DBRow extends ArrayList {
  6. public DBRow() {
  7. }
  8. public DBRow(int size) {
  9. super(size);
  10. }
  11. public DataField getField(String fieldName) {
  12. DataField field = null;
  13. int i = 0;
  14. do {
  15. if (i >= size()) {
  16. break;
  17. }
  18. Object obj = get(i);
  19. DataField outField = (DataField) obj;
  20. if (outField.getFieldID().equalsIgnoreCase(fieldName)) {
  21. field = outField;
  22. break;
  23. }
  24. i++;
  25. } while (true);
  26. return field;
  27. }
  28. public DataField getField(String tableID, String fieldName) {
  29. DataField field = null;
  30. int i = 0;
  31. do {
  32. if (i >= size()) {
  33. break;
  34. }
  35. Object obj = get(i);
  36. DataField outField = (DataField) obj;
  37. if (outField.getTableID().trim().equalsIgnoreCase(tableID) && outField.getFieldID().trim().equalsIgnoreCase(fieldName)) {
  38. field = outField;
  39. break;
  40. }
  41. i++;
  42. } while (true);
  43. return field;
  44. }
  45. public int getFieldIndex(DataField field) {
  46. int index = -1;
  47. int length = size();
  48. int i = 0;
  49. do {
  50. if (i >= length) {
  51. break;
  52. }
  53. DataField field2 = (DataField) get(i);
  54. if (field2.getTableID().trim().equalsIgnoreCase(field.getTableID()) && field2.getFieldID().trim().equalsIgnoreCase(field.getFieldID())) {
  55. index = i;
  56. break;
  57. }
  58. i++;
  59. } while (true);
  60. return index;
  61. }
  62. public void removeField(DataField field) {
  63. int i = 0;
  64. do {
  65. if (i >= size()) {
  66. break;
  67. }
  68. Object obj = get(i);
  69. DataField outField = (DataField) obj;
  70. if (outField.getFieldID().trim().equalsIgnoreCase(field.getFieldID().trim()) && outField.getTableID().trim().equalsIgnoreCase(field.getTableID().trim())) {
  71. remove(i);
  72. break;
  73. }
  74. i++;
  75. } while (true);
  76. }
  77. public void resetField(DataField field) {
  78. removeField(field);
  79. add(field);
  80. }
  81. public void printRow() {
  82. DataField field = null;
  83. for (int i = 0; i < size(); i++) {
  84. Object obj = get(i);
  85. DataField outField = (DataField) obj;
  86. System.out.print("��" + outField.getTableID() + ".");
  87. System.out.print(outField.getFieldID() + "��=\t");
  88. System.out.print(outField.getValue() + "\t");
  89. }
  90. System.out.println();
  91. }
  92. public ArrayList getPrimaryKeys() {
  93. ArrayList keyFields = new ArrayList();
  94. Iterator fieldIterator = iterator();
  95. do {
  96. if (!fieldIterator.hasNext()) {
  97. break;
  98. }
  99. DataField field = (DataField) fieldIterator.next();
  100. if (field.isPrimaryKey()) {
  101. keyFields.add(field);
  102. }
  103. } while (true);
  104. return keyFields;
  105. }
  106. private SimpleDateFormat stimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  107. private SimpleDateFormat sdateFormat = new SimpleDateFormat("yyyy-MM-dd");
  108. @Override
  109. public String toString() {
  110. StringBuffer sb = new StringBuffer();
  111. sb.append("{");
  112. for (int i = 0; i < size(); i++) {
  113. Object obj = get(i);
  114. DataField outField = (DataField) obj;
  115. Object value = outField.getValue();
  116. Object _v;
  117. if (value != null && value instanceof java.sql.Timestamp) {
  118. _v = stimeFormat.format(new java.util.Date(((java.sql.Timestamp) value).getTime()));
  119. } else if (value != null && value instanceof java.sql.Date) {
  120. _v = sdateFormat.format(value);
  121. } else {
  122. _v = value;
  123. }
  124. if (i > 0) {
  125. sb.append(",");
  126. }
  127. sb.append("\"" + outField.getFieldID().toUpperCase() + "\":");
  128. /**
  129. * 这里要进行转换处理
  130. */
  131. String type = outField.getType();
  132. if ("NUMBER".equals(type)) {
  133. String _value = outField.getValue() != null ? ((String) outField.getValue()) : (String) outField.getValue();
  134. sb.append(_value);
  135. } else {
  136. String _value = _v != null ? ((String) _v).trim() : (String) _v;
  137. sb.append(_value);
  138. }
  139. }
  140. sb.append("}\r\n");
  141. return sb.toString();
  142. }
  143. public String toTextString(boolean bdata, String tabCode) {
  144. DataField field = null;
  145. StringBuffer sb = new StringBuffer();
  146. int k = 0;
  147. for (int i = 0; i < size(); i++) {
  148. if (i > k){ sb.append("\t");}
  149. Object obj = get(i);
  150. DataField outField = (DataField) obj;
  151. if ("ROWNUM_".equals(outField.getFieldID())) {
  152. k++;
  153. continue;
  154. }
  155. String value = (String) outField.getValue();
  156. if (!bdata) {sb.append((value == null) ? "" : value);}
  157. else {
  158. sb.append(loadDicValue(value, outField.getFieldID(), tabCode));
  159. }
  160. }
  161. return sb.toString();
  162. }
  163. public String toHeadString(boolean bdata, String tabCode) {
  164. DataField field = null;
  165. StringBuffer sb = new StringBuffer();
  166. int k = 0;
  167. for (int i = 0; i < size(); i++) {
  168. Object obj = get(i);
  169. DataField outField = (DataField) obj;
  170. //这里需要进行可读性质转换
  171. if ("ROWNUM_".equals(outField.getFieldID())) {
  172. k++;
  173. continue;
  174. }
  175. if (i > k) {
  176. sb.append("\t");
  177. }
  178. if (!bdata) {
  179. sb.append(outField.getFieldID());
  180. } else {
  181. sb.append(loadHeadValue(outField.getFieldID(), tabCode));
  182. }
  183. }
  184. return sb.toString();
  185. }
  186. /**
  187. * 根据tabcode FieldID value 得到字典的对应类型
  188. *
  189. * @param value
  190. * @param tabCode
  191. * @param FieldID
  192. * @return
  193. */
  194. public String loadDicValue(String value, String tabCode, String FieldID) {
  195. return ((value == null) ? "" : value);
  196. }
  197. public Object getValue(String FieldID) {
  198. return getField(FieldID) == null ? null : getField(FieldID).getValue();
  199. }
  200. public Object getStringValue(String FieldID) {
  201. return getField(FieldID) == null ? "" : (String) getField(FieldID).getValue();
  202. }
  203. /**
  204. * 根据tabcode FieldID 得到头部具体的显示字段
  205. *
  206. * @param FieldID
  207. * @param tabCode
  208. * @return
  209. */
  210. public String loadHeadValue(String FieldID, String tabCode) {
  211. return FieldID;
  212. }
  213. }