/** * @param idx * @return com.zt.db.RecordMetaData * @roseuid 3E5D800400FF */ public RecordMetaData getMetaData(int idx) { Collection cl = metadata.values(); for (Iterator it = cl.iterator(); it.hasNext(); ) { RecordMetaData rmd = (RecordMetaData) it.next(); if (rmd.getSeqno() == idx) return rmd; } return null; }
/** * @param columnIdx * @return String * @roseuid 3E5D88F000F9 */ public String getString(int columnIdx) { if (columnIdx < 0 || columnIdx > fieldCount || currentNo < 0 || currentNo > recordCount) return null; String name = (String) fieldNames.get(columnIdx); RecordMetaData rmd = (RecordMetaData) metadata.get(name); Record record = (Record) records.get(currentNo); Object value = record.get(columnIdx); if (value == null) return ""; if ((rmd.getType() == MetaDataTypes.CALENDAR_TP) || (rmd.getType() == MetaDataTypes.TIMESTAMP_TP)) { String[] DateStr = value.toString().trim().split("\\."); return DateStr[0]; } return value.toString().trim(); }
/** * 只有String和Boolean类型进行转换,其他类型均返回false * * @param columnIdx * @return boolean * @roseuid 3E5D883200BA */ public boolean getBoolean(int columnIdx) { if (columnIdx < 0 || columnIdx > fieldCount || currentNo < 0 || currentNo > recordCount) return false; String name = (String) fieldNames.get(columnIdx); RecordMetaData rmd = (RecordMetaData) metadata.get(name); if (rmd.getType() == MetaDataTypes.STRING_TP) { Record record = (Record) records.get(currentNo); String value = (String) record.get(columnIdx); if (value == null || value.equals("0")) return false; return true; } if (rmd.getType() == MetaDataTypes.BOOLEAN_TP) { Record record = (Record) records.get(currentNo); Boolean value = (Boolean) record.get(columnIdx); return value.booleanValue(); } else { return false; } }
/** * @param columnIdx * @return double * @roseuid 3E5D88C701AE */ public double getDouble(int columnIdx) { if (columnIdx < 0 || columnIdx > fieldCount || currentNo < 0 || currentNo > recordCount) return 0; String name = (String) fieldNames.get(columnIdx); RecordMetaData rmd = (RecordMetaData) metadata.get(name); Record record = (Record) records.get(currentNo); Object value = record.get(columnIdx); if (value == null) return 0; switch (rmd.getType()) { case MetaDataTypes.BIGDECIMAL_TP: return ((BigDecimal) value).doubleValue(); case MetaDataTypes.BIGINTEGER_TP: return ((BigInteger) value).doubleValue(); case MetaDataTypes.BOOLEAN_TP: Boolean b = (Boolean) value; if (b.booleanValue()) return 1; else return 0; case MetaDataTypes.DOUBLE_TP: return ((Double) value).doubleValue(); case MetaDataTypes.FLOAT_TP: return ((Float) value).doubleValue(); case MetaDataTypes.INTEGER_TP: return ((Integer) value).doubleValue(); case MetaDataTypes.LONG_TP: return ((Long) value).doubleValue(); case MetaDataTypes.SHORT_TP: return ((Short) value).doubleValue(); case MetaDataTypes.STRING_TP: try { return Double.parseDouble((String) value); } catch (Exception e) { return 0; } default: return 0; } // switch }
/** * @param columnIdx * @return java.util.Calendar * @roseuid 3E5D8903036D */ public java.util.Date getCalendar(int columnIdx) { if (columnIdx < 0 || columnIdx > fieldCount || currentNo < 0 || currentNo > recordCount) return null; String name = (String) fieldNames.get(columnIdx); RecordMetaData rmd = (RecordMetaData) metadata.get(name); Record record = (Record) records.get(currentNo); Object value = record.get(columnIdx); if (value == null) { return null; } else { } if ((rmd.getType() == MetaDataTypes.CALENDAR_TP) || (rmd.getType() == MetaDataTypes.TIMESTAMP_TP)) { java.util.Date d = (java.util.Date) value; // Calendar c=Calendar.getInstance(); // c.set(1900+d.getYear(),d.getMonth(),d.getDate()); return d; } else { return null; } }
/** performs a deep copy of all the attributes of the field */ public FieldMetaData deepCopy() { FieldMetaData fieldCopy = new ElementaryFieldMetaData(new String(myName), myRecord.getName()); fieldCopy.setIsFieldRedefine(isRedefine); fieldCopy.setDecimalPosition(decimalPosition); fieldCopy.setArraySize(myArraySize); fieldCopy.setSize(mySize); fieldCopy.setOffset(myOffset); fieldCopy.setType(myType); if (isFieldRedefine()) { fieldCopy.setFieldRedefined(myFieldRedefined.deepCopy()); } fieldCopy.setDependentFieldName(new String(myDependentFieldName)); fieldCopy.setIsSigned(isSigned); return fieldCopy; }
private void init(ResultSet rs, int resultNo) { if (rs == null) return; try { ResultSetMetaData rsmd = rs.getMetaData(); int count = rsmd.getColumnCount(); for (int i = 1; i <= count; i++) { String name = rsmd.getColumnName(i); if (name != null) name = name.toLowerCase(); String typeName = rsmd.getColumnClassName(i); String caption = rsmd.getColumnLabel(i); RecordMetaData rmd = new RecordMetaData(name, typeName, caption, i); metadata.put(name, rmd); fieldNames.add(name); } fieldCount = count; while (rs.next()) { ArrayList record = new ArrayList(); for (int i = 1; i <= count; i++) { String name = (String) fieldNames.get(i - 1); RecordMetaData rmd = (RecordMetaData) metadata.get(name); // System.out.println(rmd.getType()); switch (rmd.getType()) { case MetaDataTypes.BIGDECIMAL_TP: case MetaDataTypes.BIGINTEGER_TP: record.add(rs.getBigDecimal(i)); break; case MetaDataTypes.BOOLEAN_TP: record.add(new Boolean(rs.getBoolean(i))); break; case MetaDataTypes.BYTE_TP: record.add(new Byte(rs.getByte(i))); break; case MetaDataTypes.CALENDAR_TP: java.sql.Date d = rs.getDate(i); // Calendar calendar = GregorianCalendar.getInstance(); // System.out.println("aaaaaaaa"+d); // calendar.set(d.getYear()+1900,d.getMonth(),d.getDay()); record.add(d); break; case MetaDataTypes.CHARACTER_TP: break; case MetaDataTypes.DOUBLE_TP: record.add(new Double(rs.getDouble(i))); break; case MetaDataTypes.FLOAT_TP: record.add(new Float(rs.getFloat(i))); break; case MetaDataTypes.INTEGER_TP: record.add(new Integer(rs.getInt(i))); break; case MetaDataTypes.LONG_TP: record.add(new Long(rs.getLong(i))); break; case MetaDataTypes.SHORT_TP: record.add(new Short(rs.getShort(i))); break; case MetaDataTypes.STRING_TP: record.add(DBUtil.fromDB(rs.getString(i))); break; default: InputStream is = rs.getBinaryStream(i); record.add(is); } // switch } // for records.add(new Record(record)); recordCount++; if (recordCount == resultNo) { break; } } // while } catch (SQLException sqle) { sqle.printStackTrace(); } }
/** * 返回制定栏位的序号 * * @param name * @return int * @roseuid 3E5D8A2B00D4 */ public int findColumn(String name) { RecordMetaData rmd = (RecordMetaData) metadata.get(name); return rmd.getSeqno(); }