/** * @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; } }
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(); }
/* (non-Javadoc) * @see org.xml.sax.XMLReader#parse(org.xml.sax.InputSource) */ public void parse(InputSource inputSource) throws IOException, SAXException { if (contentHandler == null) { throw new IllegalStateException("'contentHandler' not set. Cannot parse Record stream."); } if (execContext == null) { throw new IllegalStateException("'execContext' not set. Cannot parse Record stream."); } try { Reader recordReader; // Create the record parser.... RecordParser recordParser = parserFactory.newRecordParser(); recordParser.setRecordParserFactory(parserFactory); recordParser.setDataSource(inputSource); // Start the document and add the root "record-set" element... contentHandler.startDocument(); contentHandler.startElement( XMLConstants.NULL_NS_URI, rootElementName, StringUtils.EMPTY, EMPTY_ATTRIBS); // Output each of the CVS line entries... int lineNumber = 0; Record record = recordParser.nextRecord(); while (record != null) { lineNumber++; // First line is line "1" if (record != null) { List<Field> recordFields = record.getFields(); if (indent) { contentHandler.characters(INDENT_LF, 0, 1); contentHandler.characters(INDENTCHARS, 0, 1); } AttributesImpl attrs = new AttributesImpl(); attrs.addAttribute( XMLConstants.NULL_NS_URI, RECORD_NUMBER_ATTR, RECORD_NUMBER_ATTR, "xs:int", Integer.toString(lineNumber)); RecordMetaData recordMetaData = record.getRecordMetaData(); if (recordFields.size() < recordMetaData.getUnignoredFieldCount()) { attrs.addAttribute( XMLConstants.NULL_NS_URI, RECORD_TRUNCATED_ATTR, RECORD_TRUNCATED_ATTR, "xs:boolean", Boolean.TRUE.toString()); } contentHandler.startElement( XMLConstants.NULL_NS_URI, record.getName(), StringUtils.EMPTY, attrs); for (Field recordField : recordFields) { String fieldName = recordField.getName(); if (indent) { contentHandler.characters(INDENT_LF, 0, 1); contentHandler.characters(INDENTCHARS, 0, 2); } contentHandler.startElement( XMLConstants.NULL_NS_URI, fieldName, StringUtils.EMPTY, EMPTY_ATTRIBS); String value = recordField.getValue(); contentHandler.characters(value.toCharArray(), 0, value.length()); contentHandler.endElement(XMLConstants.NULL_NS_URI, fieldName, StringUtils.EMPTY); } if (indent) { contentHandler.characters(INDENT_LF, 0, 1); contentHandler.characters(INDENTCHARS, 0, 1); } contentHandler.endElement(XMLConstants.NULL_NS_URI, record.getName(), StringUtils.EMPTY); } record = recordParser.nextRecord(); } if (indent) { contentHandler.characters(INDENT_LF, 0, 1); } // Close out the "csv-set" root element and end the document.. contentHandler.endElement(XMLConstants.NULL_NS_URI, rootElementName, StringUtils.EMPTY); contentHandler.endDocument(); } finally { // These properties need to be reset for every execution (e.g. when reader is pooled). contentHandler = null; execContext = null; } }