From: <be...@us...> - 2006-10-17 20:27:15
|
Revision: 87 http://svn.sourceforge.net/pzfilereader/?rev=87&view=rev Author: benoitx Date: 2006-10-17 13:26:14 -0700 (Tue, 17 Oct 2006) Log Message: ----------- Avoid a loop with string addition. Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2006-10-17 20:09:22 UTC (rev 86) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2006-10-17 20:26:14 UTC (rev 87) @@ -246,27 +246,24 @@ this.handleShortLines = handleShortLines; - String sql = null; ResultSet rs = null; Statement stmt = null; - ColumnMetaData column = null; - boolean hasResults = false; - final List cmds = new ArrayList(); - try { columnMD = new LinkedHashMap(); stmt = con.createStatement(); - sql = "SELECT * FROM DATAFILE INNER JOIN DATASTRUCTURE ON " + "DATAFILE.DATAFILE_NO = DATASTRUCTURE.DATAFILE_NO " + String sql = "SELECT * FROM DATAFILE INNER JOIN DATASTRUCTURE ON " + "DATAFILE.DATAFILE_NO = DATASTRUCTURE.DATAFILE_NO " + "WHERE DATAFILE.DATAFILE_DESC = '" + dataDefinition + "' " + "ORDER BY DATASTRUCTURE_COL_ORDER"; rs = stmt.executeQuery(sql); + final List cmds = new ArrayList(); + boolean hasResults = false; // put array of columns together. These will be used to put together // the dataset when reading in the file while (rs.next()) { - column = new ColumnMetaData(); + ColumnMetaData column = new ColumnMetaData(); column.setColName(rs.getString("DATASTRUCTURE_COLUMN")); column.setColLength(rs.getInt("DATASTRUCTURE_LENGTH")); cmds.add(column); @@ -467,7 +464,6 @@ // read in the fixed length file and construct the DataSet object doFixedLengthFile(dataSourceStream); - } /* @@ -520,9 +516,7 @@ } else if (line.length() < recordLength) { if (handleShortLines) { // We can pad this line out - while (line.length() < recordLength) { - line = line + " "; - } + line += ParserUtils.padding(recordLength-line.length(), ' '); // log a warning addError("PADDED LINE TO CORRECT RECORD LENGTH", lineCount, 1); Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2006-10-17 20:09:22 UTC (rev 86) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2006-10-17 20:26:14 UTC (rev 87) @@ -647,9 +647,7 @@ if (!file.canRead()) { throw new FileNotFoundException("file cannot be read " + file.getAbsolutePath()); } - InputStream xmlStream = null; - xmlStream = new FileInputStream(file.getAbsolutePath()); - return xmlStream; + return new FileInputStream(file.getAbsolutePath()); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2006-10-17 21:40:07
|
Revision: 90 http://svn.sourceforge.net/pzfilereader/?rev=90&view=rev Author: benoitx Date: 2006-10-17 14:39:51 -0700 (Tue, 17 Oct 2006) Log Message: ----------- Reduce the scope of some variables that now can be declared 'final', this in turn helps the JVM to optimize the runtime code, as well as keeping the memory requirement to a minimum. Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/LargeDataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/Version.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ExcelTransformer.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/ResolveLocalDTD.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/LargeDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/LargeDataSet.java 2006-10-17 21:23:38 UTC (rev 89) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/LargeDataSet.java 2006-10-17 21:39:51 UTC (rev 90) @@ -325,13 +325,9 @@ // reads the next record and sets it into the row array private boolean readNextDelimited() throws Exception { String line = null; - Row row = null; - List columns = null; boolean processingMultiLine = false; boolean readRecordOk = false; String lineData = ""; - String mdkey = null; - List cmds = null; if (getRows() == null) { setRows(new ArrayList()); @@ -437,10 +433,10 @@ // ******************************************************************** // column values - columns = ParserUtils.splitLine(lineData, this.delimiter, this.qualifier); + final List columns = ParserUtils.splitLine(lineData, this.delimiter, this.qualifier); lineData = ""; - mdkey = ParserUtils.getCMDKeyForDelimitedFile(getColumnMD(), columns); - cmds = ParserUtils.getColumnMetaData(mdkey, getColumnMD()); + final String mdkey = ParserUtils.getCMDKeyForDelimitedFile(getColumnMD(), columns); + final List cmds = ParserUtils.getColumnMetaData(mdkey, getColumnMD()); this.columnCount = cmds.size(); // DEBUG @@ -466,7 +462,7 @@ } } - row = new Row(); + final Row row = new Row(); row.setCols(columns); row.setRowNumber(lineCount); // with the LargeDataSet we are never going to store more than 1 @@ -482,12 +478,7 @@ private boolean readNextFixedLen() throws Exception { String line = null; - Row row = null; - int recordLength = 0; - final int aLineCount = 0; - int recPosition = 0; - String mdkey = null; - List cmds = null; + final int aLineCount = 0; //+++++++++++++++++++++++++++++++++ Paul this does not seem incremented at all... boolean readRecordOk = false; if (getRows() == null) { @@ -510,9 +501,9 @@ continue; } - mdkey = ParserUtils.getCMDKeyForFixedLengthFile(getColumnMD(), line); - recordLength = ((Integer) recordLengths.get(mdkey)).intValue(); - cmds = ParserUtils.getColumnMetaData(mdkey, getColumnMD()); + final String mdkey = ParserUtils.getCMDKeyForFixedLengthFile(getColumnMD(), line); + final int recordLength = ((Integer) recordLengths.get(mdkey)).intValue(); + final List cmds = ParserUtils.getColumnMetaData(mdkey, getColumnMD()); // Incorrect record length on line log the error. Line will not be // included in the @@ -536,8 +527,8 @@ } } - recPosition = 1; - row = new Row(); + int recPosition = 1; + final Row row = new Row(); row.setMdkey(mdkey.equals("detail") ? null : mdkey); // try to // limit the // memory Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/Version.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/Version.java 2006-10-17 21:23:38 UTC (rev 89) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/Version.java 2006-10-17 21:39:51 UTC (rev 90) @@ -19,5 +19,5 @@ * Static class which stores the version of this pzFileReader */ public class Version { - public static final String VERSION = "2.2.2"; + public static final String VERSION = "2.3.0"; } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java 2006-10-17 21:23:38 UTC (rev 89) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java 2006-10-17 21:39:51 UTC (rev 90) @@ -54,18 +54,11 @@ * @return int */ public int compare(final Object arg0, final Object arg1) { - OrderColumn oc = null; - Comparable comp0 = null; - Comparable comp1 = null; - Row row0 = null; - Row row1 = null; - int result = 0; + final Row row0 = (Row) arg0; + final Row row1 = (Row) arg1; - row0 = (Row) arg0; - row1 = (Row) arg1; - for (int i = 0; i < orderbys.size(); i++) { - oc = (OrderColumn) orderbys.get(i); + final OrderColumn oc = (OrderColumn) orderbys.get(i); //null indicates "detail" record which is what the parser assigns to <column> 's setup outside of <record> elements //shift all non detail records to the bottom of the DataSet @@ -77,8 +70,8 @@ // convert to one type of case so the comparator does not take case // into account when sorting - comp0 = row0.getValue(ParserUtils.findColumn(oc.getColumnName(), columnMD)).toLowerCase(); - comp1 = row1.getValue(ParserUtils.findColumn(oc.getColumnName(), columnMD)).toLowerCase(); + final Comparable comp0 = row0.getValue(ParserUtils.findColumn(oc.getColumnName(), columnMD)).toLowerCase(); + final Comparable comp1 = row1.getValue(ParserUtils.findColumn(oc.getColumnName(), columnMD)).toLowerCase(); //+ BX will never be equal to null. // if (comp0 == null) { @@ -89,14 +82,13 @@ // } // multiply by the sort indicator to get a ASC or DESC result - result = comp0.compareTo(comp1) * oc.getSortIndicator(); + final int result = comp0.compareTo(comp1) * oc.getSortIndicator(); // if it is = 0 then the primary sort is done, and it can start the // secondary sorts if (result != 0) { return result; } - } return 0; Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ExcelTransformer.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ExcelTransformer.java 2006-10-17 21:23:38 UTC (rev 89) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ExcelTransformer.java 2006-10-17 21:39:51 UTC (rev 90) @@ -56,11 +56,6 @@ */ public void writeExcelFile() throws Exception { WritableWorkbook excelWrkBook = null; - WritableSheet wrkSheet = null; - final WritableFont times10ptBold = new WritableFont(WritableFont.TIMES, 10, WritableFont.BOLD); - final WritableFont times10pt = new WritableFont(WritableFont.TIMES, 10, WritableFont.NO_BOLD); - WritableCellFormat cellFormat = null; - Label xlsTextLbl = null; int curDsPointer = 0; try { @@ -72,12 +67,14 @@ ds.goTop(); excelWrkBook = Workbook.createWorkbook(xlsFile); - wrkSheet = excelWrkBook.createSheet("results", 0); + final WritableSheet wrkSheet = excelWrkBook.createSheet("results", 0); + final WritableFont times10ptBold = new WritableFont(WritableFont.TIMES, 10, WritableFont.BOLD); + final WritableFont times10pt = new WritableFont(WritableFont.TIMES, 10, WritableFont.NO_BOLD); // write the column headings in the spreadsheet - cellFormat = new WritableCellFormat(times10ptBold); + WritableCellFormat cellFormat = new WritableCellFormat(times10ptBold); for (int i = 0; i < columnNames.length; i++) { - xlsTextLbl = new Label(i, 0, columnNames[i], cellFormat); + final Label xlsTextLbl = new Label(i, 0, columnNames[i], cellFormat); wrkSheet.addCell(xlsTextLbl); } @@ -85,9 +82,8 @@ int row = 1; while (ds.next()) { for (int i = 0; i < columnNames.length; i++) { - xlsTextLbl = new Label(i, row, ds.getString(columnNames[i]), cellFormat); + final Label xlsTextLbl = new Label(i, row, ds.getString(columnNames[i]), cellFormat); wrkSheet.addCell(xlsTextLbl); - } row++; Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java 2006-10-17 21:23:38 UTC (rev 89) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java 2006-10-17 21:39:51 UTC (rev 90) @@ -59,9 +59,8 @@ * @deprecated */ public static Map parse(final File xmlFile) throws Exception { - Map mdIndex = null; final InputStream xmlStream = ParserUtils.createInputStream(xmlFile); - mdIndex = parse(xmlStream); + Map mdIndex = parse(xmlStream); if (mdIndex == null) { mdIndex = new LinkedHashMap(); } @@ -78,32 +77,26 @@ * @throws Exception */ public static Map parse(final InputStream xmlStream) throws Exception { - Document document = null; - SAXBuilder builder = null; - Element root = null; - List columns = null; - Element xmlElement = null; - final Map mdIndex = new LinkedHashMap(); // retain the same order - // specified in the mapping - - builder = new SAXBuilder(); + SAXBuilder builder = new SAXBuilder(); builder.setValidation(true); // handle the ability to pull DTD from Jar if needed builder.setEntityResolver(new ResolveLocalDTD()); - document = builder.build(xmlStream); + Document document = builder.build(xmlStream); - root = document.getRootElement(); + Element root = document.getRootElement(); // lets first get all of the columns that are declared directly under // the PZMAP - columns = getColumnChildren(root); + List columns = getColumnChildren(root); + final Map mdIndex = new LinkedHashMap(); // retain the same order + // specified in the mapping mdIndex.put("detail", columns); // always force detail to the top of the - // map no matter what + // map no matter what // get all of the "record" elements and the columns under them final Iterator recordDescriptors = root.getChildren("RECORD").iterator(); while (recordDescriptors.hasNext()) { - xmlElement = (Element) recordDescriptors.next(); + Element xmlElement = (Element) recordDescriptors.next(); // make sure the id attribute does not have a value of "detail" this // is the harcoded @@ -132,7 +125,6 @@ // helper to convert to integer private static int convertAttributeToInt(final Attribute attribute) { - if (attribute == null) { return 0; } @@ -143,19 +135,16 @@ } return 0; - } // helper to retrieve the "COLUMN" elements from the given parent private static List getColumnChildren(final Element parent) throws Exception { final List columnResults = new ArrayList(); final Iterator xmlChildren = parent.getChildren("COLUMN").iterator(); - Element xmlColumn = null; - ColumnMetaData cmd = null; while (xmlChildren.hasNext()) { - cmd = new ColumnMetaData(); - xmlColumn = (Element) xmlChildren.next(); + ColumnMetaData cmd = new ColumnMetaData(); + Element xmlColumn = (Element) xmlChildren.next(); // make sure the name attribute is present on the column if (xmlColumn.getAttributeValue("name") == null) { @@ -193,12 +182,12 @@ } private static void showDebug(final Map xmlResults) { - Iterator columns = null; final Iterator mapIt = xmlResults.keySet().iterator(); - XMLRecordElement xmlrecEle = null; +// XMLRecordElement xmlrecEle = null; while (mapIt.hasNext()) { - xmlrecEle = null; + XMLRecordElement xmlrecEle = null; final String recordID = (String) mapIt.next(); + Iterator columns = null; if (recordID.equals("detail")) { columns = ((List) xmlResults.get(recordID)).iterator(); } else { Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/ResolveLocalDTD.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/ResolveLocalDTD.java 2006-10-17 21:23:38 UTC (rev 89) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/ResolveLocalDTD.java 2006-10-17 21:39:51 UTC (rev 90) @@ -37,10 +37,8 @@ public InputSource resolveEntity(final String publicId, final String systemId) throws SAXException, IOException { try { if (!systemId.toLowerCase().startsWith("http://")) { - URL resource = null; + URL resource = getClass().getResource("pzfilereader.dtd"); - resource = getClass().getResource("pzfilereader.dtd"); - if (resource != null) { return new InputSource(resource.openStream()); } else { @@ -52,7 +50,6 @@ } // must be pulling from the web, stick with default implementation - return null; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-10-18 11:22:05
|
Revision: 95 http://svn.sourceforge.net/pzfilereader/?rev=95&view=rev Author: zepernick Date: 2006-10-18 04:21:58 -0700 (Wed, 18 Oct 2006) Log Message: ----------- javadoc package docs Added Paths: ----------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/package.html trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/package.html Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/package.html =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/package.html (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/package.html 2006-10-18 11:21:58 UTC (rev 95) @@ -0,0 +1,30 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<html> + <head> + <title>net.sf.pzfilereader.util package</title> + <!-- + Copyright 2006 Paul Zepernick + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software distributed + under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + CONDITIONS OF ANY KIND, either express or implied. See the License for + the specific language governing permissions and limitations under the License. + + --> + </head> + <body bgcolor="white"> + Provides utility methods that are used to perform parsing and transform DataSets into Excel. + <ul> + <li>Parse Line Of Delimited Text</li> + <li>Check For Multiline Delimted Record</li> + <li>Find Column Postion Based On The Column Name</li> + <li>Various Types Of Left Trims And Padding</li> + </ul> + </body> +</html> \ No newline at end of file Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/package.html =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/package.html (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/package.html 2006-10-18 11:21:58 UTC (rev 95) @@ -0,0 +1,24 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<html> + <head> + <title>net.sf.pzfilereader.xml package</title> + <!-- + Copyright 2006 Paul Zepernick + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software distributed + under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + CONDITIONS OF ANY KIND, either express or implied. See the License for + the specific language governing permissions and limitations under the License. + + --> + </head> + <body bgcolor="white"> + Provides classes for handling and parsing of the *.pzmap.xml files. + </body> +</html> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2006-10-26 14:04:53
|
Revision: 125 http://svn.sourceforge.net/pzfilereader/?rev=125&view=rev Author: benoitx Date: 2006-10-26 07:04:40 -0700 (Thu, 26 Oct 2006) Log Message: ----------- First cut at some interfaces. Paul, could you review and tell me if you think that they are well separated. I think that PZParserFactory.java and PZParser.java are ok but have I put everything that is required for the manipulation of a DataSet in IDataSet.java? Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java Added Paths: ----------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/IDataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2006-10-26 08:58:08 UTC (rev 124) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2006-10-26 14:04:40 UTC (rev 125) @@ -49,7 +49,7 @@ * @version 2.0.1 * @todo Ought to implement an interface for the access to data. */ -public class DataSet { +public class DataSet implements IDataSet { /** Array to hold the rows and their values in the text file */ private List rows = null; @@ -906,27 +906,22 @@ // row.setValue(ParserUtils.findColumn(columnName, cmds), value); } - /** - * Goes to the top of the data set. This will put the pointer one record - * before the first in the set. Next() will have to be called to get the - * first record after this call. + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#goTop() */ public void goTop() { pointer = -1; } - /** - * Goes to the last record in the dataset + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#goBottom() */ public void goBottom() { pointer = rows.size() - 1; } - /** - * Moves to the next record in the set. Returns true if move was a success, - * false if not - * - * @return boolean + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#next() */ public boolean next() { if (pointer < rows.size() && pointer + 1 != rows.size()) { @@ -936,11 +931,8 @@ return false; } - /** - * Moves back to the previous record in the set return true if move was a - * success, false if not - * - * @return boolean + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#previous() */ public boolean previous() { if (pointer <= 0) { @@ -950,13 +942,8 @@ return true; } - /** - * Returns the string value of a specified column - * - * @param column - - * Name of the column - * @exception NoSuchElementException - * @return String + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#getString(java.lang.String) */ public String getString(final String column) { final Row row = (Row) rows.get(pointer); @@ -983,14 +970,8 @@ return s; } - /** - * Returns the double value of a specified column - * - * @param column - - * Name of the column - * @exception NoSuchElementException - * @exception NumberFormatException - * @return double + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#getDouble(java.lang.String) */ public double getDouble(final String column) { final StringBuffer newString = new StringBuffer(); @@ -1023,14 +1004,8 @@ return Double.parseDouble(newString.toString()); } - /** - * Returns the interger value of a specified column - * - * @param column - - * Name of the column - * @exception NoSuchElementException - * @exception NumberFormatException - * @return double + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#getInt(java.lang.String) */ public int getInt(final String column) { final StringBuffer newString = new StringBuffer(); @@ -1063,15 +1038,8 @@ return Integer.parseInt(newString.toString()); } - /** - * Returns the date value of a specified column. This assumes the date is in - * yyyyMMdd. If your date is not in this format, see - * getDate(String,SimpleDateFormat) - * - * @param column - - * Name of the column - * @exception ParseException - * @return Date + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#getDate(java.lang.String) */ public Date getDate(final String column) throws ParseException { final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); @@ -1084,18 +1052,8 @@ return sdf.parse(s); } - /** - * Returns the date value of a specified column. This should be used if the - * date is NOT in yyyyMMdd format. The SimpleDateFormat object will specify - * what kind of format the date is in. - * - * @param column - - * Name of the column - * @param sdf - - * SimpleDateFormat of the date - * @exception ParseException - * @see java.text.SimpleDateFormat - * @return Date + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#getDate(java.lang.String, java.text.SimpleDateFormat) */ public Date getDate(final String column, final SimpleDateFormat sdf) throws ParseException { final Row row = (Row) rows.get(pointer); @@ -1107,11 +1065,8 @@ return sdf.parse(s); } - /** - * Returns a String array of column names in the DataSet. This will assume - * 'detail' <RECORD> ID. - * - * @return String[] + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#getColumns() */ public String[] getColumns() { ColumnMetaData column = null; @@ -1130,12 +1085,8 @@ return array; } - /** - * Returns a String array of column names in the DataSet for a given - * <RECORD> id - * - * @param recordID - * @return String[] + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#getColumns(java.lang.String) */ public String[] getColumns(final String recordID) { String[] array = null; @@ -1152,22 +1103,15 @@ return array; } - /** - * Returns the line number the pointer is on. These are the actual line - * numbers from the flat file, before any sorting. - * - * @exception NoSuchElementException - * @exception NumberFormatException - * @return int + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#getRowNo() */ public int getRowNo() { return ((Row) rows.get(pointer)).getRowNumber(); } - /** - * Returns A Collection Of DataErrors that happened during processing - * - * @return Vector + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#getErrors() */ public List getErrors() { return errors; @@ -1192,19 +1136,16 @@ errors.add(de); } - /** - * Removes a row from the dataset. Once the row is removed the pointer will - * be sitting on the record previous to the deleted row. + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#remove() */ public void remove() { rows.remove(pointer); pointer--; } - /** - * Returns the index the pointer is on for the array - * - * @return int + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#getIndex() */ public int getIndex() { return pointer; @@ -1240,21 +1181,15 @@ return rowID.equals(recordID); } - /** - * Returns the total number of rows parsed in from the file - * - * - * @return int - Row Count + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#getRowCount() */ public int getRowCount() { return rows.size(); } - /** - * Returns total number of records which contained a parse error in the - * file. - * - * @return int - Record Error Count + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#getErrorCount() */ public int getErrorCount() { if (getErrors() != null) { @@ -1264,14 +1199,8 @@ return 0; } - /** - * Returns true or false as to whether or not the line number contains an - * error. The import will skip the line if it contains an error and it will - * not be processed - * - * @param lineNo - - * int line number - * @return boolean + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#isAnError(int) */ public boolean isAnError(final int lineNo) { for (int i = 0; i < errors.size(); i++) { @@ -1282,17 +1211,8 @@ return false; } - /** - * Orders the data by column(s) specified. This will reposition the cursor - * to the top of the DataSet when executed. This is currently not supported - * when specying <RECORD> elements in the mapping. An exception will be - * thrown if this situation occurs - * - * @param ob - - * OrderBy object - * @exception Exception - * @see net.sf.pzfilereader.ordering.OrderBy - * @see net.sf.pzfilereader.ordering.OrderColumn + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#orderRows(net.sf.pzfilereader.ordering.OrderBy) */ public void orderRows(final OrderBy ob) throws Exception { // PZ try to handle other <records> by sending them to @@ -1404,6 +1324,9 @@ this.columnMD = columnMD; } + /* (non-Javadoc) + * @see net.sf.pzfilereader.IDataSet#getRows() + */ public List getRows() { return rows; } Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/IDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/IDataSet.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/IDataSet.java 2006-10-26 14:04:40 UTC (rev 125) @@ -0,0 +1,222 @@ +/* + * ObjectLab, http://www.objectlab.co.uk/open is supporting PZFileReader. + * + * Based in London, we are world leaders in the design and development + * of bespoke applications for the securities financing markets. + * + * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> + * ___ _ _ _ _ _ + * / _ \| |__ (_) ___ ___| |_| | __ _| |__ + * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ + * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | + * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ + * |__/ + * + * www.ObjectLab.co.uk + * + * $Id: ColorProvider.java 74 2006-10-24 22:19:05Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package net.sf.pzfilereader; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.NoSuchElementException; + +import net.sf.pzfilereader.ordering.OrderBy; + +public interface IDataSet { + + /** + * Goes to the top of the data set. This will put the pointer one record + * before the first in the set. Next() will have to be called to get the + * first record after this call. + */ + void goTop(); + + /** + * Goes to the last record in the dataset + */ + void goBottom(); + + /** + * Moves to the next record in the set. Returns true if move was a success, + * false if not + * + * @return boolean + */ + boolean next(); + + /** + * Moves back to the previous record in the set return true if move was a + * success, false if not + * + * @return boolean + */ + boolean previous(); + + /** + * Returns the string value of a specified column + * + * @param column - + * Name of the column + * @exception NoSuchElementException + * @return String + */ + String getString(final String column); + + /** + * Returns the double value of a specified column + * + * @param column - + * Name of the column + * @exception NoSuchElementException + * @exception NumberFormatException + * @return double + */ + double getDouble(final String column); + + /** + * Returns the interger value of a specified column + * + * @param column - + * Name of the column + * @exception NoSuchElementException + * @exception NumberFormatException + * @return double + */ + int getInt(final String column); + + /** + * Returns the date value of a specified column. This assumes the date is in + * yyyyMMdd. If your date is not in this format, see + * getDate(String,SimpleDateFormat) + * + * @param column - + * Name of the column + * @exception ParseException + * @return Date + */ + Date getDate(final String column) throws ParseException; + + /** + * Returns the date value of a specified column. This should be used if the + * date is NOT in yyyyMMdd format. The SimpleDateFormat object will specify + * what kind of format the date is in. + * + * @param column - + * Name of the column + * @param sdf - + * SimpleDateFormat of the date + * @exception ParseException + * @see java.text.SimpleDateFormat + * @return Date + */ + Date getDate(final String column, final SimpleDateFormat sdf) throws ParseException; + + /** + * Returns a String array of column names in the DataSet. This will assume + * 'detail' <RECORD> ID. + * + * @return String[] + */ + String[] getColumns(); + + /** + * Returns a String array of column names in the DataSet for a given + * <RECORD> id + * + * @param recordID + * @return String[] + */ + String[] getColumns(final String recordID); + + /** + * Returns the line number the pointer is on. These are the actual line + * numbers from the flat file, before any sorting. + * + * @exception NoSuchElementException + * @exception NumberFormatException + * @return int + */ + int getRowNo(); + + /** + * Returns A Collection Of DataErrors that happened during processing + * + * @return Vector + */ + List getErrors(); + + /** + * Removes a row from the dataset. Once the row is removed the pointer will + * be sitting on the record previous to the deleted row. + */ + void remove(); + + /** + * Returns the index the pointer is on for the array + * + * @return int + */ + int getIndex(); + + /** + * Returns the total number of rows parsed in from the file + * + * + * @return int - Row Count + */ + int getRowCount(); + + /** + * Returns total number of records which contained a parse error in the + * file. + * + * @return int - Record Error Count + */ + int getErrorCount(); + + /** + * Returns true or false as to whether or not the line number contains an + * error. The import will skip the line if it contains an error and it will + * not be processed + * + * @param lineNo - + * int line number + * @return boolean + */ + boolean isAnError(final int lineNo); + + /** + * Orders the data by column(s) specified. This will reposition the cursor + * to the top of the DataSet when executed. This is currently not supported + * when specying <RECORD> elements in the mapping. An exception will be + * thrown if this situation occurs + * + * @param ob - + * OrderBy object + * @exception Exception + * @see net.sf.pzfilereader.ordering.OrderBy + * @see net.sf.pzfilereader.ordering.OrderColumn + */ + void orderRows(final OrderBy ob) throws Exception; + + List getRows(); + +} \ No newline at end of file Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java 2006-10-26 14:04:40 UTC (rev 125) @@ -0,0 +1,64 @@ +/* + * ObjectLab, http://www.objectlab.co.uk/open is supporting PZFileReader. + * + * Based in London, we are world leaders in the design and development + * of bespoke applications for the securities financing markets. + * + * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> + * ___ _ _ _ _ _ + * / _ \| |__ (_) ___ ___| |_| | __ _| |__ + * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ + * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | + * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ + * |__/ + * + * www.ObjectLab.co.uk + * + * $Id: ColorProvider.java 74 2006-10-24 22:19:05Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package net.sf.pzfilereader; + +/** + * PZParser is ready to parse the data and return an object that can then be traversed. + * The default parser should NOT handle short lines, the user can change it prior to calling + * parse. + * + * @author Benoit Xhenseval + */ +public interface PZParser { + + /** + * Start the parsing + * @return the data set resulting from parsing + */ + IDataSet parse(); + + /** + * @return true, lines with less columns then the amount + * of column headers will be added as empty's instead of + * producing an error + */ + boolean isHandlingShortLines(); + + /** + * @param handleShortLines - + * when flaged as true, lines with less columns then the amount + * of column headers will be added as empty's instead of + * producing an error + */ + void setHandlingShortLines(final boolean handleShortLines); +} Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java 2006-10-26 14:04:40 UTC (rev 125) @@ -0,0 +1,231 @@ +/* + * ObjectLab, http://www.objectlab.co.uk/open is supporting PZFileReader. + * + * Based in London, we are world leaders in the design and development + * of bespoke applications for the securities financing markets. + * + * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> + * ___ _ _ _ _ _ + * / _ \| |__ (_) ___ ___| |_| | __ _| |__ + * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ + * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | + * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ + * |__/ + * + * www.ObjectLab.co.uk + * + * $Id: ColorProvider.java 74 2006-10-24 22:19:05Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package net.sf.pzfilereader; + +import java.io.File; +import java.io.InputStream; +import java.sql.Connection; + +/** + * Factory definitions for creating a PZParser (delimiter or fixed length). The + * creation of a parser will not start the parsing. It should not fail either + * (unless DB issues etc). + * + * @author Benoit Xhenseval + */ +public interface PZParserFactory { + /** + * Constructs a new DataSet using the database table file layout method. + * This is used for a FIXED LENGTH text file. + * + * The user is responsible for closing the DB connection. + * + * @param con - + * Connection to database with DATAFILE and DATASTRUCTURE tables, + * user is responsible for closing it. + * @param dataSource - + * Fixed length file to read from + * @param dataDefinition - + * Name of dataDefinition in the DATAFILE table DATAFILE_DESC + * column + */ + PZParser newParser(final Connection con, final File dataSource, final String dataDefinition); + + /** + * Constructs a new DataSet using the database table file layout method. + * This is used for a FIXED LENGTH text file. + * + * The user is responsible for closing the DB connection and InputStream. + * + * @param con - + * Connection to database with DATAFILE and DATASTRUCTURE tables, + * user is responsible for closing it. + * @param dataSourceStream - + * text file datasource InputStream to read from + * @param dataDefinition - + * Name of dataDefinition in the DATAFILE table DATAFILE_DESC + * column + */ + PZParser newParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition); + + /** + * Constructs a new DataSet using the PZMAP XML file layout method. This is + * used for a FIXED LENGTH text file. + * + * @param pzmapXML - + * Reference to the xml file holding the pzmap + * @param dataSource - + * Delimited file to read from + */ + PZParser newParser(final File pzmapXML, final File dataSource); + + /** + * New constructor based on InputStream. Constructs a new DataSet using the + * PZMAP XML file layout method. This is used for a FIXED LENGTH text file. + * + * The user is responsible for closing the InputStreams. + * + * @param pzmapXMLStream - + * Reference to the xml file InputStream holding the pzmap, user + * must close them after use. + * @param dataSourceStream - + * Delimited file InputStream to read from, user must close them + * after use. + */ + PZParser newParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream); + + // + // + // ------------------------------------------ DELIMITED ----------- + // + // + + /** + * New constructor based on InputStream. Constructs a new DataSet using the + * database table file layout method. This is used for a DELIMITED text + * file. esacpe sequence reference: \n newline <br> + * \t tab <br> + * \b backspace <br> + * \r return <br> + * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote + * + * The user is responsible for closing the DB connection and InputStream. + * + * @param con - + * Connection to database with DATAFILE and DATASTRUCTURE tables, + * user must close it when done. + * @param dataSourceStream - + * text file datasource InputStream to read from, user must close + * it when done. + * @param dataDefinition - + * Name of dataDefinition in the DATAFILE table DATAFILE_DESC + * column + * @param delimiter - + * Char the file is delimited By + * @param qualifier - + * Char text is qualified by + * @param ignoreFirstRecord - + * skips the first line that contains data in the file + */ + PZParser newParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition, + final char delimiter, final char qualifier, final boolean ignoreFirstRecord); + + /** + * Constructs a new DataSet using the PZMAP XML file layout method. This is + * used for a DELIMITED text file. esacpe sequence reference: \n newline + * <br> + * \t tab <br> + * \b backspace <br> + * \r return <br> + * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote + * + * @param pzmapXML - + * Reference to the xml file holding the pzmap + * @param dataSource - + * text file datasource to read from + * @param delimiter - + * Char the file is delimited By + * @param qualifier - + * Char text is qualified by + * @param ignoreFirstRecord - + * skips the first line that contains data in the file + */ + PZParser newParser(final File pzmapXML, final File dataSource, final char delimiter, final char qualifier, + final boolean ignoreFirstRecord); + + /** + * New constructor based on InputStream. Constructs a new DataSet using the + * PZMAP XML file layout method. This is used for a DELIMITED text file. + * esacpe sequence reference: \n newline <br> + * \t tab <br> + * \b backspace <br> + * \r return <br> + * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote + * + * The user is responsible for closing the InputStreams. + * + * @param pzmapXMLStream - + * Reference to the xml file holding the pzmap, user must close + * it when done. + * @param dataSourceStream - + * text file datasource InputStream to read from, user must close + * it when done. + * @param delimiter - + * Char the file is delimited By + * @param qualifier - + * Char text is qualified by + * @param ignoreFirstRecord - + * skips the first line that contains data in the file + */ + PZParser newParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream, final char delimiter, + final char qualifier, final boolean ignoreFirstRecord); + + /** + * Constructs a new DataSet using the first line of data found in the text + * file as the column names. This is used for a DELIMITED text file. esacpe + * sequence reference: \n newline <br> + * \t tab <br> + * \b backspace <br> + * \r return <br> + * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote + * + * @param dataSource - + * text file datasource to read from + * @param delimiter - + * Char the file is delimited By + * @param qualifier - + * Char text is qualified by + */ + PZParser newParser(final File dataSource, final char delimiter, final char qualifier); + + /** + * Constructs a new DataSet using the first line of data found in the text + * file as the column names. This is used for a DELIMITED text file. esacpe + * sequence reference: \n newline <br> + * \t tab <br> + * \b backspace <br> + * \r return <br> + * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote + * + * The user must close the InputStream when done (after parsing). + * + * @param dataSource - + * text file InputStream to read from, user must close it when + * done. + * @param delimiter - + * Char the file is delimited By + * @param qualifier - + * Char text is qualified by + */ + PZParser newParser(final InputStream dataSource, final char delimiter, final char qualifier); +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-11-25 17:18:09
|
Revision: 195 http://svn.sourceforge.net/pzfilereader/?rev=195&view=rev Author: zepernick Date: 2006-11-25 09:18:09 -0800 (Sat, 25 Nov 2006) Log Message: ----------- removing old code which is replaced by the IDataSet interface Removed Paths: ------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/LargeDataSet.java Deleted: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2006-11-25 17:17:35 UTC (rev 194) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2006-11-25 17:18:09 UTC (rev 195) @@ -1,1400 +0,0 @@ -/* - Copyright 2006 Paul Zepernick - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software distributed - under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - CONDITIONS OF ANY KIND, either express or implied. See the License for - the specific language governing permissions and limitations under the License. - */ -package net.sf.pzfilereader; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Properties; - -import net.sf.pzfilereader.ordering.OrderBy; -import net.sf.pzfilereader.structure.ColumnMetaData; -import net.sf.pzfilereader.structure.Row; -import net.sf.pzfilereader.util.ExcelTransformer; -import net.sf.pzfilereader.util.FixedWidthParserUtils; -import net.sf.pzfilereader.util.PZConstants; -import net.sf.pzfilereader.util.ParserUtils; -import net.sf.pzfilereader.xml.PZMapParser; - -/** - * This class parses a datafile and holds methods to scroll back and forth - * through the datafile along with methods to retreive values from columns. - * - * @author Paul Zepernick - * @version 2.0.1 - * @todo Ought to implement an interface for the access to data. - */ -public class DataSet implements IDataSet { - /** Array to hold the rows and their values in the text file */ - private List rows = null; - - /** Array of errors that have occured during processing */ - private List errors = null; - - /** Map of column metadata's */ - private Map columnMD = null; - - /** Pointer for the current row in the array we are on */ - private int pointer = -1; - - /** flag to indicate if data should be pulled as lower case */ - private boolean lowerCase = false; - - /** flag to inidicate if data should be pulled as upper case */ - private boolean upperCase = false; - - /** - * flag to indicate if a strict parse should be used when getting doubles - * and ints - */ - private boolean strictNumericParse = false; - - /** - * Flag to indicate that we can cope with lines shorter than the required - * lengh - */ - private boolean handleShortLines = false; - - /** - * empty constructor. THIS SHOULD ONLY BE USED FOR CUSTOM DataSet - * implementations. It provides NO parsing abilities - */ - public DataSet() { - } - - /** - * Constructs a new DataSet using the database table file layout method. - * This is used for a FIXED LENGTH text file. - * - * @param con - - * Connection to database with DATAFILE and DATASTRUCTURE tables - * @param dataSource - - * Fixed length file to read from - * @param dataDefinition - - * Name of dataDefinition in the DATAFILE table DATAFILE_DESC - * column - * @param handleShortLines - - * Pad lines out to fit the fixed length - * @exception Exception - */ - public DataSet(final Connection con, final File dataSource, final String dataDefinition, final boolean handleShortLines) - throws Exception { - this(con, ParserUtils.createInputStream(dataSource), dataDefinition, handleShortLines); - } - - /** - * Constructs a new DataSet using the database table file layout method. - * This is used for a FIXED LENGTH text file. - * - * @param con - - * Connection to database with DATAFILE and DATASTRUCTURE tables - * @param dataSourceStream - - * text file datasource InputStream to read from - * @param dataDefinition - - * Name of dataDefinition in the DATAFILE table DATAFILE_DESC - * column - * @param handleShortLines - - * Pad lines out to fit the fixed length - * @exception Exception - */ - public DataSet(final Connection con, final InputStream dataSourceStream, final String dataDefinition, - final boolean handleShortLines) throws Exception { - super(); - this.handleShortLines = handleShortLines; - - ResultSet rs = null; - PreparedStatement stmt = null; - - try { - columnMD = new LinkedHashMap(); - - final String sql = "SELECT * FROM DATAFILE INNER JOIN DATASTRUCTURE ON " - + "DATAFILE.DATAFILE_NO = DATASTRUCTURE.DATAFILE_NO " + "WHERE DATAFILE.DATAFILE_DESC = '" + dataDefinition - + "' " + "ORDER BY DATASTRUCTURE_COL_ORDER"; - - stmt = con.prepareStatement(sql); // always use PreparedStatement - // as the DB can do clever - // things. - rs = stmt.executeQuery(); - - int recPosition = 1; - final List cmds = new ArrayList(); - // put array of columns together. These will be used to put together - // the dataset when reading in the file - while (rs.next()) { - - final ColumnMetaData column = new ColumnMetaData(); - column.setColName(rs.getString("DATASTRUCTURE_COLUMN")); - column.setColLength(rs.getInt("DATASTRUCTURE_LENGTH")); - column.setStartPosition(recPosition); - column.setEndPosition(recPosition + (rs.getInt("DATASTRUCTURE_LENGTH") - 1)); - recPosition += rs.getInt("DATASTRUCTURE_LENGTH"); - - cmds.add(column); - } - - columnMD.put(PZConstants.DETAIL_ID, cmds); - columnMD.put(PZConstants.COL_IDX, ParserUtils.buidColumnIndexMap(cmds)); - - if (cmds.isEmpty()) { - throw new FileNotFoundException("DATA DEFINITION CAN NOT BE FOUND IN THE DATABASE " + dataDefinition); - } - - // read in the fixed length file and construct the DataSet object - doFixedLengthFile(dataSourceStream); - - } finally { - if (rs != null) { - rs.close(); - } - if (stmt != null) { - stmt.close(); - } - } - - } - - /** - * Constructs a new DataSet using the database table file layout method. - * This is used for a DELIMITED text file. esacpe sequence reference: \n - * newline <br> - * \t tab <br> - * \b backspace <br> - * \r return <br> - * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote - * - * @param con - - * Connection to database with DATAFILE and DATASTRUCTURE tables - * @param dataSource - - * text file datasource to read from - * @param dataDefinition - - * Name of dataDefinition in the DATAFILE table DATAFILE_DESC - * column - * @param delimiter - - * Char the file is delimited By - * @param qualifier - - * Char text is qualified by - * @param ignoreFirstRecord - - * skips the first line that contains data in the file - * @param handleShortLines - - * Adds missing columns as empty's to the DataSet instead of - * logging them as an error - * @exception Exception - * @deprecated use the char version - */ - public DataSet(final Connection con, final File dataSource, final String dataDefinition, final String delimiter, - final String qualifier, final boolean ignoreFirstRecord, final boolean handleShortLines) throws Exception { - this(con, ParserUtils.createInputStream(dataSource), dataDefinition, delimiter, qualifier, ignoreFirstRecord, - handleShortLines); - } - - /** - * New constructor based on InputStream. Constructs a new DataSet using the - * database table file layout method. This is used for a DELIMITED text - * file. esacpe sequence reference: \n newline <br> - * \t tab <br> - * \b backspace <br> - * \r return <br> - * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote - * - * @param con - - * Connection to database with DATAFILE and DATASTRUCTURE tables - * @param dataSourceStream - - * text file datasource InputStream to read from - * @param dataDefinition - - * Name of dataDefinition in the DATAFILE table DATAFILE_DESC - * column - * @param delimiter - - * Char the file is delimited By - * @param qualifier - - * Char text is qualified by - * @param ignoreFirstRecord - - * skips the first line that contains data in the file - * @param handleShortLines - - * Adds missing columns as empty's to the DataSet instead of - * logging them as an error - * @exception Exception - * @deprecated qualifier and delimiters should only be char. - */ - public DataSet(final Connection con, final InputStream dataSourceStream, final String dataDefinition, final String delimiter, - final String qualifier, final boolean ignoreFirstRecord, final boolean handleShortLines) throws Exception { - this(con, dataSourceStream, dataDefinition, delimiter != null ? delimiter.charAt(0) : 0, qualifier != null ? qualifier - .charAt(0) : 0, ignoreFirstRecord, handleShortLines); - } - - /** - * New constructor based on InputStream. Constructs a new DataSet using the - * database table file layout method. This is used for a DELIMITED text - * file. esacpe sequence reference: \n newline <br> - * \t tab <br> - * \b backspace <br> - * \r return <br> - * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote - * - * @param con - - * Connection to database with DATAFILE and DATASTRUCTURE tables - * @param dataSourceStream - - * text file datasource InputStream to read from - * @param dataDefinition - - * Name of dataDefinition in the DATAFILE table DATAFILE_DESC - * column - * @param delimiter - - * Char the file is delimited By - * @param qualifier - - * Char text is qualified by - * @param ignoreFirstRecord - - * skips the first line that contains data in the file - * @param handleShortLines - - * Adds missing columns as empty's to the DataSet instead of - * logging them as an error - * @exception Exception - */ - public DataSet(final Connection con, final InputStream dataSourceStream, final String dataDefinition, final char delimiter, - final char qualifier, final boolean ignoreFirstRecord, final boolean handleShortLines) throws Exception { - super(); - - this.handleShortLines = handleShortLines; - - ResultSet rs = null; - PreparedStatement stmt = null; - try { - columnMD = new LinkedHashMap(); - - final String sql = "SELECT * FROM DATAFILE INNER JOIN DATASTRUCTURE ON " - + "DATAFILE.DATAFILE_NO = DATASTRUCTURE.DATAFILE_NO " + "WHERE DATAFILE.DATAFILE_DESC = '" + dataDefinition - + "' " + "ORDER BY DATASTRUCTURE_COL_ORDER"; - - stmt = con.prepareStatement(sql); - rs = stmt.executeQuery(); // always use PreparedStatement as the - // DB can do clever things. - - final List cmds = new ArrayList(); - boolean hasResults = false; - // put array of columns together. These will be used to put together - // the dataset when reading in the file - while (rs.next()) { - - final ColumnMetaData column = new ColumnMetaData(); - column.setColName(rs.getString("DATASTRUCTURE_COLUMN")); - column.setColLength(rs.getInt("DATASTRUCTURE_LENGTH")); - cmds.add(column); - - hasResults = true; - } - - columnMD.put(PZConstants.DETAIL_ID, cmds); - columnMD.put(PZConstants.COL_IDX, ParserUtils.buidColumnIndexMap(cmds)); - - if (!hasResults) { - throw new FileNotFoundException("DATA DEFINITION CAN NOT BE FOUND IN THE DATABASE " + dataDefinition); - } - - // read in the fixed length file and construct the DataSet object - doDelimitedFile(dataSourceStream, delimiter, qualifier, ignoreFirstRecord, false); - - } finally { - if (rs != null) { - rs.close(); - } - if (stmt != null) { - stmt.close(); - } - } - - } - - /** - * Constructs a new DataSet using the PZMAP XML file layout method. This is - * used for a DELIMITED text file. esacpe sequence reference: \n newline - * <br> - * \t tab <br> - * \b backspace <br> - * \r return <br> - * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote - * - * @param pzmapXML - - * Reference to the xml file holding the pzmap - * @param dataSource - - * text file datasource to read from - * @param delimiter - - * Char the file is delimited By - * @param qualifier - - * Char text is qualified by - * @param ignoreFirstRecord - - * skips the first line that contains data in the file - * @param handleShortLines - - * Adds missing columns as empty's to the DataSet instead of - * logging them as an error - * @exception Exception - * @deprecated use the char version - */ - public DataSet(final File pzmapXML, final File dataSource, final String delimiter, final String qualifier, - final boolean ignoreFirstRecord, final boolean handleShortLines) throws Exception { - this(ParserUtils.createInputStream(pzmapXML), ParserUtils.createInputStream(dataSource), delimiter, qualifier, - ignoreFirstRecord, handleShortLines); - } - - /** - * New constructor based on InputStream. Constructs a new DataSet using the - * PZMAP XML file layout method. This is used for a DELIMITED text file. - * esacpe sequence reference: \n newline <br> - * \t tab <br> - * \b backspace <br> - * \r return <br> - * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote - * - * @param pzmapXMLStream - - * Reference to the xml file holding the pzmap - * @param dataSourceStream - - * text file datasource InputStream to read from - * @param delimiter - - * Char the file is delimited By - * @param qualifier - - * Char text is qualified by - * @param ignoreFirstRecord - - * skips the first line that contains data in the file - * @param handleShortLines - - * Adds missing columns as empty's to the DataSet instead of - * logging them as an error - * @exception Exception - * @deprecated use the char version - */ - public DataSet(final InputStream pzmapXMLStream, final InputStream dataSourceStream, final String delimiter, - final String qualifier, final boolean ignoreFirstRecord, final boolean handleShortLines) throws Exception { - this(pzmapXMLStream, dataSourceStream, delimiter != null ? delimiter.charAt(0) : 0, qualifier != null ? qualifier - .charAt(0) : 0, ignoreFirstRecord, handleShortLines); - } - - /** - * Constructs a new DataSet using the PZMAP XML file layout method. This is - * used for a DELIMITED text file. esacpe sequence reference: \n newline - * <br> - * \t tab <br> - * \b backspace <br> - * \r return <br> - * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote - * - * @param pzmapXML - - * Reference to the xml file holding the pzmap - * @param dataSource - - * text file datasource to read from - * @param delimiter - - * Char the file is delimited By - * @param qualifier - - * Char text is qualified by - * @param ignoreFirstRecord - - * skips the first line that contains data in the file - * @param handleShortLines - - * Adds missing columns as empty's to the DataSet instead of - * logging them as an error - * @exception Exception - */ - public DataSet(final File pzmapXML, final File dataSource, final char delimiter, final char qualifier, - final boolean ignoreFirstRecord, final boolean handleShortLines) throws Exception { - this(ParserUtils.createInputStream(pzmapXML), ParserUtils.createInputStream(dataSource), delimiter, qualifier, - ignoreFirstRecord, handleShortLines); - } - - /** - * New constructor based on InputStream. Constructs a new DataSet using the - * PZMAP XML file layout method. This is used for a DELIMITED text file. - * esacpe sequence reference: \n newline <br> - * \t tab <br> - * \b backspace <br> - * \r return <br> - * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote - * - * @param pzmapXMLStream - - * Reference to the xml file holding the pzmap - * @param dataSourceStream - - * text file datasource InputStream to read from - * @param delimiter - - * Char the file is delimited By - * @param qualifier - - * Char text is qualified by - * @param ignoreFirstRecord - - * skips the first line that contains data in the file - * @param handleShortLines - - * Adds missing columns as empty's to the DataSet instead of - * logging them as an error - * @exception Exception - */ - public DataSet(final InputStream pzmapXMLStream, final InputStream dataSourceStream, final char delimiter, - final char qualifier, final boolean ignoreFirstRecord, final boolean handleShortLines) throws Exception { - - this.handleShortLines = handleShortLines; - columnMD = PZMapParser.parse(pzmapXMLStream); - - doDelimitedFile(dataSourceStream, delimiter, qualifier, ignoreFirstRecord, false); - } - - /** - * Constructs a new DataSet using the first line of data found in the text - * file as the column names. This is used for a DELIMITED text file. esacpe - * sequence reference: \n newline <br> - * \t tab <br> - * \b backspace <br> - * \r return <br> - * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote - * - * @param dataSource - - * text file datasource to read from - * @param delimiter - - * Char the file is delimited By - * @param qualifier - - * Char text is qualified by - * @param handleShortLines - - * when flaged as true, lines with less columns then the amount - * of column headers will be added as empty's instead of - * producing an error - * @exception Exception - * @deprecated - */ - public DataSet(final File dataSource, final String delimiter, final String qualifier, final boolean handleShortLines) - throws Exception { - this(dataSource, delimiter != null ? delimiter.charAt(0) : 0, qualifier != null ? qualifier.charAt(0) : 0, - handleShortLines); - } - - /** - * Constructs a new DataSet using the first line of data found in the text - * file as the column names. This is used for a DELIMITED text file. esacpe - * sequence reference: \n newline <br> - * \t tab <br> - * \b backspace <br> - * \r return <br> - * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote - * - * @param dataSource - - * text file datasource to read from - * @param delimiter - - * Char the file is delimited By - * @param qualifier - - * Char text is qualified by - * @param handleShortLines - - * when flaged as true, lines with less columns then the amount - * of column headers will be added as empty's instead of - * producing an error - * @exception Exception - */ - public DataSet(final File dataSource, final char delimiter, final char qualifier, final boolean handleShortLines) - throws Exception { - - this.handleShortLines = handleShortLines; - InputStream dataSourceStream = null; - - try { - dataSourceStream = ParserUtils.createInputStream(dataSource); - doDelimitedFile(dataSourceStream, delimiter, qualifier, false, true); - } finally { - if (dataSourceStream != null) { - dataSourceStream.close(); - } - } - } - - /** - * Constructs a new DataSet using the first line of data found in the text - * file as the column names. This is used for a DELIMITED text file. esacpe - * sequence reference: \n newline <br> - * \t tab <br> - * \b backspace <br> - * \r return <br> - * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote - * - * @param dataSource - - * text file InputStream to read from - * @param delimiter - - * Char the file is delimited By - * @param qualifier - - * Char text is qualified by - * @param handleShortLines - - * when flaged as true, lines with less columns then the amount - * of column headers will be added as empty's instead of - * producing an error - * @exception Exception - * @deprecated - */ - public DataSet(final InputStream dataSource, final String delimiter, final String qualifier, final boolean handleShortLines) - throws Exception { - this(dataSource, delimiter != null ? delimiter.charAt(0) : 0, qualifier != null ? qualifier.charAt(0) : 0, - handleShortLines); - } - - /** - * Constructs a new DataSet using the first line of data found in the text - * file as the column names. This is used for a DELIMITED text file. esacpe - * sequence reference: \n newline <br> - * \t tab <br> - * \b backspace <br> - * \r return <br> - * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote - * - * @param dataSource - - * text file InputStream to read from - * @param delimiter - - * Char the file is delimited By - * @param qualifier - - * Char text is qualified by - * @param handleShortLines - - * when flaged as true, lines with less columns then the amount - * of column headers will be added as empty's instead of - * producing an error - * @exception Exception - */ - public DataSet(final InputStream dataSource, final char delimiter, final char qualifier, final boolean handleShortLines) - throws Exception { - - this.handleShortLines = handleShortLines; - - try { - doDelimitedFile(dataSource, delimiter, qualifier, false, true); - } finally { - if (dataSource != null) { - dataSource.close(); - } - } - } - - /** - * Constructs a new DataSet using the PZMAP XML file layout method. This is - * used for a FIXED LENGTH text file. - * - * @param pzmapXML - - * Reference to the xml file holding the pzmap - * @param dataSource - - * Delimited file to read from - * @param handleShortLines - - * Pad lines out to fit the fixed length - * @exception Exception - */ - public DataSet(final File pzmapXML, final File dataSource, final boolean handleShortLines) throws Exception { - this(ParserUtils.createInputStream(pzmapXML), ParserUtils.createInputStream(dataSource), handleShortLines); - } - - /** - * New constructor based on InputStream. Constructs a new DataSet using the - * PZMAP XML file layout method. This is used for a FIXED LENGTH text file. - * - * @param pzmapXMLStream - - * Reference to the xml file InputStream holding the pzmap - * @param dataSourceStream - - * Delimited file InputStream to read from - * @param handleShortLines - - * Pad lines out to fit the fixed length - * @exception Exception - */ - public DataSet(final InputStream pzmapXMLStream, final InputStream dataSourceStream, final boolean handleShortLines) - throws Exception { - - this.handleShortLines = handleShortLines; - - columnMD = PZMapParser.parse(pzmapXMLStream); - - // read in the fixed length file and construct the DataSet object - doFixedLengthFile(dataSourceStream); - } - - /* - * This is the new version of doDelimitedFile using InputStrem instead of - * File. This is more flexible especially it is working with WebStart. - * - * puts together the dataset for fixed length file. This is used for PZ XML - * mappings, and SQL table mappings - */ - private void doFixedLengthFile(final InputStream dataSource) throws Exception { - InputStreamReader isr = null; - BufferedReader br = null; - - try { - rows = new ArrayList(); - errors = new ArrayList(); - - final Map recordLengths = ParserUtils.calculateRecordLengths(columnMD); - - // Read in the flat file - isr = new InputStreamReader(dataSource); - br = new BufferedReader(isr); - String line = null; - int lineCount = 0; - // map of record lengths corrisponding to the ID's in the columnMD - // array - // loop through each line in the file - while ((line = br.readLine()) != null) { - lineCount++; - // empty line skip past it - if (line.trim().length() == 0) { - continue; - } - - final String mdkey = FixedWidthParserUtils.getCMDKey(columnMD, line); - final int recordLength = ((Integer) recordLengths.get(mdkey)).intValue(); - - // Incorrect record length on line log the error. Line will not - // be included in the - // dataset - if (line.length() > recordLength) { - addError("LINE TOO LONG. LINE IS " + line.length() + " LONG. SHOULD BE " + recordLength, lineCount, 2); - continue; - } else if (line.length() < recordLength) { - if (handleShortLines) { - // We can pad this line out - line += ParserUtils.padding(recordLength - line.length(), ' '); - - // log a warning - addError("PADDED LINE TO CORRECT RECORD LENGTH", lineCount, 1); - - } else { - addError("LINE TOO SHORT. LINE IS " + line.length() + " LONG. SHOULD BE " + recordLength, lineCount, 2); - continue; - } - } - - // int recPosition = 1; - final Row row = new Row(); - row.setMdkey(mdkey.equals(PZConstants.DETAIL_ID) ? null : mdkey); // try - - final List cmds = ParserUtils.getColumnMetaData(mdkey, columnMD); - row.addColumn(FixedWidthParserUtils.splitFixedText(cmds, line)); - // to limit the memory use - // Build the columns for the row - // for (int i = 0; i < cmds.size(); i++) { - // final String tempValue = line.substring(recPosition - 1, - // recPosition - // + (((ColumnMetaData) cmds.get(i)).getColLength() - 1)); - // recPosition += ((ColumnMetaData) cmds.get(i)).getColLength(); - // row.addColumn(tempValue.trim()); - // } - row.setRowNumber(lineCount); - // add the row to the array - rows.add(row); - } - } finally { - if (isr != null) { - isr.close(); - } - if (br != null) { - br.close(); - } - } - } - - /* - * This is the new version of doDelimitedFile using InputStrem instead of - * File. This is more flexible especially it is working with WebStart. - * - * puts together the dataset for a DELIMITED file. This is used for PZ XML - * mappings, and SQL table mappings - */ - private void doDelimitedFile(final InputStream dataSource, final char delimiter, final char qualifier, - final boolean ignoreFirstRecord, final boolean createMDFromFile) throws Exception { - if (dataSource == null) { - throw new NullPointerException("dataSource is null"); - } - - InputStreamReader isr = null; - BufferedReader br = null; - - try { - rows = new ArrayList(); - errors = new ArrayList(); - - // get the total column count - // columnCount = columnMD.size(); - - /** Read in the flat file */ - // fr = new FileReader(dataSource.getAbsolutePath()); - isr = new InputStreamReader(dataSource); - br = new BufferedReader(isr); - - boolean processedFirst = false; - boolean processingMultiLine = false; - int lineCount = 0; - String lineData = ""; - /** loop through each line in the file */ - String line = null; - while ((line = br.readLine()) != null) { - lineCount++; - /** empty line skip past it */ - final String trimmed = line.trim(); - if (!processingMultiLine && trimmed.length() == 0) { - continue; - } - - // check to see if the user has elected to skip the first record - if (!processedFirst && ignoreFirstRecord) { - processedFirst = true; - continue; - } else if (!processedFirst && createMDFromFile) { - processedFirst = true; - columnMD = ParserUtils.getColumnMDFromFile(line, delimiter, qualifier); - continue; - } - - // ******************************************************** - // new functionality as of 2.1.0 check to see if we have - // any line breaks in the middle of the record, this will only - // be checked if we have specified a delimiter - // ******************************************************** - final char[] chrArry = trimmed.toCharArray(); - if (!processingMultiLine && delimiter > 0) { - processingMultiLine = ParserUtils.isMultiLine(chrArry, delimiter, qualifier); - } - - // check to see if we have reached the end of the linebreak in - // the record - - final String trimmedLineData = lineData.trim(); - if (processingMultiLine && trimmedLineData.length() > 0) { - // need to do one last check here. it is possible that the " - // could be part of the data - // excel will escape these with another quote; here is some - // data "" This would indicate - // there is more to the multiline - if (trimmed.charAt(trimmed.length() - 1) == qualifier && !trimmed.endsWith("" + qualifier + qualifier)) { - // it is safe to assume we have reached the end of the - // line break - processingMultiLine = false; - if (trimmedLineData.length() > 0) { // + would always be - // true surely.... - lineData += "\r\n"; - } - lineData += line; - } else { - // check to see if this is the last line of the record - // looking for a qualifier followed by a delimiter - if (trimmedLineData.length() > 0) { // + here again, - // this should - // always be true... - lineData += "\r\n"; - } - lineData += line; - boolean qualiFound = false; - for (int i = 0; i < chrArry.length; i++) { - if (qualiFound) { - if (chrArry[i] == ' ') { - continue; - } else { - // not a space, if this char is the - // delimiter, then we have reached the end - // of - // the record - if (chrArry[i] == delimiter) { - // processingMultiLine = false; - // fix put in, setting to false caused - // bug when processing multiple - // multi-line - // columns on the same record - processingMultiLine = ParserUtils.isMultiLine(chrArry, delimiter, qualifier); - break; - } - qualiFound = false; - continue; - } - } else if (chrArry[i] == qualifier) { - qualiFound = true; - } - } - // check to see if we are still in multi line mode, if - // so grab the next line - if (processingMultiLine) { - continue; - } - } - } else { - // throw the line into lineData var. - lineData += line; - if (processingMultiLine) { - continue; // if we are working on a multiline rec, get - // the data on the next line - } - } - // ******************************************************************** - // end record line break logic - // ******************************************************************** - - // column values - final List columns = ParserUtils.splitLine(lineData, delimiter, qualifier); - lineData = ""; - final String mdkey = ParserUtils.getCMDKeyForDelimitedFile(columnMD, columns); - final List cmds = ParserUtils.getColumnMetaData(mdkey, columnMD); - final int columnCount = cmds.size(); - // DEBUG - - // Incorrect record length on line log the error. Line - // will not be included in the dataset - if (columns.size() > columnCount) { - // log the error - addError("TOO MANY COLUMNS WANTED: " + columnCount + " GOT: " + columns.size(), lineCount, 2); - continue; - } else if (columns.size() < columnCount) { - if (handleShortLines) { - // We can pad this line out - while (columns.size() < columnCount) { - columns.add(""); - } - - // log a warning - addError("PADDED LINE TO CORRECT NUMBER OF COLUMNS", lineCount, 1); - - } else { - addError("TOO FEW COLUMNS WANTED: " + columnCount + " GOT: " + columns.size(), lineCount, 2); - continue; - } - } - - final Row row = new Row(); - row.setMdkey(mdkey.equals(PZConstants.DETAIL_ID) ? null : mdkey); // try - // to limit the memory use - row.setCols(columns); - row.setRowNumber(lineCount); - /** add the row to the array */ - rows.add(row); - } - } finally { - if (isr != null) { - isr.close(); - } - if (br != null) { - br.close(); - } - } - } - - /** - * Changes the value of a specified column in a row in the set. This change - * is in memory, and does not actually change the data in the file that was - * read in. - * - * @param columnName - - * String Name of the column - * @param value - - * String value to assign to the column. - * @exception Exception - - * exception will be thrown if pointer in not on a valid row - */ - public void setValue(final String columnName, final String value) throws Exception { - /** get a reference to the row */ - final Row row = (Row) rows.get(pointer); - - final int idx = ParserUtils.getColumnIndex(row.getMdkey(), columnMD, columnName); - row.setValue(idx, value); - // final List cmds = ParserUtils.getColumnMetaData(row.getMdkey(), - // columnMD); - /** change the value of the column */ - // row.setValue(ParserUtils.findColumn(columnName, cmds), value); - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#goTop() - */ - public void goTop() { - pointer = -1; - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#goBottom() - */ - public void goBottom() { - pointer = rows.size() - 1; - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#next() - */ - public boolean next() { - if (pointer < rows.size() && pointer + 1 != rows.size()) { - pointer++; - return true; - } - return false; - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#previous() - */ - public boolean previous() { - if (pointer <= 0) { - return false; - } - pointer--; - return true; - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#getString(java.lang.String) - */ - public String getString(final String column) { - final Row row = (Row) rows.get(pointer); - // final List cmds = ParserUtils.getColumnMetaData(row.getMdkey(), - // columnMD); - final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); - - if (upperCase) { - // convert data to uppercase before returning - // return row.getValue(ParserUtils.findColumn(column, - // cmds)).toUpperCase(Locale.getDefault()); - return s.toUpperCase(Locale.getDefault()); - } - - if (lowerCase) { - // convert data to lowercase before returning - // return row.getValue(ParserUtils.findColumn(column, - // cmds)).toLowerCase(Locale.getDefault()); - return s.toLowerCase(Locale.getDefault()); - } - - // return value as how it is in the file - // return row.getValue(ParserUtils.findColumn(column, cmds)); - return s; - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#getDouble(java.lang.String) - */ - public double getDouble(final String column) { - final StringBuffer newString = new StringBuffer(); - final Row row = (Row) rows.get(pointer); - - // final List cmds = ParserUtils.getColumnMetaData(row.getMdkey(), - // columnMD); - // String s = ((Row) - // rows.get(pointer)).getValue(ParserUtils.findColumn(column, cmds)); - final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); - - if (!strictNumericParse) { - if (s.trim().length() == 0) { - return 0; - } - for (int i = 0; i < s.length(); i++) { - final char c = s.charAt(i); - if (c >= '0' && c <= '9' || c == '.' || c == '-') { - newString.append(c); - } - } - if (newString.length() == 0 || (newString.length() == 1 && newString.toString().equals(".")) - || (newString.length() == 1 && newString.toString().equals("-"))) { - newString.append("0"); - } - } else { - newString.append(s); - } - - return Double.parseDouble(newString.toString()); - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#getInt(java.lang.String) - */ - public int getInt(final String column) { - final StringBuffer newString = new StringBuffer(); - final Row row = (Row) rows.get(pointer); - // final List cmds = ParserUtils.getColumnMetaData(row.getMdkey(), - // columnMD); - // - // String s = row.getValue(ParserUtils.findColumn(column, cmds)); - final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); - - if (!strictNumericParse) { - if (s.trim().length() == 0) { - return 0; - } - for (int i = 0; i < s.length(); i++) { - final char c = s.charAt(i); - if (c >= '0' && c <= '9' || c == '-') { - newString.append(c); - } - } - // check to make sure we do not have a single length string with - // just a minus sign - if (newString.length() == 0 || (newString.length() == 1 && newString.toString().equals("-"))) { - newString.append("0"); - } - } else { - newString.append(s); - } - - return Integer.parseInt(newString.toString()); - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#getDate(java.lang.String) - */ - public Date getDate(final String column) throws ParseException { - final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); - final Row row = (Row) rows.get(pointer); - // final List cmds = ParserUtils.getColumnMetaData(row.getMdkey(), - // columnMD); - - // String s = row.getValue(ParserUtils.findColumn(column, cmds)); - final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); - return sdf.parse(s); - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#getDate(java.lang.String, - * java.text.SimpleDateFormat) - */ - public Date getDate(final String column, final SimpleDateFormat sdf) throws ParseException { - final Row row = (Row) rows.get(pointer); - // final List cmds = ParserUtils.getColumnMetaData(row.getMdkey(), - // columnMD); - // - // String s = row.getValue(ParserUtils.findColumn(column, cmds)); - final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); - return sdf.parse(s); - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#getColumns() - */ - public String[] getColumns() { - ColumnMetaData column = null; - String[] array = null; - - if (columnMD != null) { - final List cmds = ParserUtils.getColumnMetaData(PZConstants.DETAIL_ID, columnMD); - - array = new String[cmds.size()]; - for (int i = 0; i < cmds.size(); i++) { - column = (ColumnMetaData) cmds.get(i); - array[i] = column.getColName(); - } - } - - return array; - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#getColumns(java.lang.String) - */ - public String[] getColumns(final String recordID) { - String[] array = null; - - if (columnMD != null) { - final List cmds = ParserUtils.getColumnMetaData(recordID, columnMD); - array = new String[cmds.size()]; - for (int i = 0; i < cmds.size(); i++) { - final ColumnMetaData column = (ColumnMetaData) cmds.get(i); - array[i] = column.getColName(); - } - } - - return array; - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#getRowNo() - */ - public int getRowNo() { - return ((Row) rows.get(pointer)).getRowNumber(); - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#getErrors() - */ - public List getErrors() { - return errors; - } - - /** - * Adds a new error to this DataSet. These can be collected, and retreived - * after processing - * - * @param errorDesc - - * String description of error - * @param lineNo - - * int line number error occured on - * @param errorLevel - - * int errorLevel 1,2,3 1=warning 2=error 3= severe error - */ - public void addError(final String errorDesc, final int lineNo, final int errorLevel) { - final DataError de = new DataError(); - de.setErrorDesc(errorDesc); - de.setLineNo(lineNo); - de.setErrorLevel(errorLevel); - errors.add(de); - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#remove() - */ - public void remove() { - rows.remove(pointer); - pointer--; - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#getIndex() - */ - public int getIndex() { - return pointer; - } - - /** - * Sets the absolute position of the record pointer - * - * @param localPointer - - * int - * @exception IndexOutOfBoundsException - */ - public void absolute(final int localPointer) { - if (localPointer < 0 || localPointer > rows.size() - 1) { - throw new IndexOutOfBoundsException("INVALID POINTER LOCATION: " + localPointer); - } - - pointer = localPointer; - } - - /** - * Checks to see if the row has the given <RECORD> id - * - * @param recordID - * @return boolean - */ - public boolean isRecordID(final String recordID) { - String rowID = ((Row) rows.get(pointer)).getMdkey(); - if (rowID == null) { - rowID = PZConstants.DETAIL_ID; - } - - return rowID.equals(recordID); - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#getRowCount() - */ - public int getRowCount() { - return rows.size(); - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#getErrorCount() - */ - public int getErrorCount() { - if (getErrors() != null) { - return getErrors().size(); - } - - return 0; - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#isAnError(int) - */ - public boolean isAnError(final int lineNo) { - for (int i = 0; i < errors.size(); i++) { - if (((DataError) errors.get(i)).getLineNo() == lineNo && ((DataError) errors.get(i)).getErrorLevel() > 1) { - return true; - } - } - return false; - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#orderRows(net.sf.pzfilereader.ordering.OrderBy) - */ - public void orderRows(final OrderBy ob) throws Exception { - // PZ try to handle other <records> by sending them to - // the bottom of the sort - // if (columnMD.size() > 1) { - // throw new Exception("orderRows does not currently support ordering - // with <RECORD> mappings"); - // } - if (ob != null && rows != null) { - final List cmds = ParserUtils.getColumnMetaData(PZConstants.DETAIL_ID, columnMD); - ob.setColumnMD(cmds); - Collections.sort(rows, ob); - goTop(); - } - } - - /** - * Sets data in the DataSet to lowercase - */ - public void setLowerCase() { - upperCase = false; - lowerCase = true; - } - - /** - * Sets data in the DataSet to uppercase - */ - public void setUpperCase() { - upperCase = true; - lowerCase = false; - } - - /** - * Setting this to True will parse text as is and throw a - * NumberFormatException. Setting to false, which is the default, will - * remove any non numeric charcter from the field. The remaining numeric - * chars's will be returned. If it is an empty string,or there are no - * numeric chars, 0 will be returned for getInt() and getDouble() - * - * @param strictNumericParse - * The strictNumericParse to set. - */ - public void setStrictNumericParse(final boolean strictNumericParse) { - this.strictNumericParse = strictNumericParse; - } - - /** - * Erases the dataset early and releases memory for the JVM to reclaim, this - * invalidates the object. - * - * @deprecated You can still use it but truly you should keep the scope of - * the DataSet to a MINIMUM. - */ - public void freeMemory() { - if (rows != null) { - rows.clear(); - } - if (errors != null) { - errors.clear(); - } - if (columnMD != null) { - columnMD.clear(); - } - } - - /** - * Writes this current DataSet out to the specified Excel file - * - * @param excelFileToBeWritten - * @exception Exception - */ - public void writeToExcel(final File excelFileToBeWritten) throws Exception { - final ExcelTransformer et = new ExcelTransformer(this, excelFileToBeWritten); - et.writeExcelFile(); - } - - /** - * Returns the version number of this pzFileReader - * - * @return String - */ - public String getReaderVersion() { - return Version.VERSION; - } - - /** - * @return Returns the handleShortLines. - */ - public boolean isHandleShortLines() { - return handleShortLines; - } - - /** - * This is used for LargeDataSet compatability. Setting this will have no - * affect on the DataSet parser. It must be passed on the constructor - * - * @param handleShortLines - * The handleShortLines to set. - */ - public void setHandleShortLines(final boolean handleShortLines) { - this.handleShortLines = handleShortLines; - } - - public Map getColumnMD() { - return columnMD; - } - - public void setColumnMD(final Map columnMD) { - this.columnMD = columnMD; - } - - /* - * (non-Javadoc) - * - * @see net.sf.pzfilereader.IDataSet#getRows() - */ - public List getRows() { - return rows; - } - - public void setRows(final List rows) { - this.rows = rows; - } - - public void setErrors(final List errors) { - this.errors = errors; - } - - public Object getObject(String column, Class classToConvertTo) { - // TODO May have to do something here if we plan on keeping - //this around for the next version. I believe this will - //be leaving - return null; - } - - public void setPZConvertProps(Properties props) { - // TODO May have to do something here if we plan on keeping - //this around for the next version. I believe this will - //be leaving - } -} Deleted: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/LargeDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/LargeDataSet.java 2006-11-25 17:17:35 UTC (rev 194) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/LargeDataSet.java 2006-11-25 17:18:09 UTC (rev 195) @@ -1,647 +0,0 @@ -/* - Copyright 2006 Paul Zepernick - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software distributed - under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - CONDITIONS OF ANY KIND, either express or implied. See the License for - the specific language governing permissions and limitations under the License. - */ -package net.sf.pzfilereader; - -import java.io.BufferedReader; -import java.io.File; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import net.sf.pzfilereader.ordering.OrderBy; -import net.sf.pzfilereader.structure.Row; -import net.sf.pzfilereader.util.FixedWidthParserUtils; -import net.sf.pzfilereader.util.PZConstants; -import net.sf.pzfilereader.util.ParserUtils; -import net.sf.pzfilereader.xml.PZMapParser; - -/** - * @author Paul Zepernick - * - * Provides limited DataSet functionality for large files. This will not read - * the file into memory. The following methods have been disabled previous(), - * goTop(), goBottom(), remove(), getIndex(), absolute(), orderRows() - */ -public class LargeDataSet extends DataSet { - private String fileType; // file type being parsed - - private BufferedReader br = null; // reader used to read the file - - private InputStreamReader isr = null; - - private InputStream is = null; // stream used to read the file - - private int lineCount = 0; // keeps track of the current line being - - // procssed in the file - - // used for delimited files - private boolean ignoreFirstRecord = false; - - private boolean createMDFromFile = false; - - private boolean processedFirst = false; - - private char delimiter = 0; - - private char qualifier = 0; - - private int columnCount = 0; - - /** - * used for fixed length files, map of record lengths corresponding to the - * ID's in the columnMD array. - */ - private Map recordLengths = null; - - /** - * Constructor based on InputStream. Constructs a new LargeDataSet using the - * PZMAP XML file layout method. This is used for a DELIMITED text file. - * esacpe sequence reference:<br> - * \n newline <br> - * \t tab <br> - * \b backspace <br> - * \r return <br> - * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote - * - * @param pzmapXMLStream - - * Reference to the xml file holding the pzmap - * @param dataSourceStream - - * text file datasource InputStream to read from - * @param delimiter - - * Char the file is delimited By - * @param qualifier - - * Char text is qualified by - * @param ignoreFirstRecord - - * skips the first line that contains data in the file - * @param handleShortLines - - * Adds missing columns as empty's to the DataSet instead of - * logging them as an error - * @exception Exception - * @deprecated use the char version. - */ - public LargeDataSet(final InputStream pzmapXMLStream, final InputStream dataSourceStream, final String delimiter, - final String qualifier, final boolean ignoreFirstRecord, final boolean handleShortLines) throws Exception { - this(pzmapXMLStream, dataSourceStream, delimiter != null ? delimiter.charAt(0) : 0, qualifier != null ? qualifier - .charAt(0) : 0, ignoreFirstRecord, handleShortLines); - } - - /** - * Constructor based on InputStream. Constructs a new LargeDataSet using the - * PZMAP XML file layout method. This is used for a DELIMITED text file. - * esacpe sequence reference:<br> - * \n newline <br> - * \t tab <br> - * \b backspace <br> - * \r return <br> - * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote - * - * @param pzmapXMLStream - - * Reference to the xml file holding the pzmap - * @param dataSourceStream - - * text file datasource InputStream to read from - * @param delimiter - - * Char the file is delimited By - * @param qualifier - - * Char text is qualified by - * @param ignoreFirstRecord - - * skips the first line that contains data in the file - * @param handleShortLines - - * Adds missing columns as empty's to the DataSet instead of - * logging them as an error - * @exception Exception - */ - public LargeDataSet(final InputStream pzmapXMLStream, final InputStream dataSourceStream, final char delimiter, - final char qualifier, final boolean ignoreFirstRecord, final boolean handleShortLines) throws Exception { - - this.fileType = PZConstants.DELIMITED_FILE; - this.is = dataSourceStream; - this.isr = new InputStreamReader(is); - this.br = new BufferedReader(this.isr); - this.delimiter = delimiter; - this.qualifier = qualifier; - this.ignoreFirstRecord = ignoreFirstRecord; - setHandleShortLines(handleShortLines); - setColumnMD(PZMapParser.parse(pzmapXMLStream)); - - } - - /** - * Constructs a new LargeDataSet using the first line of data found in the - * text file as the column names. This is used for a DELIMITED text file. - * esacpe sequence reference:<br> - * \n newline <br> - * \t tab <br> - * \b backspace <br> - * \r return <br> - * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote - * - * @param dataSource - - * text file datasource to read from - * @param delimiter - - * Char the file is delimited By - * @param qualifier - - * Char text is qualified by - * @... [truncated message content] |
From: <zep...@us...> - 2006-11-25 17:21:44
|
Revision: 197 http://svn.sourceforge.net/pzfilereader/?rev=197&view=rev Author: zepernick Date: 2006-11-25 09:21:43 -0800 (Sat, 25 Nov 2006) Log Message: ----------- added bx parser Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/PZConstants.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2006-11-25 17:18:43 UTC (rev 196) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2006-11-25 17:21:43 UTC (rev 197) @@ -272,8 +272,13 @@ // end record line break logic // ******************************************************************** + //TODO + //seems like we may want to try doing something like this. I have my reservations because + //it is possible that we don't get a "detail" id and this might generate NPE + //is it going to create too much overhead to do a null check here as well??? + //final int intialSize = ParserUtils.getColumnMetaData(PZConstants.DETAIL_ID, getColumnMD()).size(); // column values - final List columns = ParserUtils.splitLine(lineData, delimiter, qualifier); + final List columns = ParserUtils.splitLine(lineData, delimiter, qualifier, PZConstants.SPLITLINE_SIZE_INIT); lineData = ""; final String mdkey = ParserUtils.getCMDKeyForDelimitedFile(getColumnMD(), columns); final List cmds = ParserUtils.getColumnMetaData(mdkey, getColumnMD()); Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/PZConstants.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/PZConstants.java 2006-11-25 17:18:43 UTC (rev 196) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/PZConstants.java 2006-11-25 17:21:43 UTC (rev 197) @@ -44,6 +44,8 @@ public static final String DELIMITED_FILE = "delimited"; public static final String FIXEDLENGTH_FILE = "fixed"; + + public static final int SPLITLINE_SIZE_INIT = 10; private PZConstants() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-12-16 16:27:29
|
Revision: 236 http://svn.sourceforge.net/pzfilereader/?rev=236&view=rev Author: zepernick Date: 2006-12-16 08:27:29 -0800 (Sat, 16 Dec 2006) Log Message: ----------- checkstyle fixes Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java 2006-12-16 16:23:41 UTC (rev 235) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java 2006-12-16 16:27:29 UTC (rev 236) @@ -71,7 +71,7 @@ super(dataSourceStream, delimiter, qualifier, ignoreFirstRecord); } - protected void init() throws InitialisationException { + protected void init() { try { if (pzmapXMLStream != null) { setColumnMD(PZMapParser.parse(pzmapXMLStream)); Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java 2006-12-16 16:23:41 UTC (rev 235) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java 2006-12-16 16:27:29 UTC (rev 236) @@ -60,7 +60,7 @@ this.pzmapXML = pzmapXML; } - protected void init() throws InitialisationException { + protected void init() { try { if (pzmapXMLStream != null) { setColumnMD(PZMapParser.parse(pzmapXMLStream)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-12-16 17:57:33
|
Revision: 239 http://svn.sourceforge.net/pzfilereader/?rev=239&view=rev Author: zepernick Date: 2006-12-16 09:57:34 -0800 (Sat, 16 Dec 2006) Log Message: ----------- pbd fixes Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2006-12-16 17:51:25 UTC (rev 238) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2006-12-16 17:57:34 UTC (rev 239) @@ -34,7 +34,6 @@ import java.io.BufferedReader; import java.io.File; -import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java 2006-12-16 17:51:25 UTC (rev 238) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java 2006-12-16 17:57:34 UTC (rev 239) @@ -182,7 +182,9 @@ } /** - * Returns the meta data describing the columns + * Returns the meta data describing the columns. + * This exposes this method to the DataSet which + * it could not otherwise see because it is protected. */ public Map getColumnMD() { return super.getColumnMD(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-12-16 19:07:48
|
Revision: 242 http://svn.sourceforge.net/pzfilereader/?rev=242&view=rev Author: zepernick Date: 2006-12-16 11:07:48 -0800 (Sat, 16 Dec 2006) Log Message: ----------- simian fixes Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java 2006-12-16 18:07:39 UTC (rev 241) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java 2006-12-16 19:07:48 UTC (rev 242) @@ -35,13 +35,9 @@ import java.io.FileNotFoundException; import java.io.InputStream; import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; import java.util.List; -import net.sf.pzfilereader.structure.ColumnMetaData; import net.sf.pzfilereader.util.PZConstants; import net.sf.pzfilereader.util.ParserUtils; @@ -60,45 +56,14 @@ } protected void init() { - ResultSet rs = null; - PreparedStatement stmt = null; - try { - final String sql = "SELECT * FROM DATAFILE INNER JOIN DATASTRUCTURE ON " - + "DATAFILE.DATAFILE_NO = DATASTRUCTURE.DATAFILE_NO " - + "WHERE DATAFILE.DATAFILE_DESC = ? " - + "ORDER BY DATASTRUCTURE_COL_ORDER"; - - stmt = con.prepareStatement(sql); // always use PreparedStatement - stmt.setString(1, getDataDefinition()); - // as the DB can do clever things. - rs = stmt.executeQuery(); - - int recPosition = 1; - final List cmds = new ArrayList(); - // put array of columns together. These will be used to put together - // the dataset when reading in the file - while (rs.next()) { - - final ColumnMetaData column = new ColumnMetaData(); - column.setColName(rs.getString("DATASTRUCTURE_COLUMN")); - column.setColLength(rs.getInt("DATASTRUCTURE_LENGTH")); - column.setStartPosition(recPosition); - column.setEndPosition(recPosition + (rs.getInt("DATASTRUCTURE_LENGTH") - 1)); - recPosition += rs.getInt("DATASTRUCTURE_LENGTH"); - - cmds.add(column); - } - + final List cmds = ParserUtils.buildMDFromSQLTable(con, getDataDefinition()); addToColumnMD(PZConstants.DETAIL_ID, cmds); addToColumnMD(PZConstants.COL_IDX, ParserUtils.buidColumnIndexMap(cmds)); if (cmds.isEmpty()) { throw new FileNotFoundException("DATA DEFINITION CAN NOT BE FOUND IN THE DATABASE " + getDataDefinition()); } - - // read in the fixed length file and construct the DataSet object - // doFixedLengthFile(dataSourceStream); setInitialised(true); } catch (final SQLException e) { // TODO Auto-generated catch block @@ -106,19 +71,7 @@ } catch (final FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); - } finally { - try { - if (rs != null) { - rs.close(); - } - if (stmt != null) { - stmt.close(); - } - } catch (final SQLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } + } } protected boolean shouldCreateMDFromFile() { Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java 2006-12-16 18:07:39 UTC (rev 241) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java 2006-12-16 19:07:48 UTC (rev 242) @@ -36,13 +36,9 @@ import java.io.FileNotFoundException; import java.io.InputStream; import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; import java.util.List; -import net.sf.pzfilereader.structure.ColumnMetaData; import net.sf.pzfilereader.util.PZConstants; import net.sf.pzfilereader.util.ParserUtils; @@ -65,36 +61,9 @@ } protected void init() { - ResultSet rs = null; - PreparedStatement stmt = null; - try { - final String sql = "SELECT * FROM DATAFILE INNER JOIN DATASTRUCTURE ON " - + "DATAFILE.DATAFILE_NO = DATASTRUCTURE.DATAFILE_NO " - + "WHERE DATAFILE.DATAFILE_DESC = ? " - + "ORDER BY DATASTRUCTURE_COL_ORDER"; + final List cmds = ParserUtils.buildMDFromSQLTable(con, getDataDefinition()); - stmt = con.prepareStatement(sql); // always use PreparedStatement - // as the DB can do clever things. - stmt.setString(1, getDataDefinition()); - rs = stmt.executeQuery(); - - int recPosition = 1; - final List cmds = new ArrayList(); - // put array of columns together. These will be used to put together - // the dataset when reading in the file - while (rs.next()) { - - final ColumnMetaData column = new ColumnMetaData(); - column.setColName(rs.getString("DATASTRUCTURE_COLUMN")); - column.setColLength(rs.getInt("DATASTRUCTURE_LENGTH")); - column.setStartPosition(recPosition); - column.setEndPosition(recPosition + (rs.getInt("DATASTRUCTURE_LENGTH") - 1)); - recPosition += rs.getInt("DATASTRUCTURE_LENGTH"); - - cmds.add(column); - } - addToColumnMD(PZConstants.DETAIL_ID, cmds); addToColumnMD(PZConstants.COL_IDX, ParserUtils.buidColumnIndexMap(cmds)); @@ -102,8 +71,6 @@ throw new FileNotFoundException("DATA DEFINITION CAN NOT BE FOUND IN THE DATABASE " + getDataDefinition()); } - // read in the fixed length file and construct the DataSet object - // doFixedLengthFile(dataSourceStream); setInitialised(true); } catch (final SQLException e) { // TODO Auto-generated catch block @@ -111,19 +78,7 @@ } catch (final FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); - } finally { - try { - if (rs != null) { - rs.close(); - } - if (stmt != null) { - stmt.close(); - } - } catch (final SQLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } + } } public DataSet doParse() { Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2006-12-16 18:07:39 UTC (rev 241) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2006-12-16 19:07:48 UTC (rev 242) @@ -42,6 +42,10 @@ import java.io.InputStreamReader; import java.io.Reader; import java.net.URL; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; @@ -330,63 +334,7 @@ return s.toString(); } - /** - * Returns a list of ColumnMetaData objects. This is for use with delimited - * files. The first line of the file which contains data will be used as the - * column names - * - * @param theStream - * @param delimiter - * @param qualifier - * @exception Exception - * @return Map - ColumnMetaData - * @deprecated see getColumMDFromFile(String, String, String) - */ - public static Map getColumnMDFromFile(final InputStream theStream, final String delimiter, final String qualifier) - throws Exception { - InputStreamReader isr = null; - BufferedReader br = null; - // FileReader fr = null; - String line = null; - List lineData = null; - final List results = new ArrayList(); - final Map columnMD = new LinkedHashMap(); - try { - isr = new InputStreamReader(theStream); - br = new BufferedReader(isr); - - while ((line = br.readLine()) != null) { - if (line.trim().length() == 0) { - continue; - } - - lineData = splitLine(line, delimiter.charAt(0), qualifier.charAt(0), PZConstants.SPLITLINE_SIZE_INIT); - for (int i = 0; i < lineData.size(); i++) { - final ColumnMetaData cmd = new ColumnMetaData(); - cmd.setColName((String) lineData.get(i)); - results.add(cmd); - } - break; - } - } finally { - if (lineData != null) { - lineData.clear(); - } - if (br != null) { - br.close(); - } - if (isr != null) { - isr.close(); - } - } - - columnMD.put(PZConstants.DETAIL_ID, results); - columnMD.put(PZConstants.COL_IDX, buidColumnIndexMap(results)); - - return columnMD; - } - /** * Returns a list of ColumnMetaData objects. This is for use with delimited * files. The first line of the file which contains data will be used as the @@ -593,7 +541,7 @@ while (columnMDIt.hasNext()) { final Entry entry = (Entry) columnMDIt.next(); if (entry.getKey().equals(PZConstants.DETAIL_ID) || entry.getKey().equals(PZConstants.COL_IDX)) { - cmds = (List) entry.getValue(); + cmds = (List) columnMD.get(PZConstants.DETAIL_ID); } else { cmds = ((XMLRecordElement) entry.getValue()).getColumns(); } @@ -920,6 +868,58 @@ } } + /** + * Returns a definition of pz column metadata from a given + * pz datastructure held in an SQL database + * + * @param con + * Database connection containing the Datafile and Datastructure + * tables + * @param dataDefinition + * Name of the data definition stored in the Datafile table + * @return List + */ + public static List buildMDFromSQLTable(final Connection con, final String dataDefinition) throws SQLException{ + PreparedStatement stmt = null; + ResultSet rs = null; + final List cmds = new ArrayList(); + try { + final String sql = "SELECT * FROM DATAFILE INNER JOIN DATASTRUCTURE ON " + + "DATAFILE.DATAFILE_NO = DATASTRUCTURE.DATAFILE_NO " + + "WHERE DATAFILE.DATAFILE_DESC = ? " + + "ORDER BY DATASTRUCTURE_COL_ORDER"; + + stmt = con.prepareStatement(sql); // always use PreparedStatement + // as the DB can do clever things. + stmt.setString(1, dataDefinition); + rs = stmt.executeQuery(); + + int recPosition = 1; + // put array of columns together. These will be used to put together + // the dataset when reading in the file + while (rs.next()) { + + final ColumnMetaData column = new ColumnMetaData(); + column.setColName(rs.getString("DATASTRUCTURE_COLUMN")); + column.setColLength(rs.getInt("DATASTRUCTURE_LENGTH")); + column.setStartPosition(recPosition); + column.setEndPosition(recPosition + (rs.getInt("DATASTRUCTURE_LENGTH") - 1)); + recPosition += rs.getInt("DATASTRUCTURE_LENGTH"); + + cmds.add(column); + } + } finally { + if (rs != null) { + rs.close(); + } + if (stmt != null) { + stmt.close(); + } + } + + return cmds; + } + //LEAVE AS A REFERENCE FOR POSSIBLE LATER USE /* public static List splitLineWithBuf(String line, final char delimiter, char qualifier, int initialSize) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-12-21 20:58:53
|
Revision: 253 http://svn.sourceforge.net/pzfilereader/?rev=253&view=rev Author: zepernick Date: 2006-12-21 12:58:52 -0800 (Thu, 21 Dec 2006) Log Message: ----------- added setValue method back into the DataSet. This was present in previous versions. It can be used to change the value of a column after the file read. It is useful to loop through the file and change values prior to business logic, or to change the values before they go out to Excel. Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZDataSet.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2006-12-16 21:26:27 UTC (rev 252) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2006-12-21 20:58:52 UTC (rev 253) @@ -280,4 +280,15 @@ * Property mapping for String to Object conversion */ void setPZConvertProps(Properties props); + + /** + * Changes the value of the given column only for the + * given row which the pointer is currently sitting on. + * + * @param column + * Column name to set the value for + * @param value + * Value to change the column to + */ + void setValue(final String column, final String value); } \ No newline at end of file Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java 2006-12-16 21:26:27 UTC (rev 252) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java 2006-12-21 20:58:52 UTC (rev 253) @@ -275,6 +275,14 @@ // return value as how it is in the file return s; } + + + public void setValue(String column, String value) { + final Row row = (Row) rows.get(pointer); + final int colIndex = ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column); + + row.setValue(colIndex, value); + } /* * (non-Javadoc) Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZDataSet.java 2006-12-16 21:26:27 UTC (rev 252) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZDataSet.java 2006-12-21 20:58:52 UTC (rev 253) @@ -159,5 +159,12 @@ public void goTop() { throw new UnsupportedOperationException("goTop() is Not Implemented"); } + + /** + * Not Supported! + */ + public void setValue(String column, String value) { + throw new UnsupportedOperationException("setValue() is Not Implemented"); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-12-24 17:53:36
|
Revision: 254 http://svn.sourceforge.net/pzfilereader/?rev=254&view=rev Author: zepernick Date: 2006-12-24 09:53:35 -0800 (Sun, 24 Dec 2006) Log Message: ----------- added SLF4J logging... Benoit, I will follow up with an email with some of the details of the logger. It is pretty simplistic. Paul Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderFixedPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZDataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/ResolveLocalDTD.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2006-12-21 20:58:52 UTC (rev 253) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2006-12-24 17:53:35 UTC (rev 254) @@ -39,6 +39,9 @@ import java.io.InputStreamReader; import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import net.sf.pzfilereader.structure.Row; import net.sf.pzfilereader.util.PZConstants; import net.sf.pzfilereader.util.ParserUtils; @@ -55,7 +58,9 @@ private boolean ignoreFirstRecord = false; private int lineCount = 0; - + + private final Logger logger = LoggerFactory.getLogger(AbstractDelimiterPZParser.class); + public AbstractDelimiterPZParser(final InputStream dataSourceStream, final String dataDefinition, final char delimiter, final char qualifier, final boolean ignoreFirstRecord) { super(dataSourceStream, dataDefinition); @@ -97,8 +102,7 @@ } } } catch (final IOException e) { - // TODO add logger - e.printStackTrace(); + logger.error("error accessing/creating inputstream", e); } return null; } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java 2006-12-21 20:58:52 UTC (rev 253) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java 2006-12-24 17:53:35 UTC (rev 254) @@ -34,13 +34,15 @@ import java.io.BufferedReader; import java.io.File; -import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.List; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import net.sf.pzfilereader.structure.Row; import net.sf.pzfilereader.util.FixedWidthParserUtils; import net.sf.pzfilereader.util.PZConstants; @@ -51,7 +53,8 @@ * */ public abstract class AbstractFixedLengthPZParser extends AbstractPZParser { - + private final Logger logger = LoggerFactory.getLogger(AbstractFixedLengthPZParser.class); + protected AbstractFixedLengthPZParser(final File dataSource, final String dataDefinition) { super(dataSource, dataDefinition); } @@ -77,21 +80,14 @@ stream = ParserUtils.createInputStream(getDataSource()); try { return doFixedLengthFile(stream); - } catch (final Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); } finally { if (stream != null) { stream.close(); } } } - } catch (final FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (final Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); + } catch (final IOException e) { + logger.error("error accessing/creating inputstream", e); } return null; } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java 2006-12-21 20:58:52 UTC (rev 253) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java 2006-12-24 17:53:35 UTC (rev 254) @@ -40,6 +40,9 @@ import java.util.List; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import net.sf.pzfilereader.DataSet; import net.sf.pzfilereader.DefaultDataSet; import net.sf.pzfilereader.DelimiterPZParser; @@ -49,8 +52,12 @@ public class BuffReaderDelimPZParser extends DelimiterPZParser { private BufferedReader br; + private InputStreamReader isr; + private boolean processedFirst = false; + + private final Logger logger = LoggerFactory.getLogger(BuffReaderDelimPZParser.class); public BuffReaderDelimPZParser(final File pzmapXML, final File dataSource, final char delimiter, final char qualifier, final boolean ignoreFirstRecord) { @@ -88,7 +95,7 @@ return ds; } catch(IOException ex) { - ex.printStackTrace(); + logger.error("error accessing/creating inputstream", ex); } return null; Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderFixedPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderFixedPZParser.java 2006-12-21 20:58:52 UTC (rev 253) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderFixedPZParser.java 2006-12-24 17:53:35 UTC (rev 254) @@ -40,6 +40,9 @@ import java.util.List; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import net.sf.pzfilereader.DataSet; import net.sf.pzfilereader.DefaultDataSet; import net.sf.pzfilereader.FixedLengthPZParser; @@ -57,6 +60,8 @@ private Map recordLengths = null; + private final Logger logger = LoggerFactory.getLogger(BuffReaderFixedPZParser.class); + public BuffReaderFixedPZParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream) { super(pzmapXMLStream, dataSourceStream); } @@ -84,7 +89,7 @@ return ds; } catch(IOException ex) { - ex.printStackTrace(); + logger.error("error accessing/creating inputstream", ex); } return null; Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZDataSet.java 2006-12-21 20:58:52 UTC (rev 253) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZDataSet.java 2006-12-24 17:53:35 UTC (rev 254) @@ -36,6 +36,9 @@ import java.util.LinkedHashMap; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import net.sf.pzfilereader.DefaultDataSet; import net.sf.pzfilereader.ordering.OrderBy; import net.sf.pzfilereader.structure.Row; @@ -45,6 +48,8 @@ private final BuffReaderFixedPZParser brFixedPzParser; + private final Logger logger = LoggerFactory.getLogger(BuffReaderPZDataSet.class); + public BuffReaderPZDataSet(final Map columnMD2, final BuffReaderDelimPZParser brDelimPzParser) { super(columnMD2); //register the parser with the dataset so we can fetch rows from @@ -95,8 +100,7 @@ return true; } catch(final IOException ex) { - //TODO real logging here - ex.printStackTrace(); + logger.error("error building Row on next()", ex); } return false; Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java 2006-12-21 20:58:52 UTC (rev 253) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java 2006-12-24 17:53:35 UTC (rev 254) @@ -51,6 +51,8 @@ import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author zepernick @@ -59,7 +61,8 @@ */ public final class PZMapParser { private static boolean showDebug = false; - + + private static final Logger LOGGER = LoggerFactory.getLogger(PZMapParser.class); /** * Constructor * @@ -223,15 +226,15 @@ columns = xmlrecEle.getColumns().iterator(); } - System.out.println(">>>>Column MD Id: " + recordID); + LOGGER.debug(">>>>Column MD Id: " + recordID); if (xmlrecEle != null) { - System.out.println("Start Position: " + xmlrecEle.getStartPosition() + " " + "End Position: " + LOGGER.debug("Start Position: " + xmlrecEle.getStartPosition() + " " + "End Position: " + xmlrecEle.getEndPositition() + " " + "Element Number: " + xmlrecEle.getElementNumber() + " " + "Indicator: " + xmlrecEle.getIndicator()); } while (columns.hasNext()) { final ColumnMetaData cmd = (ColumnMetaData) columns.next(); - System.out.println(" Column Name: " + cmd.getColName() + " LENGTH: " + cmd.getColLength()); + LOGGER.debug("Column Name: " + cmd.getColName() + " LENGTH: " + cmd.getColLength()); } } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/ResolveLocalDTD.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/ResolveLocalDTD.java 2006-12-21 20:58:52 UTC (rev 253) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/ResolveLocalDTD.java 2006-12-24 17:53:35 UTC (rev 254) @@ -61,7 +61,9 @@ if (resource != null) { return new InputSource(resource.openStream()); } else { - throw new RuntimeException("could not load dtd resource from jar!!"); + //should probably not happen, this may indicate that the dtd has been + //removed from the jar for some reason + throw new IOException("could not load dtd resource from jar!!"); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2007-01-10 20:02:48
|
Revision: 262 http://svn.sourceforge.net/pzfilereader/?rev=262&view=rev Author: zepernick Date: 2007-01-10 12:02:45 -0800 (Wed, 10 Jan 2007) Log Message: ----------- changed getDate() to return a null on empty Strings instead of getting a parse exception Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2007-01-10 17:01:29 UTC (rev 261) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2007-01-10 20:02:45 UTC (rev 262) @@ -107,6 +107,8 @@ * yyyyMMdd. If your date is not in this format, see * getDate(String,SimpleDateFormat) * + * Will return "null" on empty Strings + * * @param column - * Name of the column * @exception ParseException @@ -119,6 +121,8 @@ * date is NOT in yyyyMMdd format. The SimpleDateFormat object will specify * what kind of format the date is in. * + * Will return "null" on empty Strings + * * @param column - * Name of the column * @param sdf - Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java 2007-01-10 17:01:29 UTC (rev 261) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java 2007-01-10 20:02:45 UTC (rev 262) @@ -136,10 +136,7 @@ * @see net.sf.pzfilereader.IDataSet#getDate(java.lang.String) */ public Date getDate(final String column) throws ParseException { - final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); - final Row row = (Row) rows.get(pointer); - final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); - return sdf.parse(s); + return getDate(column, new SimpleDateFormat("yyyyMMdd")); } /* @@ -151,6 +148,10 @@ public Date getDate(final String column, final SimpleDateFormat sdf) throws ParseException { final Row row = (Row) rows.get(pointer); final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); + if (s.trim().equals("")) { + //don't do the parse on empties + return null; + } return sdf.parse(s); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2007-03-10 18:14:26
|
Revision: 285 http://svn.sourceforge.net/pzfilereader/?rev=285&view=rev Author: zepernick Date: 2007-03-10 10:14:27 -0800 (Sat, 10 Mar 2007) Log Message: ----------- Feature Request 1566626. Added setIgnoreExtraColumns() method to the PZParser. Added the ability to ignore extra columns/bytes from delimited & fixed width files. Data is truncated when it goes outside of the column definition. Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderFixedPZParser.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2007-02-18 19:47:54 UTC (rev 284) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2007-03-10 18:14:27 UTC (rev 285) @@ -177,24 +177,24 @@ continue; } - //TODO - //seems like we may want to try doing something like this. I have my reservations because - //it is possible that we don't get a "detail" id and this might generate NPE - //is it going to create too much overhead to do a null check here as well??? - //final int intialSize = ParserUtils.getColumnMetaData(PZConstants.DETAIL_ID, getColumnMD()).size(); // column values - final List columns = ParserUtils.splitLine(line, getDelimiter(), getQualifier(), PZConstants.SPLITLINE_SIZE_INIT); + List columns = ParserUtils.splitLine(line, getDelimiter(), getQualifier(), PZConstants.SPLITLINE_SIZE_INIT); final String mdkey = ParserUtils.getCMDKeyForDelimitedFile(getColumnMD(), columns); final List cmds = ParserUtils.getColumnMetaData(mdkey, getColumnMD()); final int columnCount = cmds.size(); - // DEBUG - - // Incorrect record length on line log the error. Line - // will not be included in the dataset + if (columns.size() > columnCount) { - // log the error - addError(ds, "TOO MANY COLUMNS WANTED: " + columnCount + " GOT: " + columns.size(), lineCount, 2); - continue; + // Incorrect record length on line log the error. Line + // will not be included in the dataset log the error + if (isIgnoreExtraColumns()) { + //user has choosen to ignore the fact that we have too many columns in the data from + //what the mapping has described. sublist the array to remove un-needed columns + columns = columns.subList(0, columnCount); + addError(ds, "TRUNCATED LINE TO CORRECT NUMBER OF COLUMNS", lineCount, 1); + } else { + addError(ds, "TOO MANY COLUMNS WANTED: " + columnCount + " GOT: " + columns.size(), lineCount, 2); + continue; + } } else if (columns.size() < columnCount) { if (isHandlingShortLines()) { // We can pad this line out Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java 2007-02-18 19:47:54 UTC (rev 284) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java 2007-03-10 18:14:27 UTC (rev 285) @@ -129,12 +129,19 @@ final String mdkey = FixedWidthParserUtils.getCMDKey(getColumnMD(), line); final int recordLength = ((Integer) recordLengths.get(mdkey)).intValue(); - // Incorrect record length on line log the error. Line will not - // be included in the - // dataset if (line.length() > recordLength) { - addError(ds, "LINE TOO LONG. LINE IS " + line.length() + " LONG. SHOULD BE " + recordLength, lineCount, 2); - continue; + // Incorrect record length on line log the error. Line will not + // be included in the + // dataset + if (isIgnoreExtraColumns()) { + //user has choosen to ignore the fact that we have too many bytes in the fixed + //width file. Truncate the line to the correct length + line = line.substring(0, recordLength); + addError(ds, "TRUNCATED LINE TO CORRECT LENGTH", lineCount, 1); + } else { + addError(ds, "LINE TOO LONG. LINE IS " + line.length() + " LONG. SHOULD BE " + recordLength, lineCount, 2); + continue; + } } else if (line.length() < recordLength) { if (isHandlingShortLines()) { // We can pad this line out Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java 2007-02-18 19:47:54 UTC (rev 284) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java 2007-03-10 18:14:27 UTC (rev 285) @@ -38,12 +38,14 @@ import java.util.Map; /** - * @author xhensevb + * @author xhensevb * */ public abstract class AbstractPZParser implements PZParser { private boolean handlingShortLines = false; + + private boolean ignoreExtraColumns = false; private boolean initialised = false; @@ -91,6 +93,14 @@ public void setHandlingShortLines(final boolean handleShortLines) { this.handlingShortLines = handleShortLines; } + + public boolean isIgnoreExtraColumns() { + return ignoreExtraColumns; + } + + public void setIgnoreExtraColumns(boolean ignoreExtraColumns) { + this.ignoreExtraColumns = ignoreExtraColumns; + } public final DataSet parse() { if (!initialised) { Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java 2007-02-18 19:47:54 UTC (rev 284) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java 2007-03-10 18:14:27 UTC (rev 285) @@ -62,4 +62,20 @@ * producing an error */ void setHandlingShortLines(final boolean handleShortLines); + + /** + * + * @return true, detail lines with a length or column count > the mapping + * definition will be truncated and the reader will NOT register these + * lines as erros in the DataError collection. + */ + boolean isIgnoreExtraColumns(); + + /** + * + * @param ignoreExtraColumns when true, detail lines with a length or column + * count > the mapping definition will be truncated and the reader + * will NOT register these lines as erros in the DataError collection. + */ + void setIgnoreExtraColumns(final boolean ignoreExtraColumns); } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java 2007-02-18 19:47:54 UTC (rev 284) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java 2007-03-10 18:14:27 UTC (rev 285) @@ -133,7 +133,7 @@ //is it going to create too much overhead to do a null check here as well??? //final int intialSize = ParserUtils.getColumnMetaData(PZConstants.DETAIL_ID, getColumnMD()).size(); // column values - final List columns = ParserUtils.splitLine(line, getDelimiter(), getQualifier(), PZConstants.SPLITLINE_SIZE_INIT); + List columns = ParserUtils.splitLine(line, getDelimiter(), getQualifier(), PZConstants.SPLITLINE_SIZE_INIT); final String mdkey = ParserUtils.getCMDKeyForDelimitedFile(getColumnMD(), columns); final List cmds = ParserUtils.getColumnMetaData(mdkey, getColumnMD()); final int columnCount = cmds.size(); @@ -142,9 +142,16 @@ // Incorrect record length on line log the error. Line // will not be included in the dataset if (columns.size() > columnCount) { - // log the error - addError(ds, "TOO MANY COLUMNS WANTED: " + columnCount + " GOT: " + columns.size(), getLineCount(), 2); - continue; + if (isIgnoreExtraColumns()) { + //user has choosen to ignore the fact that we have too many columns in the data from + //what the mapping has described. sublist the array to remove un-needed columns + columns = columns.subList(0, columnCount); + addError(ds, "TRUNCATED LINE TO CORRECT NUMBER OF COLUMNS", getLineCount(), 1); + } else { + //log the error + addError(ds, "TOO MANY COLUMNS WANTED: " + columnCount + " GOT: " + columns.size(), getLineCount(), 2); + continue; + } } else if (columns.size() < columnCount) { if (isHandlingShortLines()) { // We can pad this line out Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderFixedPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderFixedPZParser.java 2007-02-18 19:47:54 UTC (rev 284) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderFixedPZParser.java 2007-03-10 18:14:27 UTC (rev 285) @@ -116,12 +116,19 @@ final String mdkey = FixedWidthParserUtils.getCMDKey(getColumnMD(), line); final int recordLength = ((Integer) recordLengths.get(mdkey)).intValue(); - // Incorrect record length on line log the error. Line will not - // be included in the - // dataset if (line.length() > recordLength) { - addError(ds, "LINE TOO LONG. LINE IS " + line.length() + " LONG. SHOULD BE " + recordLength, lineCount, 2); - continue; + // Incorrect record length on line log the error. Line will not + // be included in the + // dataset + if (isIgnoreExtraColumns()) { + //user has choosen to ignore the fact that we have too many bytes in the fixed + //width file. Truncate the line to the correct length + line = line.substring(0, recordLength); + addError(ds, "TRUNCATED LINE TO CORRECT LENGTH", lineCount, 1); + } else { + addError(ds, "LINE TOO LONG. LINE IS " + line.length() + " LONG. SHOULD BE " + recordLength, lineCount, 2); + continue; + } } else if (line.length() < recordLength) { if (isHandlingShortLines()) { // We can pad this line out This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2007-03-21 11:30:29
|
Revision: 292 http://svn.sourceforge.net/pzfilereader/?rev=292&view=rev Author: zepernick Date: 2007-03-21 04:30:20 -0700 (Wed, 21 Mar 2007) Log Message: ----------- - Adding support for java.io.Reader in PZParser. This is now the preferred method for reading files. - Deprecated File and InputStream parsers Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultPZParserFactory.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderFixedPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZParseFactory.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2007-03-21 00:53:12 UTC (rev 291) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2007-03-21 11:30:20 UTC (rev 292) @@ -37,6 +37,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.io.Reader; import java.util.List; import org.slf4j.Logger; @@ -48,6 +49,7 @@ /** * @author xhensevb + * @author zepernick * */ public abstract class AbstractDelimiterPZParser extends AbstractPZParser { @@ -61,7 +63,7 @@ private final Logger logger = LoggerFactory.getLogger(AbstractDelimiterPZParser.class); - public AbstractDelimiterPZParser(final InputStream dataSourceStream, final String dataDefinition, final char delimiter, + /*public AbstractDelimiterPZParser(final InputStream dataSourceStream, final String dataDefinition, final char delimiter, final char qualifier, final boolean ignoreFirstRecord) { super(dataSourceStream, dataDefinition); this.delimiter = delimiter; @@ -83,12 +85,30 @@ this.delimiter = delimiter; this.qualifier = qualifier; this.ignoreFirstRecord = ignoreFirstRecord; + }*/ + + public AbstractDelimiterPZParser(final Reader dataSourceReader, final String dataDefinition, final char delimiter, + final char qualifier, final boolean ignoreFirstRecord) { + super(dataSourceReader, dataDefinition); + this.delimiter = delimiter; + this.qualifier = qualifier; + this.ignoreFirstRecord = ignoreFirstRecord; } + + + public AbstractDelimiterPZParser(final Reader dataSourceReader, final char delimiter, final char qualifier, + final boolean ignoreFirstRecord) { + super(dataSourceReader); + this.delimiter = delimiter; + this.qualifier = qualifier; + this.ignoreFirstRecord = ignoreFirstRecord; + } public DataSet doParse() { try { lineCount = 0; - if (getDataSourceStream() != null) { + return doDelimitedFile(getDataSourceReader(), shouldCreateMDFromFile()); + /* if (getDataSourceStream() != null) { return doDelimitedFile(getDataSourceStream(), shouldCreateMDFromFile()); } else { InputStream stream = null; @@ -100,7 +120,7 @@ stream.close(); } } - } + }*/ } catch (final IOException e) { logger.error("error accessing/creating inputstream", e); } @@ -144,12 +164,10 @@ * puts together the dataset for a DELIMITED file. This is used for PZ XML * mappings, and SQL table mappings */ - private DataSet doDelimitedFile(final InputStream dataSource, final boolean createMDFromFile) throws IOException { + private DataSet doDelimitedFile(final Reader dataSource, final boolean createMDFromFile) throws IOException { if (dataSource == null) { throw new NullPointerException("dataSource is null"); } - - InputStreamReader isr = null; BufferedReader br = null; final DefaultDataSet ds = new DefaultDataSet(getColumnMD()); try { @@ -159,8 +177,7 @@ // get the total column count // columnCount = columnMD.size(); - isr = new InputStreamReader(dataSource); - br = new BufferedReader(isr); + br = new BufferedReader(dataSource); boolean processedFirst = false; /** loop through each line in the file */ @@ -220,12 +237,10 @@ ds.addRow(row); } } finally { - if (isr != null) { - isr.close(); - } if (br != null) { br.close(); } + closeReaders(); } return ds; } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java 2007-03-21 00:53:12 UTC (rev 291) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java 2007-03-21 11:30:20 UTC (rev 292) @@ -33,10 +33,8 @@ package net.sf.pzfilereader; import java.io.BufferedReader; -import java.io.File; import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; +import java.io.Reader; import java.util.List; import java.util.Map; @@ -55,7 +53,7 @@ public abstract class AbstractFixedLengthPZParser extends AbstractPZParser { private final Logger logger = LoggerFactory.getLogger(AbstractFixedLengthPZParser.class); - protected AbstractFixedLengthPZParser(final File dataSource, final String dataDefinition) { + /* protected AbstractFixedLengthPZParser(final File dataSource, final String dataDefinition) { super(dataSource, dataDefinition); } @@ -69,11 +67,19 @@ protected AbstractFixedLengthPZParser(final InputStream dataSourceStream) { super(dataSourceStream); + }*/ + + protected AbstractFixedLengthPZParser(final Reader dataSourceReader, final String dataDefinition) { + super(dataSourceReader, dataDefinition); } + protected AbstractFixedLengthPZParser(final Reader dataSourceReader) { + super(dataSourceReader); + } + public DataSet doParse() { try { - if (getDataSourceStream() != null) { + /* if (getDataSourceStream() != null) { return doFixedLengthFile(getDataSourceStream()); } else { InputStream stream; @@ -85,9 +91,10 @@ stream.close(); } } - } + }*/ + return doFixedLengthFile(getDataSourceReader()); } catch (final IOException e) { - logger.error("error accessing/creating inputstream", e); + logger.error("error accessing/reading data", e); } return null; } @@ -99,8 +106,7 @@ * puts together the dataset for fixed length file. This is used for PZ XML * mappings, and SQL table mappings */ - private DataSet doFixedLengthFile(final InputStream dataSource) throws IOException { - InputStreamReader isr = null; + private DataSet doFixedLengthFile(final Reader dataSource) throws IOException { BufferedReader br = null; final DefaultDataSet ds = new DefaultDataSet(getColumnMD()); @@ -112,8 +118,7 @@ final Map recordLengths = ParserUtils.calculateRecordLengths(getColumnMD()); // Read in the flat file - isr = new InputStreamReader(dataSource); - br = new BufferedReader(isr); + br = new BufferedReader(dataSource); String line = null; int lineCount = 0; // map of record lengths corrisponding to the ID's in the columnMD @@ -177,12 +182,10 @@ ds.addRow(row); } } finally { - if (isr != null) { - isr.close(); - } if (br != null) { br.close(); } + closeReaders(); } return ds; } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java 2007-03-21 00:53:12 UTC (rev 291) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java 2007-03-21 11:30:20 UTC (rev 292) @@ -32,13 +32,17 @@ */ package net.sf.pzfilereader; -import java.io.File; -import java.io.InputStream; +import java.io.IOException; +import java.io.Reader; +import java.util.ArrayList; +import java.util.Iterator; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; /** * @author xhensevb + * @author zepernick * */ public abstract class AbstractPZParser implements PZParser { @@ -54,12 +58,16 @@ private String dataDefinition = null; - private InputStream dataSourceStream = null; + // private InputStream dataSourceStream = null; - private File dataSource = null; + // private File dataSource = null; + + private Reader dataSourceReader = null; + + private List readersToClose = null; - protected AbstractPZParser(final File dataSource) { - this.dataSource = dataSource; + /*protected AbstractPZParser(final File dataSource) { + this.dataSourceReader = new FileReader(dataSource); } protected AbstractPZParser(final InputStream dataSourceStream) { @@ -74,7 +82,16 @@ protected AbstractPZParser(final InputStream dataSourceStream, final String dataDefinition) { this.dataSourceStream = dataSourceStream; this.dataDefinition = dataDefinition; + }*/ + + protected AbstractPZParser(final Reader dataSourceReader) { + this.dataSourceReader = dataSourceReader; } + + protected AbstractPZParser(final Reader dataSourceReader, final String dataDefinition) { + this.dataSourceReader = dataSourceReader; + this.dataDefinition = dataDefinition; + } /* * (non-Javadoc) @@ -116,6 +133,28 @@ protected void setColumnMD(final Map map) { columnMD = map; } + + //this is used for backward compatability. We are instantiating Readers from + //InputStream and File from previous versions. Close out any Readers in the + //readersToClose list. This can be removed after we remove the deprecated methods + protected void closeReaders() throws IOException{ + if (readersToClose != null) { + final Iterator readersToCloseIt = readersToClose.iterator(); + while (readersToCloseIt.hasNext()) { + final Reader r = (Reader)readersToCloseIt.next(); + r.close(); + } + } + } + + //adds a reader to the close list. the list will be processed after parsing is + //completed. + protected void addToCloseReaderList(final Reader r) { + if (readersToClose == null) { + readersToClose = new ArrayList(); + } + readersToClose.add(r); + } protected void addToColumnMD(final Object key, final Object value) { if (columnMD == null) { @@ -140,7 +179,7 @@ this.dataDefinition = dataDefinition; } - protected File getDataSource() { + /* protected File getDataSource() { return dataSource; } @@ -154,7 +193,7 @@ protected void setDataSourceStream(final InputStream dataSourceStream) { this.dataSourceStream = dataSourceStream; - } + }*/ protected Map getColumnMD() { return columnMD; @@ -176,4 +215,18 @@ ds.addError(de); } + /** + * @return the dataSourceReader + */ + protected Reader getDataSourceReader() { + return dataSourceReader; + } + + /** + * @param dataSourceReader the dataSourceReader to set + */ + protected void setDataSourceReader(Reader dataSourceReader) { + this.dataSourceReader = dataSourceReader; + } + } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java 2007-03-21 00:53:12 UTC (rev 291) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java 2007-03-21 11:30:20 UTC (rev 292) @@ -34,6 +34,8 @@ import java.io.FileNotFoundException; import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; import java.sql.Connection; import java.sql.SQLException; import java.util.List; @@ -43,20 +45,37 @@ /** * @author xhensevb + * @author zepernick * */ public class DBDelimiterPZParser extends AbstractDelimiterPZParser { - private Connection con; + + private InputStream dataSourceStream; public DBDelimiterPZParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition, final char delimiter, final char qualifier, final boolean ignoreFirstRecord) { - super(dataSourceStream, dataDefinition, delimiter, qualifier, ignoreFirstRecord); + super(null, dataDefinition, delimiter, qualifier, ignoreFirstRecord); this.con = con; + this.dataSourceStream = dataSourceStream; } + + public DBDelimiterPZParser(final Connection con, final Reader dataSourceReader, final String dataDefinition, + final char delimiter, final char qualifier, final boolean ignoreFirstRecord) { + super(dataSourceReader, dataDefinition, delimiter, qualifier, ignoreFirstRecord); + this.con = con; + } protected void init() { try { + //check to see if the user is using a InputStream. This is + //here for backwards compatability + if (dataSourceStream != null) { + final Reader r = new InputStreamReader(dataSourceStream); + setDataSourceReader(r); + addToCloseReaderList(r); + } + final List cmds = ParserUtils.buildMDFromSQLTable(con, getDataDefinition()); addToColumnMD(PZConstants.DETAIL_ID, cmds); addToColumnMD(PZConstants.COL_IDX, ParserUtils.buidColumnIndexMap(cmds)); @@ -66,11 +85,9 @@ } setInitialised(true); } catch (final SQLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + throw new InitialisationException(e); } catch (final FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + throw new InitialisationException(e); } } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java 2007-03-21 00:53:12 UTC (rev 291) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java 2007-03-21 11:30:20 UTC (rev 292) @@ -34,34 +34,66 @@ import java.io.File; import java.io.FileNotFoundException; +import java.io.FileReader; import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; import java.sql.Connection; import java.sql.SQLException; import java.util.List; + import net.sf.pzfilereader.util.PZConstants; import net.sf.pzfilereader.util.ParserUtils; /** * @author xhensevb + * @author zepernick * */ public class DBFixedLengthPZParser extends AbstractFixedLengthPZParser { - private Connection con; + + //this InputStream and file can be removed after support for + //file and inputstream is removed from the parserfactory. The + //methods have been deprecated..pz + private InputStream dataSourceStream = null; + + private File dataSource = null; public DBFixedLengthPZParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition) { - super(dataSourceStream, dataDefinition); + //Reader will be setup in the init(), passing null for now. + //this constructor will eventually be deleted + super(null, dataDefinition); this.con = con; + this.dataSourceStream = dataSourceStream; } public DBFixedLengthPZParser(final Connection con, final File dataSource, final String dataDefinition) { - super(dataSource, dataDefinition); + super(null, dataDefinition); this.con = con; + this.dataSource = dataSource; } + public DBFixedLengthPZParser(final Connection con, final Reader dataSourceReader, final String dataDefinition) { + super(dataSourceReader, dataDefinition); + this.con = con; + } + protected void init() { try { + //check to see if the user is using a File or InputStream. This is + //here for backwards compatability + if (dataSourceStream != null) { + final Reader r = new InputStreamReader(dataSourceStream); + setDataSourceReader(r); + addToCloseReaderList(r); + } else if (dataSource != null){ + final Reader r = new FileReader(dataSource); + setDataSourceReader(r); + addToCloseReaderList(r); + } + final List cmds = ParserUtils.buildMDFromSQLTable(con, getDataDefinition()); addToColumnMD(PZConstants.DETAIL_ID, cmds); @@ -73,11 +105,9 @@ setInitialised(true); } catch (final SQLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + throw new InitialisationException(e); } catch (final FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + throw new InitialisationException(e); } } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultPZParserFactory.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultPZParserFactory.java 2007-03-21 00:53:12 UTC (rev 291) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultPZParserFactory.java 2007-03-21 11:30:20 UTC (rev 292) @@ -34,6 +34,7 @@ import java.io.File; import java.io.InputStream; +import java.io.Reader; import java.sql.Connection; /** @@ -86,6 +87,14 @@ public PZParser newFixedLengthParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream) { return new FixedLengthPZParser(pzmapXMLStream, dataSourceStream); } + + public PZParser newFixedLengthParser(final Connection con, final Reader dataSource, final String dataDefinition) { + return new DBFixedLengthPZParser(con, dataSource, dataDefinition); + } + + public PZParser newFixedLengthParser(final Reader pzmapXMLStream, final Reader dataSource) { + return new FixedLengthPZParser(pzmapXMLStream, dataSource); + } /* * (non-Javadoc) @@ -139,5 +148,17 @@ public PZParser newDelimitedParser(final InputStream dataSourceStream, final char delimiter, final char qualifier) { return new DelimiterPZParser(dataSourceStream, delimiter, qualifier, false); } + + public PZParser newDelimitedParser(Connection con, Reader dataSource, String dataDefinition, char delimiter, char qualifier, boolean ignoreFirstRecord) { + return new DBDelimiterPZParser(con, dataSource, dataDefinition, delimiter, qualifier, ignoreFirstRecord); + } + + public PZParser newDelimitedParser(Reader dataSource, char delimiter, char qualifier) { + return new DelimiterPZParser(dataSource, delimiter, qualifier, false); + } + + public PZParser newDelimitedParser(Reader pzmapXML, Reader dataSource, char delimiter, char qualifier, boolean ignoreFirstRecord) { + return new DelimiterPZParser(pzmapXML, dataSource, delimiter, qualifier, ignoreFirstRecord); + } } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java 2007-03-21 00:53:12 UTC (rev 291) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java 2007-03-21 11:30:20 UTC (rev 292) @@ -33,8 +33,11 @@ package net.sf.pzfilereader; import java.io.File; +import java.io.FileReader; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; import net.sf.pzfilereader.util.ParserUtils; import net.sf.pzfilereader.xml.PZMapParser; @@ -49,42 +52,89 @@ private InputStream pzmapXMLStream = null; private File pzmapXML = null; + + private Reader pzmapReader; + + //this InputStream and file can be removed after support for + //file and inputstream is removed from the parserfactory. The + //methods have been deprecated..pz + private InputStream dataSourceStream = null; + + private File dataSource = null; + public DelimiterPZParser(final File pzmapXML, final File dataSource, final char delimiter, final char qualifier, final boolean ignoreFirstRecord) { - super(dataSource, delimiter, qualifier, ignoreFirstRecord); + super(null, delimiter, qualifier, ignoreFirstRecord); this.pzmapXML = pzmapXML; + this.dataSource = dataSource; } public DelimiterPZParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream, final char delimiter, final char qualifier, final boolean ignoreFirstRecord) { - super(dataSourceStream, delimiter, qualifier, ignoreFirstRecord); + super(null, delimiter, qualifier, ignoreFirstRecord); this.pzmapXMLStream = pzmapXMLStream; + this.dataSourceStream = dataSourceStream; } public DelimiterPZParser(final File dataSource, final char delimiter, final char qualifier, final boolean ignoreFirstRecord) { - super(dataSource, delimiter, qualifier, ignoreFirstRecord); + super(null, delimiter, qualifier, ignoreFirstRecord); + this.dataSource = dataSource; } public DelimiterPZParser(final InputStream dataSourceStream, final char delimiter, final char qualifier, final boolean ignoreFirstRecord) { - super(dataSourceStream, delimiter, qualifier, ignoreFirstRecord); + super(null, delimiter, qualifier, ignoreFirstRecord); + this.dataSourceStream = dataSourceStream; } + + public DelimiterPZParser(final Reader dataSourceReader, final char delimiter, final char qualifier, + final boolean ignoreFirstRecord) { + super(dataSourceReader, delimiter, qualifier, ignoreFirstRecord); + } + + public DelimiterPZParser(final Reader dataSourceReader, final Reader pzmapReader, final char delimiter, final char qualifier, + final boolean ignoreFirstRecord) { + super(dataSourceReader, delimiter, qualifier, ignoreFirstRecord); + this.pzmapReader = pzmapReader; + } protected void init() { try { - if (pzmapXMLStream != null) { - setColumnMD(PZMapParser.parse(pzmapXMLStream)); - } else if (pzmapXML != null) { - final InputStream stream = ParserUtils.createInputStream(pzmapXML); + //check to see if the user is using a File or InputStream. This is + //here for backwards compatability + if (dataSourceStream != null) { + final Reader r = new InputStreamReader(dataSourceStream); + setDataSourceReader(r); + addToCloseReaderList(r); + } else if (dataSource != null){ + final Reader r = new FileReader(dataSource); + setDataSourceReader(r); + addToCloseReaderList(r); + } + + + boolean closeMapReader = false; + if (pzmapXML != null) { + this.pzmapReader = new FileReader(pzmapXML); + closeMapReader = true; + } else if (pzmapXMLStream != null) { + this.pzmapReader = new InputStreamReader(pzmapXMLStream); + closeMapReader = true; + } + + if (this.pzmapReader != null) { try { - setColumnMD(PZMapParser.parse(stream)); + setColumnMD(PZMapParser.parse(this.pzmapReader)); } finally { - if (stream != null) { - stream.close(); + if (closeMapReader) { + //only close the reader if it is one we created + //otherwise we will let the user handle it + this.pzmapReader.close(); } } } + setInitialised(true); } catch (final JDOMException e) { throw new InitialisationException(e); @@ -94,6 +144,6 @@ } protected boolean shouldCreateMDFromFile() { - return pzmapXML == null && pzmapXMLStream == null; + return pzmapReader == null; } } \ No newline at end of file Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java 2007-03-21 00:53:12 UTC (rev 291) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java 2007-03-21 11:30:20 UTC (rev 292) @@ -33,47 +33,87 @@ package net.sf.pzfilereader; import java.io.File; +import java.io.FileReader; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; -import net.sf.pzfilereader.util.ParserUtils; import net.sf.pzfilereader.xml.PZMapParser; import org.jdom.JDOMException; /** * @author xhensevb + * @author zepernick * */ public class FixedLengthPZParser extends AbstractFixedLengthPZParser { private InputStream pzmapXMLStream; private File pzmapXML; + + private Reader pzmapReader; + + //this InputStream and file can be removed after support for + //file and inputstream is removed from the parserfactory. The + //methods have been deprecated..pz + private InputStream dataSourceStream = null; + + private File dataSource = null; public FixedLengthPZParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream) { - super(dataSourceStream); + super(null); this.pzmapXMLStream = pzmapXMLStream; + this.dataSourceStream = dataSourceStream; } public FixedLengthPZParser(final File pzmapXML, final File dataSource) { - super(dataSource); + super(null); this.pzmapXML = pzmapXML; + this.dataSource = dataSource; } + + public FixedLengthPZParser(final Reader pzmapReader, final Reader dataSourceReader) { + super (dataSourceReader); + this.pzmapReader = pzmapReader; + } protected void init() { try { - if (pzmapXMLStream != null) { - setColumnMD(PZMapParser.parse(pzmapXMLStream)); - } else { - final InputStream stream = ParserUtils.createInputStream(pzmapXML); - try { - setColumnMD(PZMapParser.parse(stream)); - } finally { - if (stream != null) { - stream.close(); - } + //check to see if the user is using a File or InputStream. This is + //here for backwards compatability + if (dataSourceStream != null) { + final Reader r = new InputStreamReader(dataSourceStream); + setDataSourceReader(r); + addToCloseReaderList(r); + } else if (dataSource != null){ + final Reader r = new FileReader(dataSource); + setDataSourceReader(r); + addToCloseReaderList(r); + } + + + boolean closeMapReader = false; + if (pzmapXML != null) { + this.pzmapReader = new FileReader(pzmapXML); + closeMapReader = true; + } else if (pzmapXMLStream != null) { + this.pzmapReader = new InputStreamReader(pzmapXMLStream); + closeMapReader = true; + } + + try { + setColumnMD(PZMapParser.parse(this.pzmapReader)); + } finally { + if (closeMapReader) { + //only close the reader if it is one we created + //otherwise we will let the user handle it + this.pzmapReader.close(); } } + + // setInitialised(true); } catch (final JDOMException e) { throw new InitialisationException(e); } catch (final IOException e) { Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java 2007-03-21 00:53:12 UTC (rev 291) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java 2007-03-21 11:30:20 UTC (rev 292) @@ -34,6 +34,7 @@ import java.io.File; import java.io.InputStream; +import java.io.Reader; import java.sql.Connection; /** @@ -58,6 +59,9 @@ * @param dataDefinition - * Name of dataDefinition in the DATAFILE table DATAFILE_DESC * column + * @deprecated Please use the newFixedLengthParser(Connection, Reader, String). The File can be + * wrapped in a "new FileReader(File)" + * @return PZParser */ PZParser newFixedLengthParser(final Connection con, final File dataSource, final String dataDefinition); @@ -75,6 +79,9 @@ * @param dataDefinition - * Name of dataDefinition in the DATAFILE table DATAFILE_DESC * column + * @deprecated Please use the newFixedLengthParser(Connection, Reader, String). The InputStream can be + * wrapped in a "new InputStreamReader(InputStream)" + * @return PZParser */ PZParser newFixedLengthParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition); @@ -86,6 +93,9 @@ * Reference to the xml file holding the pzmap * @param dataSource - * Delimited file to read from + * @deprecated Please use the newFixedLengthParser(Reader, Reader). The File can be + * wrapped in a "new FileReader(InputStream)" + * @return PZParser */ PZParser newFixedLengthParser(final File pzmapXML, final File dataSource); @@ -101,8 +111,45 @@ * @param dataSourceStream - * Delimited file InputStream to read from, user must close them * after use. + * @deprecated Please use the newFixedLengthParser(Reader, Reader). The InputStream can be + * wrapped in a "new InputStreamReader(InputStream)" + * @return PZParser */ PZParser newFixedLengthParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream); + + /** + * Constructs a new DataSet using the database table file layout method. + * This is used for a FIXED LENGTH text file. + * + * The user is responsible for closing the DB connection. + * + * @param con - + * Connection to database with DATAFILE and DATASTRUCTURE tables, + * user is responsible for closing it. + * @param dataSource - + * Fixed length file to read from + * @param dataDefinition - + * Name of dataDefinition in the DATAFILE table DATAFILE_DESC + * column + * @return PZParser + */ + PZParser newFixedLengthParser(final Connection con, final Reader dataSource, final String dataDefinition); + + /** + * New constructor based on Reader. Constructs a new DataSet using the + * PZMAP XML file layout method. This is used for a FIXED LENGTH text file. + * + * The user is responsible for closing the Readers. + * + * @param pzmapXMLStream - + * Reference to the xml Reader holding the pzmap, user + * must close them after use. + * @param dataSource - + * Delimited file Reader to read from, user must close them + * after use. + * @return PZParser + */ + PZParser newFixedLengthParser(final Reader pzmapXMLStream, final Reader dataSource); // // @@ -111,7 +158,7 @@ // /** - * New constructor based on InputStream. Constructs a new DataSet using the + * Constructs a new DataSet using the * database table file layout method. This is used for a DELIMITED text * file. esacpe sequence reference: \n newline <br> * \t tab <br> @@ -124,7 +171,7 @@ * @param con - * Connection to database with DATAFILE and DATASTRUCTURE tables, * user must close it when done. - * @param dataSourceStream - + * @param dataSource - * text file datasource InputStream to read from, user must close * it when done. * @param dataDefinition - @@ -136,9 +183,43 @@ * Char text is qualified by * @param ignoreFirstRecord - * skips the first line that contains data in the file + * @deprecated Please use the newDelimitedParser(Connection, Reader, String, char, char, boolean). + * The InputStream can be wrapped in a "new InputStreamReader(InputStream)" + * @return PZParser */ - PZParser newDelimitedParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition, + PZParser newDelimitedParser(final Connection con, final InputStream dataSource, final String dataDefinition, final char delimiter, final char qualifier, final boolean ignoreFirstRecord); + + /** + * New constructor based on Reader. Constructs a new DataSet using the + * database table file layout method. This is used for a DELIMITED text + * file. esacpe sequence reference: \n newline <br> + * \t tab <br> + * \b backspace <br> + * \r return <br> + * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote + * + * The user is responsible for closing the DB connection and InputStream. + * + * @param con - + * Connection to database with DATAFILE and DATASTRUCTURE tables, + * user must close it when done. + * @param dataSource - + * text file datasource InputStream to read from, user must close + * it when done. + * @param dataDefinition - + * Name of dataDefinition in the DATAFILE table DATAFILE_DESC + * column + * @param delimiter - + * Char the file is delimited By + * @param qualifier - + * Char text is qualified by + * @param ignoreFirstRecord - + * skips the first line that contains data in the file + * @return PZParser + */ + PZParser newDelimitedParser(final Connection con, final Reader dataSource, final String dataDefinition, + final char delimiter, final char qualifier, final boolean ignoreFirstRecord); /** * Constructs a new DataSet using the PZMAP XML file layout method. This is @@ -159,11 +240,39 @@ * Char text is qualified by * @param ignoreFirstRecord - * skips the first line that contains data in the file + * @deprecated Please use the newDelimitedParser(Reader, Reader, String, char, char, boolean). + * The File can be wrapped in a "new FileReader(File)" + * @return PZParser */ PZParser newDelimitedParser(final File pzmapXML, final File dataSource, final char delimiter, final char qualifier, final boolean ignoreFirstRecord); /** + * Constructs a new DataSet using the PZMAP XML file layout method. This is + * used for a DELIMITED text file. esacpe sequence reference: \n newline + * <br> + * \t tab <br> + * \b backspace <br> + * \r return <br> + * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote + * + * @param pzmapXML - + * Reference to the xml file holding the pzmap + * @param dataSource - + * text file datasource to read from + * @param delimiter - + * Char the file is delimited By + * @param qualifier - + * Char text is qualified by + * @param ignoreFirstRecord - + * skips the first line that contains data in the file + * @return PZParser + */ + PZParser newDelimitedParser(final Reader pzmapXML, final Reader dataSource, final char delimiter, final char qualifier, + final boolean ignoreFirstRecord); + + + /** * New constructor based on InputStream. Constructs a new DataSet using the * PZMAP XML file layout method. This is used for a DELIMITED text file. * esacpe sequence reference: \n newline <br> @@ -186,6 +295,9 @@ * Char text is qualified by * @param ignoreFirstRecord - * skips the first line that contains data in the file + * @deprecated Please use the newDelimitedParser(Reader, Reader, String, char, char, boolean). + * The InputStream can be wrapped in a "new InputStreamReader(InputStream)" + * @return PZParser */ PZParser newDelimitedParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream, final char delimiter, final char qualifier, final boolean ignoreFirstRecord); @@ -205,8 +317,30 @@ * Char the file is delimited By * @param qualifier - * Char text is qualified by + * @deprecated Please use the newDelimitedParser(Reader, char, char, boolean). + * The InputStream can be wrapped in a "new FileReader(File)" + * @return PZParser */ PZParser newDelimitedParser(final File dataSource, final char delimiter, final char qualifier); + + /** + * Constructs a new DataSet using the first line of data found in the text + * file as the column names. This is used for a DELIMITED text file. esacpe + * sequence reference: \n newline <br> + * \t tab <br> + * \b backspace <br> + * \r return <br> + * \f form feed <br> \\ backslash <br> \' single quote <br> \" double quote + * + * @param dataSource - + * text file datasource to read from + * @param delimiter - + * Char the file is delimited By + * @param qualifier - + * Char text is qualified by + * @return PZParser + */ + PZParser newDelimitedParser(final Reader dataSource, final char delimiter, final char qualifier); /** * Constructs a new DataSet using the first line of data found in the text @@ -226,6 +360,9 @@ * Char the file is delimited By * @param qualifier - * Char text is qualified by + * @deprecated Please use the newDelimitedParser(Reader, char, char, boolean). + * The InputStream can be wrapped in a "new InputStreamReader(InputStream)" + * @return PZParser */ PZParser newDelimitedParser(final InputStream dataSource, final char delimiter, final char qualifier); } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java 2007-03-21 00:53:12 UTC (rev 291) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java 2007-03-21 11:30:20 UTC (rev 292) @@ -36,7 +36,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.io.InputStreamReader; +import java.io.Reader; import java.util.List; import java.util.Map; @@ -53,8 +53,6 @@ public class BuffReaderDelimPZParser extends DelimiterPZParser { private BufferedReader br; - private InputStreamReader isr; - private boolean processedFirst = false; private final Logger logger = LoggerFactory.getLogger(BuffReaderDelimPZParser.class); @@ -78,20 +76,24 @@ super(dataSourceStream, delimiter, qualifier, ignoreFirstRecord); } + public BuffReaderDelimPZParser(final Reader pzmapXML, final Reader dataSource, final char delimiter, final char qualifier, + final boolean ignoreFirstRecord) { + super(pzmapXML, dataSource, delimiter, qualifier, ignoreFirstRecord); + } + public BuffReaderDelimPZParser(final Reader dataSourceStream, final char delimiter, final char qualifier, + final boolean ignoreFirstRecord) { + super(dataSourceStream, delimiter, qualifier, ignoreFirstRecord); + } + public DataSet doParse() { final DataSet ds = new BuffReaderPZDataSet(getColumnMD(), this); try { //gather the conversion properties ds.setPZConvertProps(ParserUtils.loadConvertProperties()); - if (getDataSourceStream() == null) { - setDataSourceStream(ParserUtils.createInputStream(getDataSource())); - } + br = new BufferedReader(getDataSourceReader()); - isr = new InputStreamReader(getDataSourceStream()); - br = new BufferedReader(isr); - return ds; } catch(IOException ex) { @@ -188,10 +190,6 @@ br.close(); br = null; } - if (isr != null) { - isr.close(); - isr = null; - } } //try to clean up the file handles automatically if Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderFixedPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderFixedPZParser.java 2007-03-21 00:53:12 UTC (rev 291) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderFixedPZParser.java 2007-03-21 11:30:20 UTC (rev 292) @@ -36,7 +36,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.io.InputStreamReader; +import java.io.Reader; import java.util.List; import java.util.Map; @@ -53,9 +53,7 @@ public class BuffReaderFixedPZParser extends FixedLengthPZParser{ private BufferedReader br = null; - - private InputStreamReader isr; - + private int lineCount = 0; private Map recordLengths = null; @@ -70,7 +68,11 @@ super(pzmapXML, dataSource); } + public BuffReaderFixedPZParser(final Reader pzmapXML, final Reader dataSource) { + super(pzmapXML, dataSource); + } + public DataSet doParse() { final DataSet ds = new BuffReaderPZDataSet(getColumnMD(), this); lineCount = 0; @@ -79,13 +81,8 @@ //gather the conversion properties ds.setPZConvertProps(ParserUtils.loadConvertProperties()); - if (getDataSourceStream() == null) { - setDataSourceStream(ParserUtils.createInputStream(getDataSource())); - } + br = new BufferedReader(getDataSourceReader()); - isr = new InputStreamReader(getDataSourceStream()); - br = new BufferedReader(isr); - return ds; } catch(IOException ex) { @@ -167,9 +164,6 @@ if (br != null) { br.close(); } - if (isr != null) { - isr.close(); - } } //try to clean up the file handles automatically if Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZParseFactory.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZParseFactory.java 2007-03-21 00:53:12 UTC (rev 291) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZParseFactory.java 2007-03-21 11:30:20 UTC (rev 292) @@ -34,6 +34,7 @@ import java.io.File; import java.io.InputStream; +import java.io.Reader; import java.sql.Connection; import net.sf.pzfilereader.PZParser; @@ -82,6 +83,17 @@ public PZParser newFixedLengthParser(final File pzmapXML, final File dataSource) { return new BuffReaderFixedPZParser(pzmapXML, dataSource); } + + /** + * Not supported at this time. + */ + public PZParser newFixedLengthParser(Connection con, Reader dataSource, String dataDefinition) { + throw new UnsupportedOperationException("Not supported..."); + } + + public PZParser newFixedLengthParser(Reader pzmapXMLStream, Reader dataSource) { + return new BuffReaderFixedPZParser(pzmapXMLStream, dataSource); + } /* * (non-Javadoc) @@ -142,4 +154,19 @@ public PZParser newDelimitedParser(final InputStream dataSourceStream, final char delimiter, final char qualifier) { return new BuffReaderDelimPZParser(dataSourceStream, delimiter, qualifier, false); } + + /** + * Not supported at this time. + */ + public PZParser newDelimitedParser(Connection con, Reader dataSource, String dataDefinition, char delimiter, char qualifier, boolean ignoreFirstRecord) { + throw new UnsupportedOperationException("Not supported..."); + } + + public PZParser newDelimitedParser(Reader dataSource, char delimiter, char qualifier) { + return new BuffReaderDelimPZParser(dataSource, delimiter, qualifier, false); + } + + public PZParser newDelimitedParser(Reader pzmapXML, Reader dataSource, char delimiter, char qualifier, boolean ignoreFirstRecord) { + return new BuffReaderDelimPZParser(pzmapXML, dataSource, delimiter, qualifier, ignoreFirstRecord); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2007-04-21 16:44:36
|
Revision: 300 http://svn.sourceforge.net/pzfilereader/?rev=300&view=rev Author: zepernick Date: 2007-04-21 09:44:37 -0700 (Sat, 21 Apr 2007) Log Message: ----------- added an option to ignore parse warnings Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java 2007-04-21 15:43:02 UTC (rev 299) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java 2007-04-21 16:44:37 UTC (rev 300) @@ -54,6 +54,8 @@ private boolean columnNamesCaseSensitive = false; private boolean initialised = false; + + private boolean ignoreParseWarnings = false; /** Map of column metadata's */ private Map columnMD = null; @@ -213,6 +215,10 @@ * int errorLevel 1,2,3 1=warning 2=error 3= severe error */ protected void addError(final DefaultDataSet ds, final String errorDesc, final int lineNo, final int errorLevel) { + if (errorLevel == 1 && isIgnoreParseWarnings()) { + //user has selected to not log warnings in the parser + return; + } final DataError de = new DataError(errorDesc, lineNo, errorLevel); ds.addError(de); } @@ -238,5 +244,13 @@ public void setColumnNamesCaseSensitive(boolean columnNamesCaseSensitive) { this.columnNamesCaseSensitive = columnNamesCaseSensitive; } + + public boolean isIgnoreParseWarnings() { + return ignoreParseWarnings; + } + + public void setIgnoreParseWarnings(boolean ignoreParseWarnings) { + this.ignoreParseWarnings = ignoreParseWarnings; + } } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java 2007-04-21 15:43:02 UTC (rev 299) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java 2007-04-21 16:44:37 UTC (rev 300) @@ -97,4 +97,19 @@ * Example when false: Column name = AColumnName ; getString("acolumnname") would pass */ void setColumnNamesCaseSensitive(final boolean columnNamesCaseSensitive); + + /** + * Default is false + * + * @return true, warnings encountered durring parsing will not be included in the DataSet errors + */ + boolean isIgnoreParseWarnings(); + + + /** + * + * @param ignoreParseWarnings when true, warnings encountered durring parsing will not be included + * in the DataSet errors + */ + void setIgnoreParseWarnings(final boolean ignoreParseWarnings); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2007-04-21 22:33:48
|
Revision: 307 http://svn.sourceforge.net/pzfilereader/?rev=307&view=rev Author: zepernick Date: 2007-04-21 15:33:49 -0700 (Sat, 21 Apr 2007) Log Message: ----------- Feature request 1596087. ADded the ability to determine the correct <record> element based on the number of elements. This only applies to delimited files. Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/XMLRecordElement.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/pzfilereader.dtd Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2007-04-21 22:32:06 UTC (rev 306) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2007-04-21 22:33:49 UTC (rev 307) @@ -583,11 +583,17 @@ // others match } final XMLRecordElement recordXMLElement = (XMLRecordElement) entry.getValue(); - - if (recordXMLElement.getElementNumber() > lineElements.size()) { + + if (recordXMLElement.getElementCount() > 0 && + recordXMLElement.getElementCount() == lineElements.size()) { + //determing which <record> mapping to use by the number of elements + //contained on the line + return (String)entry.getKey(); + } else if (recordXMLElement.getElementNumber() > lineElements.size()) { // make sure the element referenced in the mapping exists continue; } + final String lineElement = (String) lineElements.get(recordXMLElement.getElementNumber() - 1); if (lineElement.equals(recordXMLElement.getIndicator())) { // we found the MD object we want to return Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java 2007-04-21 22:32:06 UTC (rev 306) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java 2007-04-21 22:33:49 UTC (rev 307) @@ -154,11 +154,11 @@ while (recordDescriptors.hasNext()) { final Element xmlElement = (Element) recordDescriptors.next(); - // make sure the id attribute does not have a value of "detail" this - // is the harcoded - // value we are using to mark columns specified outside of a - // <RECORD> element if (xmlElement.getAttributeValue("id").equals(PZConstants.DETAIL_ID)) { + // make sure the id attribute does not have a value of "detail" this + // is the harcoded + // value we are using to mark columns specified outside of a + // <RECORD> element throw new IllegalArgumentException( "The ID 'detail' on the <RECORD> element is reserved, please select another id"); } @@ -170,6 +170,7 @@ xmlre.setElementNumber(convertAttributeToInt(xmlElement.getAttribute("elementNumber"))); xmlre.setStartPosition(convertAttributeToInt(xmlElement.getAttribute("startPosition"))); xmlre.setEndPositition(convertAttributeToInt(xmlElement.getAttribute("endPosition"))); + xmlre.setElementCount(convertAttributeToInt(xmlElement.getAttribute("elementCount"))); mdIndex.put(xmlElement.getAttributeValue("id"), xmlre); } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/XMLRecordElement.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/XMLRecordElement.java 2007-04-21 22:32:06 UTC (rev 306) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/XMLRecordElement.java 2007-04-21 22:33:49 UTC (rev 307) @@ -31,6 +31,8 @@ private int endPositition = 0; private int elementNumber = 0; + + private int elementCount = 0; private String indicator; @@ -144,4 +146,24 @@ } return idx; } + + /** + * Used to determine the <record> mapping the row belongs to. Will + * only be evaluated if > 0. + * + * @return the elementCount + */ + public int getElementCount() { + return elementCount; + } + + /** + * Used to determine the <record> mapping the row belongs to. Will + * only be evaluated if > 0. + * + * @param elementCount the elementCount to set + */ + public void setElementCount(int elementCount) { + this.elementCount = elementCount; + } } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/pzfilereader.dtd =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/pzfilereader.dtd 2007-04-21 22:32:06 UTC (rev 306) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/pzfilereader.dtd 2007-04-21 22:33:49 UTC (rev 307) @@ -5,7 +5,8 @@ startPosition CDATA "1" endPosition CDATA "1" elementNumber CDATA "1" - indicator CDATA #REQUIRED> + elementCount CDATA "0" + indicator CDATA ""> <!ELEMENT COLUMN EMPTY> <!ATTLIST COLUMN name CDATA #REQUIRED length CDATA "1" > \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2006-10-27 11:53:03
|
Revision: 140 http://svn.sourceforge.net/pzfilereader/?rev=140&view=rev Author: benoitx Date: 2006-10-27 04:52:52 -0700 (Fri, 27 Oct 2006) Log Message: ----------- Removed some throw Exception Only non-runtime exceptions should be declared and never at the 'Exception' level, which is far too generic and forces every caller to deal with something which is 'unknonwn' Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java 2006-10-27 01:05:51 UTC (rev 139) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java 2006-10-27 11:52:52 UTC (rev 140) @@ -59,7 +59,7 @@ * Name of dataDefinition in the DATAFILE table DATAFILE_DESC * column */ - PZParser newParser(final Connection con, final File dataSource, final String dataDefinition); + PZParser newFixedLengthParser(final Connection con, final File dataSource, final String dataDefinition); /** * Constructs a new DataSet using the database table file layout method. @@ -76,7 +76,7 @@ * Name of dataDefinition in the DATAFILE table DATAFILE_DESC * column */ - PZParser newParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition); + PZParser newFixedLengthParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition); /** * Constructs a new DataSet using the PZMAP XML file layout method. This is @@ -87,7 +87,7 @@ * @param dataSource - * Delimited file to read from */ - PZParser newParser(final File pzmapXML, final File dataSource); + PZParser newFixedLengthParser(final File pzmapXML, final File dataSource); /** * New constructor based on InputStream. Constructs a new DataSet using the @@ -102,7 +102,7 @@ * Delimited file InputStream to read from, user must close them * after use. */ - PZParser newParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream); + PZParser newFixedLengthParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream); // // Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2006-10-27 01:05:51 UTC (rev 139) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2006-10-27 11:52:52 UTC (rev 140) @@ -581,9 +581,8 @@ * * @param columnMD * @return Map - * @exception Exception */ - public static Map calculateRecordLengths(final Map columnMD) throws Exception { + public static Map calculateRecordLengths(final Map columnMD) { final Map recordLengths = new HashMap(); List cmds = null; @@ -751,19 +750,19 @@ * @param file * The file. * @return the InputStream. - * @throws Exception + * @throws FileNotFoundException */ - public static InputStream createInputStream(final File file) throws Exception { + public static InputStream createInputStream(final File file) throws FileNotFoundException { if (file == null) { throw new IllegalArgumentException("null not allowed"); } - if (!file.exists()) { - throw new FileNotFoundException("file does not exist " + file.getAbsolutePath()); - } - if (!file.canRead()) { - throw new FileNotFoundException("file cannot be read " + file.getAbsolutePath()); - } - return new FileInputStream(file.getAbsolutePath()); +// if (!file.exists()) { +// throw new FileNotFoundException("file does not exist " + file.getAbsolutePath()); +// } +// if (!file.canRead()) { +// throw new FileNotFoundException("file cannot be read " + file.getAbsolutePath()); +// } + return new FileInputStream(file); } /** Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java 2006-10-27 01:05:51 UTC (rev 139) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java 2006-10-27 11:52:52 UTC (rev 140) @@ -15,6 +15,7 @@ package net.sf.pzfilereader.xml; import java.io.File; +import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Iterator; @@ -29,6 +30,7 @@ import org.jdom.Attribute; import org.jdom.Document; import org.jdom.Element; +import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; /** @@ -75,9 +77,10 @@ * @param xmlStream * @return Map * <records> with their corrisponding - * @throws Exception + * @throws IOException + * @throws JDOMException */ - public static Map parse(final InputStream xmlStream) throws Exception { + public static Map parse(final InputStream xmlStream) throws JDOMException, IOException { final SAXBuilder builder = new SAXBuilder(); builder.setValidation(true); // handle the ability to pull DTD from Jar if needed @@ -110,7 +113,7 @@ // value we are using to mark columns specified outside of a // <RECORD> element if (xmlElement.getAttributeValue("id").equals(PZConstants.DETAIL_ID)) { - throw new Exception("The ID 'detail' on the <RECORD> element is reserved, please select another id"); + throw new IllegalArgumentException("The ID 'detail' on the <RECORD> element is reserved, please select another id"); } columns = getColumnChildren(xmlElement); @@ -145,7 +148,7 @@ } // helper to retrieve the "COLUMN" elements from the given parent - private static List getColumnChildren(final Element parent) throws Exception { + private static List getColumnChildren(final Element parent) { final List columnResults = new ArrayList(); final Iterator xmlChildren = parent.getChildren("COLUMN").iterator(); @@ -155,7 +158,7 @@ // make sure the name attribute is present on the column if (xmlColumn.getAttributeValue("name") == null) { - throw new Exception("Name attribute is required on the column tag!"); + throw new IllegalArgumentException("Name attribute is required on the column tag!"); } cmd.setColName(xmlColumn.getAttributeValue("name")); @@ -165,7 +168,7 @@ try { cmd.setColLength(Integer.parseInt(xmlColumn.getAttributeValue("length"))); } catch (final Exception ex) { - throw new Exception("LENGTH ATTRIBUTE ON COLUMN ELEMENT MUST BE AN INTEGER. GOT: " + throw new IllegalArgumentException("LENGTH ATTRIBUTE ON COLUMN ELEMENT MUST BE AN INTEGER. GOT: " + xmlColumn.getAttributeValue("length")); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2006-10-27 14:14:51
|
Revision: 143 http://svn.sourceforge.net/pzfilereader/?rev=143&view=rev Author: benoitx Date: 2006-10-27 07:14:36 -0700 (Fri, 27 Oct 2006) Log Message: ----------- General clean Up by Eclipse (cleanup, organise imports and format). Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataError.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultPZParserFactory.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/InitialisationException.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/LargeDataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/structure/Row.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/FixedWidthParserUtils.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/PZConstants.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/XMLRecordElement.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2006-10-27 14:06:22 UTC (rev 142) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2006-10-27 14:14:36 UTC (rev 143) @@ -1,5 +1,34 @@ -/** +/* + * ObjectLab, http://www.objectlab.co.uk/open is supporting PZFileReader. * + * Based in London, we are world leaders in the design and development + * of bespoke applications for the securities financing markets. + * + * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> + * ___ _ _ _ _ _ + * / _ \| |__ (_) ___ ___| |_| | __ _| |__ + * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ + * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | + * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ + * |__/ + * + * www.ObjectLab.co.uk + * + * $Id: ColorProvider.java 74 2006-10-24 22:19:05Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. */ package net.sf.pzfilereader; @@ -26,22 +55,24 @@ private boolean ignoreFirstRecord = false; - public AbstractDelimiterPZParser(InputStream dataSourceStream, String dataDefinition, char delimiter, char qualifier, - boolean ignoreFirstRecord) { + public AbstractDelimiterPZParser(final InputStream dataSourceStream, final String dataDefinition, final char delimiter, + final char qualifier, final boolean ignoreFirstRecord) { super(dataSourceStream, dataDefinition); this.delimiter = delimiter; this.qualifier = qualifier; this.ignoreFirstRecord = ignoreFirstRecord; } - public AbstractDelimiterPZParser(File dataSource, char delimiter, char qualifier, boolean ignoreFirstRecord) { + public AbstractDelimiterPZParser(final File dataSource, final char delimiter, final char qualifier, + final boolean ignoreFirstRecord) { super(dataSource); this.delimiter = delimiter; this.qualifier = qualifier; this.ignoreFirstRecord = ignoreFirstRecord; } - public AbstractDelimiterPZParser(InputStream dataSourceStream, char delimiter, char qualifier, boolean ignoreFirstRecord) { + public AbstractDelimiterPZParser(final InputStream dataSourceStream, final char delimiter, final char qualifier, + final boolean ignoreFirstRecord) { super(dataSourceStream); this.delimiter = delimiter; this.qualifier = qualifier; @@ -51,13 +82,15 @@ public IDataSet doParse() { try { if (getDataSourceStream() != null) { - return doDelimitedFile(getDataSourceStream(), getDelimiter(), getQualifier(), isIgnoreFirstRecord(), shouldCreateMDFromFile()); + return doDelimitedFile(getDataSourceStream(), getDelimiter(), getQualifier(), isIgnoreFirstRecord(), + shouldCreateMDFromFile()); } else { InputStream stream = null; try { stream = ParserUtils.createInputStream(getDataSource()); - return doDelimitedFile(stream, getDelimiter(), getQualifier(), isIgnoreFirstRecord(), shouldCreateMDFromFile()); - } catch (Exception e) { + return doDelimitedFile(stream, getDelimiter(), getQualifier(), isIgnoreFirstRecord(), + shouldCreateMDFromFile()); + } catch (final Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { @@ -66,23 +99,23 @@ } } } - } catch (FileNotFoundException e) { + } catch (final FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); - } catch (Exception e) { + } catch (final Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } - + protected abstract boolean shouldCreateMDFromFile(); protected char getDelimiter() { return delimiter; } - protected void setDelimiter(char delimiter) { + protected void setDelimiter(final char delimiter) { this.delimiter = delimiter; } @@ -90,7 +123,7 @@ return ignoreFirstRecord; } - protected void setIgnoreFirstRecord(boolean ignoreFirstRecord) { + protected void setIgnoreFirstRecord(final boolean ignoreFirstRecord) { this.ignoreFirstRecord = ignoreFirstRecord; } @@ -98,7 +131,7 @@ return qualifier; } - protected void setQualifier(char qualifier) { + protected void setQualifier(final char qualifier) { this.qualifier = qualifier; } @@ -117,7 +150,7 @@ InputStreamReader isr = null; BufferedReader br = null; - DefaultDataSet ds = new DefaultDataSet(getColumnMD()); + final DefaultDataSet ds = new DefaultDataSet(getColumnMD()); try { // get the total column count // columnCount = columnMD.size(); @@ -136,7 +169,7 @@ while ((line = br.readLine()) != null) { lineCount++; /** empty line skip past it */ - String trimmed = line.trim(); + final String trimmed = line.trim(); if (!processingMultiLine && trimmed.length() == 0) { continue; } @@ -177,7 +210,7 @@ // line break processingMultiLine = false; if (trimmedLineData.length() > 0) { // + would always be - // true surely.... + // true surely.... lineData += "\r\n"; } lineData += line; @@ -185,8 +218,8 @@ // check to see if this is the last line of the record // looking for a qualifier followed by a delimiter if (trimmedLineData.length() > 0) { // + here again, - // this should - // always be true... + // this should + // always be true... lineData += "\r\n"; } lineData += line; Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java 2006-10-27 14:06:22 UTC (rev 142) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java 2006-10-27 14:14:36 UTC (rev 143) @@ -1,5 +1,34 @@ -/** +/* + * ObjectLab, http://www.objectlab.co.uk/open is supporting PZFileReader. * + * Based in London, we are world leaders in the design and development + * of bespoke applications for the securities financing markets. + * + * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> + * ___ _ _ _ _ _ + * / _ \| |__ (_) ___ ___| |_| | __ _| |__ + * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ + * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | + * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ + * |__/ + * + * www.ObjectLab.co.uk + * + * $Id: ColorProvider.java 74 2006-10-24 22:19:05Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. */ package net.sf.pzfilereader; @@ -23,19 +52,19 @@ */ public abstract class AbstractFixedLengthPZParser extends AbstractPZParser { - protected AbstractFixedLengthPZParser(File dataSource, String dataDefinition) { + protected AbstractFixedLengthPZParser(final File dataSource, final String dataDefinition) { super(dataSource, dataDefinition); } - protected AbstractFixedLengthPZParser(File dataSource) { + protected AbstractFixedLengthPZParser(final File dataSource) { super(dataSource); } - protected AbstractFixedLengthPZParser(InputStream dataSourceStream, String dataDefinition) { + protected AbstractFixedLengthPZParser(final InputStream dataSourceStream, final String dataDefinition) { super(dataSourceStream, dataDefinition); } - protected AbstractFixedLengthPZParser(InputStream dataSourceStream) { + protected AbstractFixedLengthPZParser(final InputStream dataSourceStream) { super(dataSourceStream); } @@ -48,7 +77,7 @@ stream = ParserUtils.createInputStream(getDataSource()); try { return doFixedLengthFile(stream); - } catch (Exception e) { + } catch (final Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { @@ -57,10 +86,10 @@ } } } - } catch (FileNotFoundException e) { + } catch (final FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); - } catch (Exception e) { + } catch (final Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } @@ -78,7 +107,7 @@ InputStreamReader isr = null; BufferedReader br = null; - DefaultDataSet ds = new DefaultDataSet(getColumnMD()); + final DefaultDataSet ds = new DefaultDataSet(getColumnMD()); try { final Map recordLengths = ParserUtils.calculateRecordLengths(getColumnMD()); Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java 2006-10-27 14:06:22 UTC (rev 142) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java 2006-10-27 14:14:36 UTC (rev 143) @@ -1,5 +1,34 @@ -/** +/* + * ObjectLab, http://www.objectlab.co.uk/open is supporting PZFileReader. * + * Based in London, we are world leaders in the design and development + * of bespoke applications for the securities financing markets. + * + * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> + * ___ _ _ _ _ _ + * / _ \| |__ (_) ___ ___| |_| | __ _| |__ + * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ + * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | + * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ + * |__/ + * + * www.ObjectLab.co.uk + * + * $Id: ColorProvider.java 74 2006-10-24 22:19:05Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. */ package net.sf.pzfilereader; @@ -27,20 +56,20 @@ private File dataSource = null; - protected AbstractPZParser(File dataSource) { + protected AbstractPZParser(final File dataSource) { this.dataSource = dataSource; } - protected AbstractPZParser(InputStream dataSourceStream) { + protected AbstractPZParser(final InputStream dataSourceStream) { this.dataSourceStream = dataSourceStream; } - protected AbstractPZParser(File dataSource, String dataDefinition) { + protected AbstractPZParser(final File dataSource, final String dataDefinition) { this.dataSource = dataSource; this.dataDefinition = dataDefinition; } - protected AbstractPZParser(InputStream dataSourceStream, String dataDefinition) { + protected AbstractPZParser(final InputStream dataSourceStream, final String dataDefinition) { this.dataSourceStream = dataSourceStream; this.dataDefinition = dataDefinition; } @@ -59,7 +88,7 @@ * * @see net.sf.pzfilereader.PZParser#setHandlingShortLines(boolean) */ - public void setHandlingShortLines(boolean handleShortLines) { + public void setHandlingShortLines(final boolean handleShortLines) { this.handlingShortLines = handleShortLines; } @@ -89,7 +118,7 @@ return initialised; } - protected void setInitialised(boolean initialised) { + protected void setInitialised(final boolean initialised) { this.initialised = initialised; } @@ -97,7 +126,7 @@ return dataDefinition; } - protected void setDataDefinition(String dataDefinition) { + protected void setDataDefinition(final String dataDefinition) { this.dataDefinition = dataDefinition; } @@ -105,7 +134,7 @@ return dataSource; } - protected void setDataSource(File dataSource) { + protected void setDataSource(final File dataSource) { this.dataSource = dataSource; } @@ -113,7 +142,7 @@ return dataSourceStream; } - protected void setDataSourceStream(InputStream dataSourceStream) { + protected void setDataSourceStream(final InputStream dataSourceStream) { this.dataSourceStream = dataSourceStream; } @@ -133,8 +162,8 @@ * int errorLevel 1,2,3 1=warning 2=error 3= severe error */ protected void addError(final DefaultDataSet ds, final String errorDesc, final int lineNo, final int errorLevel) { - final DataError de = new DataError(errorDesc,lineNo,errorLevel); + final DataError de = new DataError(errorDesc, lineNo, errorLevel); ds.addError(de); } - + } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java 2006-10-27 14:06:22 UTC (rev 142) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java 2006-10-27 14:14:36 UTC (rev 143) @@ -1,5 +1,34 @@ -/** +/* + * ObjectLab, http://www.objectlab.co.uk/open is supporting PZFileReader. * + * Based in London, we are world leaders in the design and development + * of bespoke applications for the securities financing markets. + * + * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> + * ___ _ _ _ _ _ + * / _ \| |__ (_) ___ ___| |_| | __ _| |__ + * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ + * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | + * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ + * |__/ + * + * www.ObjectLab.co.uk + * + * $Id: ColorProvider.java 74 2006-10-24 22:19:05Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. */ package net.sf.pzfilereader; @@ -24,8 +53,8 @@ private Connection con; - public DBDelimiterPZParser(Connection con, InputStream dataSourceStream, String dataDefinition, char delimiter, - char qualifier, boolean ignoreFirstRecord) { + public DBDelimiterPZParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition, + final char delimiter, final char qualifier, final boolean ignoreFirstRecord) { super(dataSourceStream, dataDefinition, delimiter, qualifier, ignoreFirstRecord); this.con = con; } @@ -69,10 +98,10 @@ // read in the fixed length file and construct the DataSet object // doFixedLengthFile(dataSourceStream); setInitialised(true); - } catch (SQLException e) { + } catch (final SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); - } catch (FileNotFoundException e) { + } catch (final FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { @@ -83,17 +112,13 @@ if (stmt != null) { stmt.close(); } - } catch (SQLException e) { + } catch (final SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } - public IDataSet doParse() { - return null; - } - protected boolean shouldCreateMDFromFile() { return true; } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java 2006-10-27 14:06:22 UTC (rev 142) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java 2006-10-27 14:14:36 UTC (rev 143) @@ -1,5 +1,34 @@ -/** +/* + * ObjectLab, http://www.objectlab.co.uk/open is supporting PZFileReader. * + * Based in London, we are world leaders in the design and development + * of bespoke applications for the securities financing markets. + * + * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> + * ___ _ _ _ _ _ + * / _ \| |__ (_) ___ ___| |_| | __ _| |__ + * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ + * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | + * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ + * |__/ + * + * www.ObjectLab.co.uk + * + * $Id: ColorProvider.java 74 2006-10-24 22:19:05Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. */ package net.sf.pzfilereader; @@ -30,7 +59,7 @@ this.con = con; } - public DBFixedLengthPZParser(Connection con, File dataSource, String dataDefinition) { + public DBFixedLengthPZParser(final Connection con, final File dataSource, final String dataDefinition) { super(dataSource, dataDefinition); this.con = con; } @@ -74,10 +103,10 @@ // read in the fixed length file and construct the DataSet object // doFixedLengthFile(dataSourceStream); setInitialised(true); - } catch (SQLException e) { + } catch (final SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); - } catch (FileNotFoundException e) { + } catch (final FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { @@ -88,7 +117,7 @@ if (stmt != null) { stmt.close(); } - } catch (SQLException e) { + } catch (final SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataError.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataError.java 2006-10-27 14:06:22 UTC (rev 142) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataError.java 2006-10-27 14:14:36 UTC (rev 143) @@ -33,9 +33,7 @@ */ private int errorLevel = 0; - - - public DataError(String errorDesc, int lineNo, int errorLevel) { + public DataError(final String errorDesc, final int lineNo, final int errorLevel) { this.errorDesc = errorDesc; this.lineNo = lineNo; this.errorLevel = errorLevel; @@ -43,7 +41,7 @@ /** * @deprecated should use the ctor with fields - * + * */ public DataError() { } @@ -80,7 +78,7 @@ * * @param errorDesc * The errorDesc to set - * @deprecated the DataError should be immutable (i.e. no Set method) + * @deprecated the DataError should be immutable (i.e. no Set method) */ public void setErrorDesc(final String errorDesc) { this.errorDesc = errorDesc; @@ -91,7 +89,7 @@ * * @param errorLevel * The errorLevel to set - * @deprecated the DataError should be immutable (i.e. no Set method) + * @deprecated the DataError should be immutable (i.e. no Set method) */ public void setErrorLevel(final int errorLevel) { this.errorLevel = errorLevel; @@ -102,7 +100,7 @@ * * @param lineNo * The lineNo to set - * @deprecated the DataError should be immutable (i.e. no Set method) + * @deprecated the DataError should be immutable (i.e. no Set method) */ public void setLineNo(final int lineNo) { this.lineNo = lineNo; Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2006-10-27 14:06:22 UTC (rev 142) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2006-10-27 14:14:36 UTC (rev 143) @@ -31,7 +31,6 @@ import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.NoSuchElementException; import net.sf.pzfilereader.ordering.OrderBy; import net.sf.pzfilereader.structure.ColumnMetaData; @@ -391,7 +390,6 @@ .charAt(0) : 0, ignoreFirstRecord, handleShortLines); } - /** * Constructs a new DataSet using the PZMAP XML file layout method. This is * used for a DELIMITED text file. esacpe sequence reference: \n newline @@ -421,7 +419,7 @@ this(ParserUtils.createInputStream(pzmapXML), ParserUtils.createInputStream(dataSource), delimiter, qualifier, ignoreFirstRecord, handleShortLines); } - + /** * New constructor based on InputStream. Constructs a new DataSet using the * PZMAP XML file layout method. This is used for a DELIMITED text file. @@ -677,7 +675,7 @@ } } - //int recPosition = 1; + // int recPosition = 1; final Row row = new Row(); row.setMdkey(mdkey.equals(PZConstants.DETAIL_ID) ? null : mdkey); // try @@ -685,12 +683,13 @@ row.addColumn(FixedWidthParserUtils.splitFixedText(cmds, line)); // to limit the memory use // Build the columns for the row - //for (int i = 0; i < cmds.size(); i++) { - // final String tempValue = line.substring(recPosition - 1, recPosition - // + (((ColumnMetaData) cmds.get(i)).getColLength() - 1)); - // recPosition += ((ColumnMetaData) cmds.get(i)).getColLength(); - // row.addColumn(tempValue.trim()); - // } + // for (int i = 0; i < cmds.size(); i++) { + // final String tempValue = line.substring(recPosition - 1, + // recPosition + // + (((ColumnMetaData) cmds.get(i)).getColLength() - 1)); + // recPosition += ((ColumnMetaData) cmds.get(i)).getColLength(); + // row.addColumn(tempValue.trim()); + // } row.setRowNumber(lineCount); // add the row to the array rows.add(row); @@ -742,7 +741,7 @@ while ((line = br.readLine()) != null) { lineCount++; /** empty line skip past it */ - String trimmed = line.trim(); + final String trimmed = line.trim(); if (!processingMultiLine && trimmed.length() == 0) { continue; } @@ -781,14 +780,17 @@ // it is safe to assume we have reached the end of the // line break processingMultiLine = false; - if (trimmedLineData.length() > 0) { //+ would always be true surely.... + if (trimmedLineData.length() > 0) { // + would always be + // true surely.... lineData += "\r\n"; } lineData += line; } else { // check to see if this is the last line of the record // looking for a qualifier followed by a delimiter - if (trimmedLineData.length() > 0) { //+ here again, this should always be true... + if (trimmedLineData.length() > 0) { // + here again, + // this should + // always be true... lineData += "\r\n"; } lineData += line; @@ -908,21 +910,27 @@ // row.setValue(ParserUtils.findColumn(columnName, cmds), value); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#goTop() */ public void goTop() { pointer = -1; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#goBottom() */ public void goBottom() { pointer = rows.size() - 1; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#next() */ public boolean next() { @@ -933,7 +941,9 @@ return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#previous() */ public boolean previous() { @@ -944,7 +954,9 @@ return true; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#getString(java.lang.String) */ public String getString(final String column) { @@ -972,7 +984,9 @@ return s; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#getDouble(java.lang.String) */ public double getDouble(final String column) { @@ -1006,7 +1020,9 @@ return Double.parseDouble(newString.toString()); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#getInt(java.lang.String) */ public int getInt(final String column) { @@ -1040,7 +1056,9 @@ return Integer.parseInt(newString.toString()); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#getDate(java.lang.String) */ public Date getDate(final String column) throws ParseException { @@ -1054,8 +1072,11 @@ return sdf.parse(s); } - /* (non-Javadoc) - * @see net.sf.pzfilereader.IDataSet#getDate(java.lang.String, java.text.SimpleDateFormat) + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#getDate(java.lang.String, + * java.text.SimpleDateFormat) */ public Date getDate(final String column, final SimpleDateFormat sdf) throws ParseException { final Row row = (Row) rows.get(pointer); @@ -1067,7 +1088,9 @@ return sdf.parse(s); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#getColumns() */ public String[] getColumns() { @@ -1087,7 +1110,9 @@ return array; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#getColumns(java.lang.String) */ public String[] getColumns(final String recordID) { @@ -1105,14 +1130,18 @@ return array; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#getRowNo() */ public int getRowNo() { return ((Row) rows.get(pointer)).getRowNumber(); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#getErrors() */ public List getErrors() { @@ -1138,7 +1167,9 @@ errors.add(de); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#remove() */ public void remove() { @@ -1146,7 +1177,9 @@ pointer--; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#getIndex() */ public int getIndex() { @@ -1183,14 +1216,18 @@ return rowID.equals(recordID); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#getRowCount() */ public int getRowCount() { return rows.size(); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#getErrorCount() */ public int getErrorCount() { @@ -1201,7 +1238,9 @@ return 0; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#isAnError(int) */ public boolean isAnError(final int lineNo) { @@ -1213,7 +1252,9 @@ return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#orderRows(net.sf.pzfilereader.ordering.OrderBy) */ public void orderRows(final OrderBy ob) throws Exception { @@ -1326,7 +1367,9 @@ this.columnMD = columnMD; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see net.sf.pzfilereader.IDataSet#getRows() */ public List getRows() { Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java 2006-10-27 14:06:22 UTC (rev 142) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java 2006-10-27 14:14:36 UTC (rev 143) @@ -1,5 +1,34 @@ -/** +/* + * ObjectLab, http://www.objectlab.co.uk/open is supporting PZFileReader. * + * Based in London, we are world leaders in the design and development + * of bespoke applications for the securities financing markets. + * + * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> + * ___ _ _ _ _ _ + * / _ \| |__ (_) ___ ___| |_| | __ _| |__ + * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ + * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | + * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ + * |__/ + * + * www.ObjectLab.co.uk + * + * $Id: ColorProvider.java 74 2006-10-24 22:19:05Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. */ package net.sf.pzfilereader; @@ -23,9 +52,9 @@ * */ public class DefaultDataSet implements IDataSet { - private List rows = new ArrayList(); + private final List rows = new ArrayList(); - private List errors = new ArrayList(); + private final List errors = new ArrayList(); /** Pointer for the current row in the array we are on */ private int pointer = -1; @@ -44,15 +73,15 @@ private Map columnMD; - public DefaultDataSet(Map columnMD2) { + public DefaultDataSet(final Map columnMD2) { this.columnMD = columnMD2; } - public void addRow(Row row) { + public void addRow(final Row row) { rows.add(row); } - public void addError(DataError dataError) { + public void addError(final DataError dataError) { errors.add(dataError); } @@ -83,7 +112,7 @@ * * @see net.sf.pzfilereader.IDataSet#getColumns(java.lang.String) */ - public String[] getColumns(String recordID) { + public String[] getColumns(final String recordID) { String[] array = null; if (columnMD != null) { @@ -103,7 +132,7 @@ * * @see net.sf.pzfilereader.IDataSet#getDate(java.lang.String) */ - public Date getDate(String column) throws ParseException { + public Date getDate(final String column) throws ParseException { final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); final Row row = (Row) rows.get(pointer); final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); @@ -116,7 +145,7 @@ * @see net.sf.pzfilereader.IDataSet#getDate(java.lang.String, * java.text.SimpleDateFormat) */ - public Date getDate(String column, SimpleDateFormat sdf) throws ParseException { + public Date getDate(final String column, final SimpleDateFormat sdf) throws ParseException { final Row row = (Row) rows.get(pointer); final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); return sdf.parse(s); @@ -127,7 +156,7 @@ * * @see net.sf.pzfilereader.IDataSet#getDouble(java.lang.String) */ - public double getDouble(String column) { + public double getDouble(final String column) { final StringBuffer newString = new StringBuffer(); final Row row = (Row) rows.get(pointer); @@ -190,7 +219,7 @@ * * @see net.sf.pzfilereader.IDataSet#getInt(java.lang.String) */ - public int getInt(String column) { + public int getInt(final String column) { final StringBuffer newString = new StringBuffer(); final Row row = (Row) rows.get(pointer); final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); @@ -249,7 +278,7 @@ * * @see net.sf.pzfilereader.IDataSet#getString(java.lang.String) */ - public String getString(String column) { + public String getString(final String column) { final Row row = (Row) rows.get(pointer); final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); @@ -294,7 +323,7 @@ * * @see net.sf.pzfilereader.IDataSet#isAnError(int) */ - public boolean isAnError(int lineNo) { + public boolean isAnError(final int lineNo) { for (int i = 0; i < errors.size(); i++) { if (((DataError) errors.get(i)).getLineNo() == lineNo && ((DataError) errors.get(i)).getErrorLevel() > 1) { return true; @@ -321,7 +350,7 @@ * * @see net.sf.pzfilereader.IDataSet#orderRows(net.sf.pzfilereader.ordering.OrderBy) */ - public void orderRows(OrderBy ob) throws Exception { + public void orderRows(final OrderBy ob) throws Exception { // PZ try to handle other <records> by sending them to // the bottom of the sort // if (columnMD.size() > 1) { @@ -419,7 +448,7 @@ pointer--; } - void setColumnMD(Map columnMD) { + void setColumnMD(final Map columnMD) { this.columnMD = columnMD; } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultPZParserFactory.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultPZParserFactory.java 2006-10-27 14:06:22 UTC (rev 142) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultPZParserFactory.java 2006-10-27 14:14:36 UTC (rev 143) @@ -53,7 +53,7 @@ * @see net.sf.pzfilereader.PZParserFactory#newFixedWidthParser(java.sql.Connection, * java.io.File, java.lang.String) */ - public PZParser newFixedLengthParser(Connection con, File dataSource, String dataDefinition) { + public PZParser newFixedLengthParser(final Connection con, final File dataSource, final String dataDefinition) { return new DBFixedLengthPZParser(con, dataSource, dataDefinition); } @@ -63,7 +63,7 @@ * @see net.sf.pzfilereader.PZParserFactory#newFixedWidthParser(java.sql.Connection, * java.io.InputStream, java.lang.String) */ - public PZParser newFixedLengthParser(Connection con, InputStream dataSourceStream, String dataDefinition) { + public PZParser newFixedLengthParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition) { return new DBFixedLengthPZParser(con, dataSourceStream, dataDefinition); } @@ -73,7 +73,7 @@ * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.File, * java.io.File) */ - public PZParser newFixedLengthParser(File pzmapXML, File dataSource) { + public PZParser newFixedLengthParser(final File pzmapXML, final File dataSource) { return new FixedLengthPZParser(pzmapXML, dataSource); } @@ -83,7 +83,7 @@ * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.InputStream, * java.io.InputStream) */ - public PZParser newFixedLengthParser(InputStream pzmapXMLStream, InputStream dataSourceStream) { + public PZParser newFixedLengthParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream) { return new FixedLengthPZParser(pzmapXMLStream, dataSourceStream); } @@ -93,8 +93,8 @@ * @see net.sf.pzfilereader.PZParserFactory#newParser(java.sql.Connection, * java.io.InputStream, java.lang.String, char, char, boolean) */ - public PZParser newDelimitedParser(Connection con, InputStream dataSourceStream, String dataDefinition, char delimiter, - char qualifier, boolean ignoreFirstRecord) { + public PZParser newDelimitedParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition, + final char delimiter, final char qualifier, final boolean ignoreFirstRecord) { return new DBDelimiterPZParser(con, dataSourceStream, dataDefinition, delimiter, qualifier, ignoreFirstRecord); } @@ -104,7 +104,8 @@ * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.File, * java.io.File, char, char, boolean) */ - public PZParser newDelimitedParser(File pzmapXML, File dataSource, char delimiter, char qualifier, boolean ignoreFirstRecord) { + public PZParser newDelimitedParser(final File pzmapXML, final File dataSource, final char delimiter, final char qualifier, + final boolean ignoreFirstRecord) { return new DelimiterPZParser(pzmapXML, dataSource, delimiter, qualifier, ignoreFirstRecord); } @@ -114,8 +115,8 @@ * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.InputStream, * java.io.InputStream, char, char, boolean) */ - public PZParser newDelimitedParser(InputStream pzmapXMLStream, InputStream dataSourceStream, char delimiter, char qualifier, - boolean ignoreFirstRecord) { + public PZParser newDelimitedParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream, + final char delimiter, final char qualifier, final boolean ignoreFirstRecord) { return new DelimiterPZParser(pzmapXMLStream, dataSourceStream, delimiter, qualifier, ignoreFirstRecord); } @@ -125,7 +126,7 @@ * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.File, char, * char) */ - public PZParser newDelimitedParser(File dataSource, char delimiter, char qualifier) { + public PZParser newDelimitedParser(final File dataSource, final char delimiter, final char qualifier) { return new DelimiterPZParser(dataSource, delimiter, qualifier, false); } @@ -135,7 +136,7 @@ * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.InputStream, * char, char) */ - public PZParser newDelimitedParser(InputStream dataSourceStream, char delimiter, char qualifier) { + public PZParser newDelimitedParser(final InputStream dataSourceStream, final char delimiter, final char qualifier) { return new DelimiterPZParser(dataSourceStream, delimiter, qualifier, false); } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java 2006-10-27 14:06:22 UTC (rev 142) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java 2006-10-27 14:14:36 UTC (rev 143) @@ -1,5 +1,34 @@ -/** +/* + * ObjectLab, http://www.objectlab.co.uk/open is supporting PZFileReader. * + * Based in London, we are world leaders in the design and development + * of bespoke applications for the securities financing markets. + * + * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> + * ___ _ _ _ _ _ + * / _ \| |__ (_) ___ ___| |_| | __ _| |__ + * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ + * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | + * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ + * |__/ + * + * www.ObjectLab.co.uk + * + * $Id: ColorProvider.java 74 2006-10-24 22:19:05Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. */ package net.sf.pzfilereader; @@ -21,22 +50,24 @@ private File pzmapXML = null; - public DelimiterPZParser(File pzmapXML, File dataSource, char delimiter, char qualifier, boolean ignoreFirstRecord) { + public DelimiterPZParser(final File pzmapXML, final File dataSource, final char delimiter, final char qualifier, + final boolean ignoreFirstRecord) { super(dataSource, delimiter, qualifier, ignoreFirstRecord); this.pzmapXML = pzmapXML; } - public DelimiterPZParser(InputStream pzmapXMLStream, InputStream dataSourceStream, char delimiter, char qualifier, - boolean ignoreFirstRecord) { + public DelimiterPZParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream, final char delimiter, + final char qualifier, final boolean ignoreFirstRecord) { super(dataSourceStream, delimiter, qualifier, ignoreFirstRecord); this.pzmapXMLStream = pzmapXMLStream; } - public DelimiterPZParser(File dataSource, char delimiter, char qualifier, boolean ignoreFirstRecord) { + public DelimiterPZParser(final File dataSource, final char delimiter, final char qualifier, final boolean ignoreFirstRecord) { super(dataSource, delimiter, qualifier, ignoreFirstRecord); } - public DelimiterPZParser(InputStream dataSourceStream, char delimiter, char qualifier, boolean ignoreFirstRecord) { + public DelimiterPZParser(final InputStream dataSourceStream, final char delimiter, final char qualifier, + final boolean ignoreFirstRecord) { super(dataSourceStream, delimiter, qualifier, ignoreFirstRecord); } @@ -45,7 +76,7 @@ if (pzmapXMLStream != null) { setColumnMD(PZMapParser.parse(pzmapXMLStream)); } else if (pzmapXML != null) { - InputStream stream = ParserUtils.createInputStream(pzmapXML); + final InputStream stream = ParserUtils.createInputStream(pzmapXML); try { setColumnMD(PZMapParser.parse(stream)); } finally { @@ -55,9 +86,9 @@ } } setInitialised(true); - } catch (JDOMException e) { + } catch (final JDOMException e) { throw new InitialisationException(e); - } catch (IOException e) { + } catch (final IOException e) { throw new InitialisationException(e); } } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java 2006-10-27 14:06:22 UTC (rev 142) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java 2006-10-27 14:14:36 UTC (rev 143) @@ -1,5 +1,34 @@ -/** +/* + * ObjectLab, http://www.objectlab.co.uk/open is supporting PZFileReader. * + * Based in London, we are world leaders in the design and development + * of bespoke applications for the securities financing markets. + * + * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> + * ___ _ _ _ _ _ + * / _ \| |__ (_) ___ ___| |_| | __ _| |__ + * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ + * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | + * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ + * |__/ + * + * www.ObjectLab.co.uk + * + * $Id: ColorProvider.java 74 2006-10-24 22:19:05Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. */ package net.sf.pzfilereader; @@ -26,7 +55,7 @@ this.pzmapXMLStream = pzmapXMLStream; } - public FixedLengthPZParser(File pzmapXML, File dataSource) { + public FixedLengthPZParser(final File pzmapXML, final File dataSource) { super(dataSource); this.pzmapXML = pzmapXML; } @@ -36,7 +65,7 @@ if (pzmapXMLStream != null) { setColumnMD(PZMapParser.parse(pzmapXMLStream)); } else { - InputStream stream = ParserUtils.createInputStream(pzmapXML); + final InputStream stream = ParserUtils.createInputStream(pzmapXML); try { setColumnMD(PZMapParser.parse(stream)); } finally { @@ -45,9 +74,9 @@ } } } - } catch (JDOMException e) { + } catch (final JDOMException e) { throw new InitialisationException(e); - } catch (IOException e) { + } catch (final IOException e) { throw new InitialisationException(e); } } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/InitialisationException.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/InitialisationException.java 2006-10-27 14:06:22 UTC (rev 142) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/InitialisationException.java 2006-10-27 14:14:36 UTC (rev 143) @@ -1,11 +1,40 @@ -/** +/* + * ObjectLab, http://www.objectlab.co.uk/open is supporting PZFileReader. * + * Based in London, we are world leaders in the design and development + * of bespoke applications for the securities financing markets. + * + * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> + * ___ _ _ _ _ _ + * / _ \| |__ (_) ___ ___| |_| | __ _| |__ + * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ + * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | + * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ + * |__/ + * + * www.ObjectLab.co.uk + * + * $Id: ColorProvider.java 74 2006-10-24 22:19:05Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. */ package net.sf.pzfilereader; /** * @author xhensevb - * + * */ public class InitialisationException extends RuntimeException { private static final long serialVersionUID = -4181701730609348676L; @@ -19,14 +48,14 @@ /** * @param message */ - public InitialisationException(String message) { + public InitialisationException(final String message) { super(message); } /** * @param cause */ - public InitialisationException(Throwable cause) { + public InitialisationException(final Throwable cause) { super(cause); } @@ -34,7 +63,7 @@ * @param message * @param cause */ - public InitialisationException(String message, Throwable cause) { + public InitialisationException(final String message, final Throwable cause) { super(message, cause); } } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/LargeDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/LargeDataSet.java 2006-10-27 14:06:22 UTC (rev 142) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/LargeDataSet.java 2006-10-27 14:14:36 UTC (rev 143) @@ -23,7 +23,6 @@ import java.util.Map; import net.sf.pzfilereader.ordering.OrderBy; -import net.sf.pzfilereader.structure.ColumnMetaData; import net.sf.pzfilereader.structure.Row; import net.sf.pzfilereader.util.FixedWidthParserUtils; import net.sf.pzfilereader.util.PZConstants; @@ -405,7 +404,7 @@ * also close out the readers used to read the file in. */ public void freeMemory() { - //super.freeMemory(); + // super.freeMemory(); ParserUtils.closeReader(br); ParserUtils.closeReader(isr); @@ -430,7 +429,7 @@ /** loop through each line in the file */ while ((line = br.readLine()) != null) { lineCount++; - String trimmed = line.trim(); + final String trimmed = line.trim(); /** empty line skip past it */ if (!processingMultiLine && trimmed.length() == 0) { continue; @@ -569,13 +568,14 @@ private boolean readNextFixedLen() throws Exception { String line = null; - //final int aLineCount = 0; // +++++++++++++++++++++++++++++++++ Paul + // final int aLineCount = 0; // +++++++++++++++++++++++++++++++++ Paul // this does not seem incremented afaLineCountt all... - //******************************************************************** - //Good point, and it is being used to report line errors. Looks like a bug. - //Should be using lineCount - //PZ - + // ******************************************************************** + // Good point, and it is being used to report line errors. Looks like a + // bug. + // Should be using lineCount + // PZ + boolean readRecordOk = false; if (getRows() == null) { @@ -621,19 +621,20 @@ } } - //int recPosition = 1; + // int recPosition = 1; final Row row = new Row(); row.setMdkey(mdkey.equals("detail") ? null : mdkey); // try to // limit the memory use - + // Build the columns for the row row.addColumn(FixedWidthParserUtils.splitFixedText(cmds, line)); - //for (int i = 0; i < cmds.size(); i++) { - // final String tempValue = line.substring(recPosition - 1, recPosition - // + (((ColumnMetaData) cmds.get(i)).getColLength() - 1)); - // recPosition += ((ColumnMetaData) cmds.get(i)).getColLength(); - // row.addColumn(tempValue.trim()); - // } + // for (int i = 0; i < cmds.size(); i++) { + // final String tempValue = line.substring(recPosition - 1, + // recPosition + // + (((ColumnMetaData) cmds.get(i)).getColLength() - 1)); + // recPosition += ((ColumnMetaData) cmds.get(i)).getColLength(); + // row.addColumn(tempValue.trim()); + // } row.setRowNumber(this.lineCount); // add the row to the array getRows().add(row); Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java 2006-10-27 14:06:22 UTC (rev 142) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java 2006-10-27 14:14:36 UTC (rev 143) @@ -33,24 +33,24 @@ package net.sf.pzfilereader; /** - * PZParser is ready to parse the data and return an object that can then be traversed. - * The default parser should NOT handle short lines, the user can change it prior to calling - * parse. + * PZParser is ready to parse the data and return an object that can then be + * traversed. The default parser should NOT handle short lines, the user can + * change it prior to calling parse. * * @author Benoit Xhenseval */ public interface PZParser { - + /** * Start the parsing + * * @return the data set resulting from parsing */ IDataSet parse(); /** - * @return true, lines with less columns then the amount - * of column headers will be added as empty's instead of - * producing an error + * @return true, lines with less columns then the amount of column headers + * will be added as empty's instead of producing an error */ boolean isHandlingShortLines(); Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java 2006-10-27... [truncated message content] |
From: <zep...@us...> - 2006-11-25 15:53:52
|
Revision: 190 http://svn.sourceforge.net/pzfilereader/?rev=190&view=rev Author: zepernick Date: 2006-11-25 07:53:52 -0800 (Sat, 25 Nov 2006) Log Message: ----------- moved helper methods into ParserUtils for Object conversion. This removed some duplicate code and will be easier to unit test Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2006-11-25 15:52:23 UTC (rev 189) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2006-11-25 15:53:52 UTC (rev 190) @@ -155,12 +155,8 @@ final DefaultDataSet ds = new DefaultDataSet(getColumnMD()); try { //gather the conversion properties - final Properties pzConvertProps = new Properties(); - final URL url = getClass().getClassLoader().getResource("pzconvert.properties"); - pzConvertProps.load(url.openStream()); - ds.setPZConvertProps(pzConvertProps); + ds.setPZConvertProps(ParserUtils.loadConvertProperties()); - // get the total column count // columnCount = columnMD.size(); Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java 2006-11-25 15:52:23 UTC (rev 189) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java 2006-11-25 15:53:52 UTC (rev 190) @@ -113,12 +113,8 @@ try { //gather the conversion properties - final Properties pzConvertProps = new Properties(); - final URL url = getClass().getClassLoader().getResource("pzconvert.properties"); - pzConvertProps.load(url.openStream()); - ds.setPZConvertProps(pzConvertProps); - - + ds.setPZConvertProps(ParserUtils.loadConvertProperties()); + final Map recordLengths = ParserUtils.calculateRecordLengths(getColumnMD()); // Read in the flat file Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java 2006-11-25 15:52:23 UTC (rev 189) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java 2006-11-25 15:53:52 UTC (rev 190) @@ -178,20 +178,9 @@ public Object getObject(String column, Class classToConvertTo) { - final String sConverter = pzConvertProps.getProperty(classToConvertTo.getName()); - if (sConverter == null) { - throw new PZConvertException (classToConvertTo.getName() + " is not registered in pzconvert.properties"); - } - try{ - final Row row = (Row) rows.get(pointer); - final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); - final PZConverter pzconverter = (PZConverter)Class.forName(sConverter).newInstance(); - - return pzconverter.convertValue(s); - - } catch (Exception ex) { - throw new PZConvertException (ex); - } + final Row row = (Row) rows.get(pointer); + final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); + return ParserUtils.runPzConverter(pzConvertProps, s, classToConvertTo); } /* Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2006-11-25 15:52:23 UTC (rev 189) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2006-11-25 15:53:52 UTC (rev 190) @@ -19,9 +19,11 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; +import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; +import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; @@ -29,7 +31,10 @@ import java.util.List; import java.util.Map; import java.util.NoSuchElementException; +import java.util.Properties; +import net.sf.pzfilereader.converter.PZConvertException; +import net.sf.pzfilereader.converter.PZConverter; import net.sf.pzfilereader.structure.ColumnMetaData; import net.sf.pzfilereader.xml.XMLRecordElement; @@ -879,4 +884,50 @@ return newString.toString(); } + + /** + * Retrieves the conversion table for use with the getObject() + * method in IDataSet + * + * @throws IOException + * @return Properties + * Properties contained in the pzconvert.properties file + */ + public static Properties loadConvertProperties() throws IOException{ + final Properties pzConvertProps = new Properties(); + final URL url = ParserUtils.class.getClassLoader().getResource("pzconvert.properties"); + pzConvertProps.load(url.openStream()); + + return pzConvertProps; + } + + /** + * Converts a String value to the appropriate Object via + * the correct net.sf.pzfilereader.converter.PZConverter implementation + * + * @param classXref + * Properties holding class cross reference + * @param value + * Value to be converted to the Object + * @param typeToReturn + * Type of object to be returned + * @throws PZConvertExeption + * @return Object + */ + public static Object runPzConverter(final Properties classXref, final String value, final Class typeToReturn) { + final String sConverter = classXref.getProperty(typeToReturn.getName()); + if (sConverter == null) { + throw new PZConvertException (typeToReturn.getName() + " is not registered in pzconvert.properties"); + } + try { + final PZConverter pzconverter = (PZConverter)Class.forName(sConverter).newInstance(); + return pzconverter.convertValue(value); + } catch(IllegalAccessException ex) { + throw new PZConvertException(ex); + } catch(InstantiationException ex) { + throw new PZConvertException(ex); + } catch(ClassNotFoundException ex) { + throw new PZConvertException(ex); + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-12-15 02:07:56
|
Revision: 215 http://svn.sourceforge.net/pzfilereader/?rev=215&view=rev Author: zepernick Date: 2006-12-14 18:07:56 -0800 (Thu, 14 Dec 2006) Log Message: ----------- first attempt at reading files with BufferedReader left open while the file is being looped through. This is incomplete Benoit, but maybe you can take a peak and see what you think about the direction this is heading. Added Paths: ----------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZDataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZParseFactory.java Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZDataSet.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZDataSet.java 2006-12-15 02:07:56 UTC (rev 215) @@ -0,0 +1,51 @@ +package net.sf.pzfilereader.brparse; + +import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.TreeMap; + +import net.sf.pzfilereader.DefaultDataSet; +import net.sf.pzfilereader.structure.Row; + +public class BuffReaderDelimPZDataSet extends DefaultDataSet{ + private BuffReaderDelimPZParser brpzparser; + + public BuffReaderDelimPZDataSet(final Map columnMD2, BuffReaderDelimPZParser brpzparser) { + super(columnMD2); + //register the parser with the dataset so we can fetch rows from + //the bufferedreader as needed + this.brpzparser = brpzparser; + } + + public boolean next() { + try { + final Row r = brpzparser.buildRow(this); + + if (r == null) { + setPointer(-1); + return false; + } + + //make sure we have some MD + if (getColumnMD() == null) { + //create a new map so the user cannot change the internal + //DataSet representation of the MD through the parser + setColumnMD(new LinkedHashMap(brpzparser.getColumnMD())); + } + + getRows().clear(); + addRow(r); + + setPointer(0); + + return true; + + } catch(IOException ex) { + //TODO real logging here + ex.printStackTrace(); + } + + return false; + } +} Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java 2006-12-15 02:07:56 UTC (rev 215) @@ -0,0 +1,158 @@ +package net.sf.pzfilereader.brparse; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +import net.sf.pzfilereader.DataSet; +import net.sf.pzfilereader.DefaultDataSet; +import net.sf.pzfilereader.DelimiterPZParser; +import net.sf.pzfilereader.structure.Row; +import net.sf.pzfilereader.util.PZConstants; +import net.sf.pzfilereader.util.ParserUtils; + +public class BuffReaderDelimPZParser extends DelimiterPZParser { + private BufferedReader br; + private InputStreamReader isr; + private boolean processedFirst = false; + + public BuffReaderDelimPZParser(final File pzmapXML, final File dataSource, final char delimiter, final char qualifier, + final boolean ignoreFirstRecord) { + super(dataSource, delimiter, qualifier, ignoreFirstRecord); + } + + public BuffReaderDelimPZParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream, final char delimiter, + final char qualifier, final boolean ignoreFirstRecord) { + super(dataSourceStream, delimiter, qualifier, ignoreFirstRecord); + } + + public BuffReaderDelimPZParser(final File dataSource, final char delimiter, final char qualifier, final boolean ignoreFirstRecord) { + super(dataSource, delimiter, qualifier, ignoreFirstRecord); + } + + public BuffReaderDelimPZParser(final InputStream dataSourceStream, final char delimiter, final char qualifier, + final boolean ignoreFirstRecord) { + super(dataSourceStream, delimiter, qualifier, ignoreFirstRecord); + } + + + public DataSet doParse() { + final DataSet ds = new BuffReaderDelimPZDataSet(getColumnMD(), this); + try { + //gather the conversion properties + ds.setPZConvertProps(ParserUtils.loadConvertProperties()); + + if (getDataSourceStream() == null) { + setDataSourceStream(ParserUtils.createInputStream(getDataSource())); + } + + isr = new InputStreamReader(getDataSourceStream()); + br = new BufferedReader(isr); + + return ds; + + } catch(IOException ex) { + ex.printStackTrace(); + } + + return null; + } + + /** + * Reads in the next record on the file and return a row + * + * @param ds + * @return Row + * @throws IOException + */ + public Row buildRow(final DefaultDataSet ds) throws IOException{ + /** loop through each line in the file */ + while (true) { + String line = fetchNextRecord(br, getQualifier(), getDelimiter()); + + if (line == null) { + return null; + } + + // check to see if the user has elected to skip the first record + if (!processedFirst && isIgnoreFirstRecord()) { + processedFirst = true; + continue; + } else if (!processedFirst && shouldCreateMDFromFile()) { + processedFirst = true; + setColumnMD(ParserUtils.getColumnMDFromFile(line, getDelimiter(), getQualifier())); + continue; + } + + //TODO + //seems like we may want to try doing something like this. I have my reservations because + //it is possible that we don't get a "detail" id and this might generate NPE + //is it going to create too much overhead to do a null check here as well??? + //final int intialSize = ParserUtils.getColumnMetaData(PZConstants.DETAIL_ID, getColumnMD()).size(); + // column values + final List columns = ParserUtils.splitLine(line, getDelimiter(), getQualifier(), PZConstants.SPLITLINE_SIZE_INIT); + final String mdkey = ParserUtils.getCMDKeyForDelimitedFile(getColumnMD(), columns); + final List cmds = ParserUtils.getColumnMetaData(mdkey, getColumnMD()); + final int columnCount = cmds.size(); + // DEBUG + + // Incorrect record length on line log the error. Line + // will not be included in the dataset + if (columns.size() > columnCount) { + // log the error + addError(ds, "TOO MANY COLUMNS WANTED: " + columnCount + " GOT: " + columns.size(), getLineCount(), 2); + continue; + } else if (columns.size() < columnCount) { + if (isHandlingShortLines()) { + // We can pad this line out + while (columns.size() < columnCount) { + columns.add(""); + } + + // log a warning + addError(ds, "PADDED LINE TO CORRECT NUMBER OF COLUMNS", getLineCount(), 1); + + } else { + addError(ds, "TOO FEW COLUMNS WANTED: " + columnCount + " GOT: " + columns.size(), getLineCount(), 2); + continue; + } + } + + final Row row = new Row(); + row.setMdkey(mdkey.equals(PZConstants.DETAIL_ID) ? null : mdkey); // try + // to limit the memory use + row.setCols(columns); + row.setRowNumber(getLineCount()); + + return row; + } + } + + /** + * Closes out the file readers + * + *@throws IOException + */ + public void close() throws IOException{ + if (br != null) { + br.close(); + } + if (isr != null) { + isr.close(); + } + } + + /** + * Returns the meta data describing the columns + */ + public Map getColumnMD() { + return super.getColumnMD(); + } +} Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZParseFactory.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZParseFactory.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZParseFactory.java 2006-12-15 02:07:56 UTC (rev 215) @@ -0,0 +1,121 @@ +package net.sf.pzfilereader.brparse; + +import java.io.File; +import java.io.InputStream; +import java.sql.Connection; + +import net.sf.pzfilereader.PZParser; +import net.sf.pzfilereader.PZParserFactory; + +/** + * Provides a PZParser which obtains records directly from + * a BufferedReader as an alternative to reading the + * entire file into memory. + * + * @author Paul Zepernick + */ +public class BuffReaderPZParseFactory implements PZParserFactory{ + private static final BuffReaderPZParseFactory INSTANCE = new BuffReaderPZParseFactory(); + + public static PZParserFactory getInstance() { + return INSTANCE; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParserFactory#newFixedWidthParser(java.sql.Connection, + * java.io.File, java.lang.String) + */ + public PZParser newFixedLengthParser(final Connection con, final File dataSource, final String dataDefinition) { + //return new DBFixedLengthPZParser(con, dataSource, dataDefinition); + return null; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParserFactory#newFixedWidthParser(java.sql.Connection, + * java.io.InputStream, java.lang.String) + */ + public PZParser newFixedLengthParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition) { + //return new DBFixedLengthPZParser(con, dataSourceStream, dataDefinition); + return null; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.File, + * java.io.File) + */ + public PZParser newFixedLengthParser(final File pzmapXML, final File dataSource) { + // return new FixedLengthPZParser(pzmapXML, dataSource); + return null; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.InputStream, + * java.io.InputStream) + */ + public PZParser newFixedLengthParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream) { + // return new FixedLengthPZParser(pzmapXMLStream, dataSourceStream); + return null; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParserFactory#newParser(java.sql.Connection, + * java.io.InputStream, java.lang.String, char, char, boolean) + */ + public PZParser newDelimitedParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition, + final char delimiter, final char qualifier, final boolean ignoreFirstRecord) { + //return new BuffReaderDelimPZParser(con, dataSourceStream, dataDefinition, delimiter, qualifier, ignoreFirstRecord); + return null; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.File, + * java.io.File, char, char, boolean) + */ + public PZParser newDelimitedParser(final File pzmapXML, final File dataSource, final char delimiter, final char qualifier, + final boolean ignoreFirstRecord) { + return new BuffReaderDelimPZParser(pzmapXML, dataSource, delimiter, qualifier, ignoreFirstRecord); + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.InputStream, + * java.io.InputStream, char, char, boolean) + */ + public PZParser newDelimitedParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream, + final char delimiter, final char qualifier, final boolean ignoreFirstRecord) { + return new BuffReaderDelimPZParser(pzmapXMLStream, dataSourceStream, delimiter, qualifier, ignoreFirstRecord); + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.File, char, + * char) + */ + public PZParser newDelimitedParser(final File dataSource, final char delimiter, final char qualifier) { + return new BuffReaderDelimPZParser(dataSource, delimiter, qualifier, false); + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.InputStream, + * char, char) + */ + public PZParser newDelimitedParser(final InputStream dataSourceStream, final char delimiter, final char qualifier) { + return new BuffReaderDelimPZParser(dataSourceStream, delimiter, qualifier, false); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-12-15 13:17:33
|
Revision: 217 http://svn.sourceforge.net/pzfilereader/?rev=217&view=rev Author: zepernick Date: 2006-12-15 05:17:33 -0800 (Fri, 15 Dec 2006) Log Message: ----------- added a protected method to clear the rows out of the DataSet Changed the BuffredReader parser to call clear rows instead of using the getRows which was removed. Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZDataSet.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java 2006-12-15 13:16:19 UTC (rev 216) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java 2006-12-15 13:17:33 UTC (rev 217) @@ -254,15 +254,6 @@ /* * (non-Javadoc) * - * @see net.sf.pzfilereader.IDataSet#getRows() - */ - public List getRows() { - return rows; - } - - /* - * (non-Javadoc) - * * @see net.sf.pzfilereader.IDataSet#getString(java.lang.String) */ public String getString(final String column) { @@ -460,6 +451,12 @@ this.pointer = pointer; } - + /** + * Clears all of the in memory rows of the DataSet + * + */ + protected void clearRows() { + rows.clear(); + } } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZDataSet.java 2006-12-15 13:16:19 UTC (rev 216) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZDataSet.java 2006-12-15 13:17:33 UTC (rev 217) @@ -34,7 +34,7 @@ setColumnMD(new LinkedHashMap(brpzparser.getColumnMD())); } - getRows().clear(); + clearRows(); addRow(r); setPointer(0); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-12-16 15:15:32
|
Revision: 233 http://svn.sourceforge.net/pzfilereader/?rev=233&view=rev Author: zepernick Date: 2006-12-16 07:15:30 -0800 (Sat, 16 Dec 2006) Log Message: ----------- cleaned up most of the checkstyle errors. There are still a couple out there that I am not sure how to deal with exactly Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataError.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZDataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java 2006-12-16 14:48:21 UTC (rev 232) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java 2006-12-16 15:15:30 UTC (rev 233) @@ -38,10 +38,8 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.net.URL; import java.util.List; import java.util.Map; -import java.util.Properties; import net.sf.pzfilereader.structure.Row; import net.sf.pzfilereader.util.FixedWidthParserUtils; Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataError.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataError.java 2006-12-16 14:48:21 UTC (rev 232) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataError.java 2006-12-16 15:15:30 UTC (rev 233) @@ -1,16 +1,34 @@ /* - Copyright 2006 Paul Zepernick - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software distributed - under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - CONDITIONS OF ANY KIND, either express or implied. See the License for - the specific language governing permissions and limitations under the License. + * ObjectLab, http://www.objectlab.co.uk/open is supporting PZFileReader. + * + * Based in London, we are world leaders in the design and development + * of bespoke applications for the securities financing markets. + * + * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> + * ___ _ _ _ _ _ + * / _ \| |__ (_) ___ ___| |_| | __ _| |__ + * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ + * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | + * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ + * |__/ + * + * www.ObjectLab.co.uk + * + * $Id: ColorProvider.java 74 2006-10-24 22:19:05Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. */ package net.sf.pzfilereader; @@ -21,18 +39,21 @@ * @version 2.0 */ public class DataError { + final private String errorDesc; - /** Description of error. */ - private String errorDesc; + final private int lineNo; - /** line number in file error occured on. */ - private int lineNo; + final private int errorLevel; /** - * Severity of the error 1 = Warning 2 = Moderate 3 = Severe. + * + * @param errorDesc + * Text description of the error that occured + * @param lineNo + * Line number in the data file the error occured on + * @param errorLevel + * Level of the error (1=warning, 2=moderate, 3=severe) */ - private int errorLevel; - public DataError(final String errorDesc, final int lineNo, final int errorLevel) { this.errorDesc = errorDesc; this.lineNo = lineNo; @@ -40,13 +61,6 @@ } /** - * @deprecated should use the ctor with fields - * - */ - public DataError() { - } - - /** * Returns the errorDesc. * * @return String @@ -72,37 +86,4 @@ public int getLineNo() { return lineNo; } - - /** - * Sets the errorDesc. - * - * @param errorDesc - * The errorDesc to set - * @deprecated the DataError should be immutable (i.e. no Set method) - */ - public void setErrorDesc(final String errorDesc) { - this.errorDesc = errorDesc; - } - - /** - * Sets the errorLevel. - * - * @param errorLevel - * The errorLevel to set - * @deprecated the DataError should be immutable (i.e. no Set method) - */ - public void setErrorLevel(final int errorLevel) { - this.errorLevel = errorLevel; - } - - /** - * Sets the lineNo. - * - * @param lineNo - * The lineNo to set - * @deprecated the DataError should be immutable (i.e. no Set method) - */ - public void setLineNo(final int lineNo) { - this.lineNo = lineNo; - } } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java 2006-12-16 14:48:21 UTC (rev 232) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java 2006-12-16 15:15:30 UTC (rev 233) @@ -42,8 +42,6 @@ import java.util.Map; import java.util.Properties; -import net.sf.pzfilereader.converter.PZConvertException; -import net.sf.pzfilereader.converter.PZConverter; import net.sf.pzfilereader.ordering.OrderBy; import net.sf.pzfilereader.structure.ColumnMetaData; import net.sf.pzfilereader.structure.Row; Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZDataSet.java 2006-12-16 14:48:21 UTC (rev 232) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZDataSet.java 2006-12-16 15:15:30 UTC (rev 233) @@ -35,28 +35,29 @@ import java.io.IOException; import java.util.LinkedHashMap; import java.util.Map; -import java.util.TreeMap; import net.sf.pzfilereader.DefaultDataSet; import net.sf.pzfilereader.structure.Row; public class BuffReaderPZDataSet extends DefaultDataSet{ - private BuffReaderDelimPZParser brDelimPzParser; + private final BuffReaderDelimPZParser brDelimPzParser; - private BuffReaderFixedPZParser brFixedPzParser; + private final BuffReaderFixedPZParser brFixedPzParser; public BuffReaderPZDataSet(final Map columnMD2, BuffReaderDelimPZParser brDelimPzParser) { super(columnMD2); //register the parser with the dataset so we can fetch rows from //the bufferedreader as needed - this.brDelimPzParser = brDelimPzParser; + this.brDelimPzParser = brDelimPzParser; + this.brFixedPzParser = null; } public BuffReaderPZDataSet(final Map columnMD2, BuffReaderFixedPZParser brFixedPzParser) { super(columnMD2); //register the parser with the dataset so we can fetch rows from //the bufferedreader as needed - this.brFixedPzParser = brFixedPzParser; + this.brFixedPzParser = brFixedPzParser; + this.brDelimPzParser = null; } public boolean next() { Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java 2006-12-16 14:48:21 UTC (rev 232) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java 2006-12-16 15:15:30 UTC (rev 233) @@ -57,6 +57,7 @@ public int compare(final Object arg0, final Object arg1) { final Row row0 = (Row) arg0; final Row row1 = (Row) arg1; + int result = 0; for (int i = 0; i < orderbys.size(); i++) { final OrderColumn oc = (OrderColumn) orderbys.get(i); @@ -70,10 +71,8 @@ // keep headers / trailers in the same order at the bottom of // the DataSet return 0; - } else if (!mdkey0.equals(PZConstants.DETAIL_ID)) { - return 1; - } else if (!mdkey1.equals(PZConstants.DETAIL_ID)) { - return 0; + } else if (!mdkey0.equals(PZConstants.DETAIL_ID) || !mdkey1.equals(PZConstants.DETAIL_ID)) { + return !mdkey0.equals(PZConstants.DETAIL_ID) ? 1 : 0; } // convert to one type of case so the comparator does not take case @@ -81,25 +80,17 @@ final Comparable comp0 = row0.getValue(ParserUtils.findColumn(oc.getColumnName(), columnMD)).toLowerCase(); final Comparable comp1 = row1.getValue(ParserUtils.findColumn(oc.getColumnName(), columnMD)).toLowerCase(); - // + BX will never be equal to null. - // if (comp0 == null) { - // comp0 = new String(""); - // } - // if (comp1 == null) { - // comp1 = new String(""); - // } - // multiply by the sort indicator to get a ASC or DESC result - final int result = comp0.compareTo(comp1) * oc.getSortIndicator(); + result = comp0.compareTo(comp1) * oc.getSortIndicator(); // if it is = 0 then the primary sort is done, and it can start the // secondary sorts if (result != 0) { - return result; + break; } } - return 0; + return result; } /** Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2006-12-16 14:48:21 UTC (rev 232) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2006-12-16 15:15:30 UTC (rev 233) @@ -102,7 +102,7 @@ * intial capacity of the List size * @return List */ - public static List splitLine(String line, final char delimiter, final char qualifier, int initialSize) { + public static List splitLine(final String line, final char delimiter, final char qualifier, int initialSize) { List list = new ArrayList(initialSize); if (delimiter == 0) { @@ -130,7 +130,6 @@ for (int i = 0; i < size; i++) { final char currentChar = trimmedLine.charAt(i); - //System.out.println(currentChar); if (currentChar != delimiter && currentChar != qualifier) { previousChar = currentChar; endBlock = i + 1; @@ -728,17 +727,10 @@ public static int getColumnIndex(final String key, final Map columnMD, final String colName) { int idx = -1; if (key != null && !key.equals(PZConstants.DETAIL_ID) && !key.equals(PZConstants.COL_IDX)) { - // if ("header".equals(key)) { - // System.out.println("Columsn====header == "+ ((XMLRecordElement) - // columnMD.get(key)).getColumns()); - // } idx = ((XMLRecordElement) columnMD.get(key)).getColumnIndex(colName); } else if (key == null || key.equals(PZConstants.DETAIL_ID)) { final Map map = (Map) columnMD.get(PZConstants.COL_IDX); - // System.out.println("Map == " + map); - // System.out.println("look for == " + colName); idx = ((Integer) map.get(colName)).intValue(); - // System.out.println("-------------> " + idx); } if (idx < 0) { @@ -770,8 +762,11 @@ */ public static void closeReader(final Reader reader) { try { - reader.close(); - } catch (final Exception ignore) { + if (reader != null) { + reader.close(); + } + } catch (final IOException ex) { + throw new RuntimeException(ex); } } @@ -783,8 +778,11 @@ */ public static void closeReader(final InputStream reader) { try { - reader.close(); - } catch (final Exception ignore) { + if (reader != null) { + reader.close(); + } + } catch (final IOException ex) { + throw new RuntimeException(ex); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-12-16 17:51:26
|
Revision: 238 http://svn.sourceforge.net/pzfilereader/?rev=238&view=rev Author: zepernick Date: 2006-12-16 09:51:25 -0800 (Sat, 16 Dec 2006) Log Message: ----------- findbug fixes Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderColumn.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/structure/Row.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/FixedWidthParserUtils.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/ResolveLocalDTD.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2006-12-16 16:53:07 UTC (rev 237) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2006-12-16 17:51:25 UTC (rev 238) @@ -91,22 +91,16 @@ try { stream = ParserUtils.createInputStream(getDataSource()); return doDelimitedFile(stream, shouldCreateMDFromFile()); - } catch (final Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); } finally { if (stream != null) { stream.close(); } } } - } catch (final FileNotFoundException e) { - // TODO Auto-generated catch block + } catch (final IOException e) { + // TODO add logger e.printStackTrace(); - } catch (final Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + } return null; } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java 2006-12-16 16:53:07 UTC (rev 237) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java 2006-12-16 17:51:25 UTC (rev 238) @@ -65,10 +65,12 @@ try { final String sql = "SELECT * FROM DATAFILE INNER JOIN DATASTRUCTURE ON " - + "DATAFILE.DATAFILE_NO = DATASTRUCTURE.DATAFILE_NO " + "WHERE DATAFILE.DATAFILE_DESC = '" - + getDataDefinition() + "' " + "ORDER BY DATASTRUCTURE_COL_ORDER"; + + "DATAFILE.DATAFILE_NO = DATASTRUCTURE.DATAFILE_NO " + + "WHERE DATAFILE.DATAFILE_DESC = ? " + + "ORDER BY DATASTRUCTURE_COL_ORDER"; stmt = con.prepareStatement(sql); // always use PreparedStatement + stmt.setString(1, getDataDefinition()); // as the DB can do clever things. rs = stmt.executeQuery(); Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java 2006-12-16 16:53:07 UTC (rev 237) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java 2006-12-16 17:51:25 UTC (rev 238) @@ -70,11 +70,13 @@ try { final String sql = "SELECT * FROM DATAFILE INNER JOIN DATASTRUCTURE ON " - + "DATAFILE.DATAFILE_NO = DATASTRUCTURE.DATAFILE_NO " + "WHERE DATAFILE.DATAFILE_DESC = '" - + getDataDefinition() + "' " + "ORDER BY DATASTRUCTURE_COL_ORDER"; + + "DATAFILE.DATAFILE_NO = DATASTRUCTURE.DATAFILE_NO " + + "WHERE DATAFILE.DATAFILE_DESC = ? " + + "ORDER BY DATASTRUCTURE_COL_ORDER"; stmt = con.prepareStatement(sql); // always use PreparedStatement // as the DB can do clever things. + stmt.setString(1, getDataDefinition()); rs = stmt.executeQuery(); int recPosition = 1; Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java 2006-12-16 16:53:07 UTC (rev 237) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java 2006-12-16 17:51:25 UTC (rev 238) @@ -1,22 +1,42 @@ /* - Copyright 2006 Paul Zepernick - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software distributed - under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - CONDITIONS OF ANY KIND, either express or implied. See the License for - the specific language governing permissions and limitations under the License. + * ObjectLab, http://www.objectlab.co.uk/open is supporting PZFileReader. + * + * Based in London, we are world leaders in the design and development + * of bespoke applications for the securities financing markets. + * + * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> + * ___ _ _ _ _ _ + * / _ \| |__ (_) ___ ___| |_| | __ _| |__ + * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ + * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | + * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ + * |__/ + * + * www.ObjectLab.co.uk + * + * $Id: ColorProvider.java 74 2006-10-24 22:19:05Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. */ package net.sf.pzfilereader.ordering; +import java.io.Serializable; import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import java.util.Locale; import net.sf.pzfilereader.structure.Row; import net.sf.pzfilereader.util.PZConstants; @@ -30,7 +50,9 @@ * * @version 2.0 */ -public class OrderBy implements Comparator { +public class OrderBy implements Comparator, Serializable { + private static final long serialVersionUID = 5622406168247149895L; + /** collection of order elements to sort by */ private final ArrayList orderbys = new ArrayList(); @@ -77,8 +99,10 @@ // convert to one type of case so the comparator does not take case // into account when sorting - final Comparable comp0 = row0.getValue(ParserUtils.findColumn(oc.getColumnName(), columnMD)).toLowerCase(); - final Comparable comp1 = row1.getValue(ParserUtils.findColumn(oc.getColumnName(), columnMD)).toLowerCase(); + final Comparable comp0 = row0.getValue(ParserUtils.findColumn( + oc.getColumnName(), columnMD)).toLowerCase(Locale.getDefault()); + final Comparable comp1 = row1.getValue(ParserUtils.findColumn( + oc.getColumnName(), columnMD)).toLowerCase(Locale.getDefault()); // multiply by the sort indicator to get a ASC or DESC result result = comp0.compareTo(comp1) * oc.getSortIndicator(); Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderColumn.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderColumn.java 2006-12-16 16:53:07 UTC (rev 237) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderColumn.java 2006-12-16 17:51:25 UTC (rev 238) @@ -1,16 +1,34 @@ /* - Copyright 2006 Paul Zepernick - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software distributed - under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - CONDITIONS OF ANY KIND, either express or implied. See the License for - the specific language governing permissions and limitations under the License. + * ObjectLab, http://www.objectlab.co.uk/open is supporting PZFileReader. + * + * Based in London, we are world leaders in the design and development + * of bespoke applications for the securities financing markets. + * + * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> + * ___ _ _ _ _ _ + * / _ \| |__ (_) ___ ___| |_| | __ _| |__ + * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ + * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | + * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ + * |__/ + * + * www.ObjectLab.co.uk + * + * $Id: ColorProvider.java 74 2006-10-24 22:19:05Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. */ package net.sf.pzfilereader.ordering; Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/structure/Row.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/structure/Row.java 2006-12-16 16:53:07 UTC (rev 237) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/structure/Row.java 2006-12-16 17:51:25 UTC (rev 238) @@ -29,10 +29,19 @@ private List cols; /** Row number in flat file */ - private int rowNumber = 0; + private int rowNumber; /** key to the MD for this row, null will indicate it is "detail" MD */ private String mdkey; + + /** + * Constructs a new Row + * + */ + public Row() { + mdkey = null; + cols = new ArrayList(); + } /** * Adds a column to a row @@ -41,9 +50,6 @@ * String value to add to the row */ public void addColumn(final String colValue) { - if (cols == null) { - cols = new ArrayList(); - } cols.add(colValue); } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/FixedWidthParserUtils.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/FixedWidthParserUtils.java 2006-12-16 16:53:07 UTC (rev 237) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/FixedWidthParserUtils.java 2006-12-16 17:51:25 UTC (rev 238) @@ -36,6 +36,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import net.sf.pzfilereader.structure.ColumnMetaData; import net.sf.pzfilereader.xml.XMLRecordElement; @@ -86,16 +87,16 @@ // detail id return PZConstants.DETAIL_ID; } - final Iterator keys = columnMD.keySet().iterator(); + final Iterator mapEntries = columnMD.entrySet().iterator(); // loop through the XMLRecordElement objects and see if we need a // different MD object - while (keys.hasNext()) { - final String key = (String) keys.next(); - if (key.equals(PZConstants.DETAIL_ID) || key.equals(PZConstants.COL_IDX)) { + while (mapEntries.hasNext()) { + final Entry entry = (Entry) mapEntries.next(); + if (entry.getKey().equals(PZConstants.DETAIL_ID) || entry.getKey().equals(PZConstants.COL_IDX)) { continue; // skip this key will be assumed if none of the // others match } - final XMLRecordElement recordXMLElement = (XMLRecordElement) columnMD.get(key); + final XMLRecordElement recordXMLElement = (XMLRecordElement) entry.getValue(); if (recordXMLElement.getEndPositition() > line.length()) { // make sure our substring is not going to fail @@ -107,7 +108,7 @@ final int subto = recordXMLElement.getEndPositition(); if (line.substring(subfrm, subto).equals(recordXMLElement.getIndicator())) { // we found the MD object we want to return - return key; + return (String)entry.getKey(); } } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2006-12-16 16:53:07 UTC (rev 237) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2006-12-16 17:51:25 UTC (rev 238) @@ -50,6 +50,7 @@ import java.util.Map; import java.util.NoSuchElementException; import java.util.Properties; +import java.util.Map.Entry; import net.sf.pzfilereader.converter.PZConvertException; import net.sf.pzfilereader.converter.PZConverter; @@ -588,13 +589,13 @@ final Map recordLengths = new HashMap(); List cmds = null; - final Iterator columnMDIt = columnMD.keySet().iterator(); + final Iterator columnMDIt = columnMD.entrySet().iterator(); while (columnMDIt.hasNext()) { - final String key = (String) columnMDIt.next(); - if (key.equals(PZConstants.DETAIL_ID) || key.equals(PZConstants.COL_IDX)) { - cmds = (List) columnMD.get(PZConstants.DETAIL_ID); + final Entry entry = (Entry) columnMDIt.next(); + if (entry.getKey().equals(PZConstants.DETAIL_ID) || entry.getKey().equals(PZConstants.COL_IDX)) { + cmds = (List) entry.getValue(); } else { - cmds = ((XMLRecordElement) columnMD.get(key)).getColumns(); + cmds = ((XMLRecordElement) entry.getValue()).getColumns(); } int recordLength = 0; @@ -602,7 +603,7 @@ recordLength += ((ColumnMetaData) cmds.get(i)).getColLength(); } - recordLengths.put(key, new Integer(recordLength)); + recordLengths.put(entry.getKey(), new Integer(recordLength)); } @@ -622,40 +623,7 @@ * */ public static String getCMDKeyForFixedLengthFile(final Map columnMD, final String line) { - if (columnMD.size() == 1) { - // no <RECORD> elments were specifed for this parse, just return the - // detail id - return PZConstants.DETAIL_ID; - } - final Iterator keys = columnMD.keySet().iterator(); - // loop through the XMLRecordElement objects and see if we need a - // different MD object - while (keys.hasNext()) { - final String key = (String) keys.next(); - if (key.equals(PZConstants.DETAIL_ID) || key.equals(PZConstants.COL_IDX)) { - continue; // skip this key will be assumed if none of the - // others match - } - final XMLRecordElement recordXMLElement = (XMLRecordElement) columnMD.get(key); - - if (recordXMLElement.getEndPositition() > line.length()) { - // make sure our substring is not going to fail - continue; - } - final int subfrm = recordXMLElement.getStartPosition() - 1; // convert - // to 0 - // based - final int subto = recordXMLElement.getEndPositition(); - if (line.substring(subfrm, subto).equals(recordXMLElement.getIndicator())) { - // we found the MD object we want to return - return key; - } - - } - - // must be a detail line - return PZConstants.DETAIL_ID; - + return FixedWidthParserUtils.getCMDKey(columnMD, line); } /** @@ -673,16 +641,16 @@ // detail id return PZConstants.DETAIL_ID; } - final Iterator keys = columnMD.keySet().iterator(); + final Iterator mapEntries = columnMD.entrySet().iterator(); // loop through the XMLRecordElement objects and see if we need a // different MD object - while (keys.hasNext()) { - final String key = (String) keys.next(); - if (key.equals(PZConstants.DETAIL_ID) || key.equals(PZConstants.COL_IDX)) { + while (mapEntries.hasNext()) { + final Entry entry = (Entry) mapEntries.next(); + if (entry.getKey().equals(PZConstants.DETAIL_ID) || entry.getKey().equals(PZConstants.COL_IDX)) { continue; // skip this key will be assumed if none of the // others match } - final XMLRecordElement recordXMLElement = (XMLRecordElement) columnMD.get(key); + final XMLRecordElement recordXMLElement = (XMLRecordElement) entry.getValue(); if (recordXMLElement.getElementNumber() > lineElements.size()) { // make sure the element referenced in the mapping exists @@ -691,7 +659,7 @@ final String lineElement = (String) lineElements.get(recordXMLElement.getElementNumber() - 1); if (lineElement.equals(recordXMLElement.getIndicator())) { // we found the MD object we want to return - return key; + return (String)entry.getKey(); } } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java 2006-12-16 16:53:07 UTC (rev 237) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java 2006-12-16 17:51:25 UTC (rev 238) @@ -1,16 +1,34 @@ /* - Copyright 2006 Paul Zepernick - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software distributed - under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - CONDITIONS OF ANY KIND, either express or implied. See the License for - the specific language governing permissions and limitations under the License. + * ObjectLab, http://www.objectlab.co.uk/open is supporting PZFileReader. + * + * Based in London, we are world leaders in the design and development + * of bespoke applications for the securities financing markets. + * + * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> + * ___ _ _ _ _ _ + * / _ \| |__ (_) ___ ___| |_| | __ _| |__ + * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ + * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | + * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ + * |__/ + * + * www.ObjectLab.co.uk + * + * $Id: ColorProvider.java 74 2006-10-24 22:19:05Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. */ package net.sf.pzfilereader.xml; @@ -22,6 +40,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import net.sf.pzfilereader.structure.ColumnMetaData; import net.sf.pzfilereader.util.PZConstants; @@ -188,17 +207,19 @@ public static void setDebug(final boolean b) { showDebug = b; } - + + //TODO convert to logger instead of system out private static void showDebug(final Map xmlResults) { - final Iterator mapIt = xmlResults.keySet().iterator(); + final Iterator mapIt = xmlResults.entrySet().iterator(); while (mapIt.hasNext()) { XMLRecordElement xmlrecEle = null; - final String recordID = (String) mapIt.next(); + final Entry entry = (Entry)mapIt.next(); + final String recordID = (String) entry.getKey(); Iterator columns = null; if (recordID.equals(PZConstants.DETAIL_ID)) { - columns = ((List) xmlResults.get(recordID)).iterator(); + columns = ((List) entry.getValue()).iterator(); } else { - xmlrecEle = (XMLRecordElement) xmlResults.get(recordID); + xmlrecEle = (XMLRecordElement) entry.getValue(); columns = xmlrecEle.getColumns().iterator(); } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/ResolveLocalDTD.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/ResolveLocalDTD.java 2006-12-16 16:53:07 UTC (rev 237) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/ResolveLocalDTD.java 2006-12-16 17:51:25 UTC (rev 238) @@ -1,32 +1,52 @@ /* - Copyright 2006 Paul Zepernick - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software distributed - under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - CONDITIONS OF ANY KIND, either express or implied. See the License for - the specific language governing permissions and limitations under the License. + * ObjectLab, http://www.objectlab.co.uk/open is supporting PZFileReader. + * + * Based in London, we are world leaders in the design and development + * of bespoke applications for the securities financing markets. + * + * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> + * ___ _ _ _ _ _ + * / _ \| |__ (_) ___ ___| |_| | __ _| |__ + * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ + * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | + * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ + * |__/ + * + * www.ObjectLab.co.uk + * + * $Id: ColorProvider.java 74 2006-10-24 22:19:05Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. */ package net.sf.pzfilereader.xml; import java.io.IOException; import java.net.URL; +import java.util.Locale; import org.xml.sax.EntityResolver; import org.xml.sax.InputSource; import org.xml.sax.SAXException; /** - * @author zepernick + * Resolves a local copy of the DTD instead of having to pull + * over the internet from the SF site * - * Resolves a local copy of the DTD instead of having to pull from SF + * @author Paul Zepernick */ -public class ResolveLocalDTD implements EntityResolver { +public final class ResolveLocalDTD implements EntityResolver { /* * (non-Javadoc) @@ -35,18 +55,14 @@ * java.lang.String) */ public InputSource resolveEntity(final String publicId, final String systemId) throws SAXException, IOException { - try { - if (!systemId.toLowerCase().startsWith("http://")) { - final URL resource = getClass().getResource("pzfilereader.dtd"); + if (!systemId.toLowerCase(Locale.getDefault()).startsWith("http://")) { + final URL resource = getClass().getResource("pzfilereader.dtd"); - if (resource != null) { - return new InputSource(resource.openStream()); - } else { - throw new Exception("could not load dtd resource!!"); - } + if (resource != null) { + return new InputSource(resource.openStream()); + } else { + throw new RuntimeException("could not load dtd resource from jar!!"); } - } catch (final Exception ex) { - ex.printStackTrace(); } // must be pulling from the web, stick with default implementation This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2007-03-22 11:32:56
|
Revision: 296 http://svn.sourceforge.net/pzfilereader/?rev=296&view=rev Author: zepernick Date: 2007-03-22 04:32:57 -0700 (Thu, 22 Mar 2007) Log Message: ----------- - Added options for column case sensitivity This has not been implemented yet. Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java 2007-03-22 11:29:19 UTC (rev 295) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java 2007-03-22 11:32:57 UTC (rev 296) @@ -50,6 +50,8 @@ private boolean handlingShortLines = false; private boolean ignoreExtraColumns = false; + + private boolean columnNamesCaseSensitive = false; private boolean initialised = false; @@ -228,5 +230,13 @@ protected void setDataSourceReader(Reader dataSourceReader) { this.dataSourceReader = dataSourceReader; } + + public boolean isColumnNamesCaseSensitive() { + return columnNamesCaseSensitive; + } + + public void setColumnNamesCaseSensitive(boolean columnNamesCaseSensitive) { + this.columnNamesCaseSensitive = columnNamesCaseSensitive; + } } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java 2007-03-22 11:29:19 UTC (rev 295) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java 2007-03-22 11:32:57 UTC (rev 296) @@ -95,7 +95,6 @@ * the value of a column. * Example when true: Column name = AColumnName ; getString("acolumnname") would fail * Example when false: Column name = AColumnName ; getString("acolumnname") would pass - * @return boolean */ - boolean setColumnNamesCaseSensitive(final boolean columnNamesCaseSensitive); + void setColumnNamesCaseSensitive(final boolean columnNamesCaseSensitive); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2007-04-21 15:41:42
|
Revision: 297 http://svn.sourceforge.net/pzfilereader/?rev=297&view=rev Author: zepernick Date: 2007-04-21 08:41:43 -0700 (Sat, 21 Apr 2007) Log Message: ----------- Implemented the change to allow the user to specify if the column lookups should or should not be case sensitive. This required passing the PZParser object around to several places in util methods and in the DataSet. I think it will be handy to have it there for future changes so that we can easily obtain all the options the user has flagged for the parse. Deprecated old signatures of any method the PZParser parmeter was added to. It is possible to leave the PZParser null so anyone using a deprecated method can just pass a null in for the parser. Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZDataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/XMLRecordElement.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2007-03-22 11:32:57 UTC (rev 296) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2007-04-21 15:41:43 UTC (rev 297) @@ -169,7 +169,7 @@ throw new NullPointerException("dataSource is null"); } BufferedReader br = null; - final DefaultDataSet ds = new DefaultDataSet(getColumnMD()); + final DefaultDataSet ds = new DefaultDataSet(getColumnMD(), this); try { //gather the conversion properties ds.setPZConvertProps(ParserUtils.loadConvertProperties()); @@ -189,7 +189,7 @@ continue; } else if (!processedFirst && createMDFromFile) { processedFirst = true; - setColumnMD(ParserUtils.getColumnMDFromFile(line, delimiter, qualifier)); + setColumnMD(ParserUtils.getColumnMDFromFile(line, delimiter, qualifier, this)); ds.setColumnMD(getColumnMD()); continue; } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java 2007-03-22 11:32:57 UTC (rev 296) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java 2007-04-21 15:41:43 UTC (rev 297) @@ -109,7 +109,7 @@ private DataSet doFixedLengthFile(final Reader dataSource) throws IOException { BufferedReader br = null; - final DefaultDataSet ds = new DefaultDataSet(getColumnMD()); + final DefaultDataSet ds = new DefaultDataSet(getColumnMD(), this); try { //gather the conversion properties Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java 2007-03-22 11:32:57 UTC (rev 296) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java 2007-04-21 15:41:43 UTC (rev 297) @@ -78,7 +78,7 @@ final List cmds = ParserUtils.buildMDFromSQLTable(con, getDataDefinition()); addToColumnMD(PZConstants.DETAIL_ID, cmds); - addToColumnMD(PZConstants.COL_IDX, ParserUtils.buidColumnIndexMap(cmds)); + addToColumnMD(PZConstants.COL_IDX, ParserUtils.buidColumnIndexMap(cmds, this)); if (cmds.isEmpty()) { throw new FileNotFoundException("DATA DEFINITION CAN NOT BE FOUND IN THE DATABASE " + getDataDefinition()); Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java 2007-03-22 11:32:57 UTC (rev 296) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java 2007-04-21 15:41:43 UTC (rev 297) @@ -97,7 +97,7 @@ final List cmds = ParserUtils.buildMDFromSQLTable(con, getDataDefinition()); addToColumnMD(PZConstants.DETAIL_ID, cmds); - addToColumnMD(PZConstants.COL_IDX, ParserUtils.buidColumnIndexMap(cmds)); + addToColumnMD(PZConstants.COL_IDX, ParserUtils.buidColumnIndexMap(cmds, this)); if (cmds.isEmpty()) { throw new FileNotFoundException("DATA DEFINITION CAN NOT BE FOUND IN THE DATABASE " + getDataDefinition()); Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java 2007-03-22 11:32:57 UTC (rev 296) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java 2007-04-21 15:41:43 UTC (rev 297) @@ -75,9 +75,12 @@ private boolean strictNumericParse = false; private Map columnMD; + + private PZParser pzparser; - public DefaultDataSet(final Map columnMD2) { + public DefaultDataSet(final Map columnMD2, final PZParser pzparser) { this.columnMD = columnMD2; + this.pzparser = pzparser; } public void addRow(final Row row) { @@ -147,7 +150,7 @@ */ public Date getDate(final String column, final SimpleDateFormat sdf) throws ParseException { final Row row = (Row) rows.get(pointer); - final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); + final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column, pzparser)); if (s.trim().equals("")) { //don't do the parse on empties return null; @@ -164,7 +167,7 @@ final StringBuffer newString = new StringBuffer(); final Row row = (Row) rows.get(pointer); - final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); + final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column, pzparser)); if (!strictNumericParse) { newString.append(ParserUtils.stripNonDoubleChars(s)); @@ -178,7 +181,7 @@ public Object getObject(String column, Class classToConvertTo) { final Row row = (Row) rows.get(pointer); - final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); + final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column, pzparser)); return ParserUtils.runPzConverter(pzConvertProps, s, classToConvertTo); } @@ -221,7 +224,7 @@ public int getInt(final String column) { final StringBuffer newString = new StringBuffer(); final Row row = (Row) rows.get(pointer); - final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); + final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column, pzparser)); if (!strictNumericParse) { newString.append(ParserUtils.stripNonLongChars(s)); @@ -257,7 +260,7 @@ */ public String getString(final String column) { final Row row = (Row) rows.get(pointer); - final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); + final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column, pzparser)); if (upperCase) { // convert data to uppercase before returning @@ -280,7 +283,7 @@ public void setValue(String column, String value) { final Row row = (Row) rows.get(pointer); - final int colIndex = ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column); + final int colIndex = ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column, pzparser); row.setValue(colIndex, value); } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java 2007-03-22 11:32:57 UTC (rev 296) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java 2007-04-21 15:41:43 UTC (rev 297) @@ -39,7 +39,6 @@ import java.io.InputStreamReader; import java.io.Reader; -import net.sf.pzfilereader.util.ParserUtils; import net.sf.pzfilereader.xml.PZMapParser; import org.jdom.JDOMException; @@ -125,7 +124,7 @@ if (this.pzmapReader != null) { try { - setColumnMD(PZMapParser.parse(this.pzmapReader)); + setColumnMD(PZMapParser.parse(this.pzmapReader, this)); } finally { if (closeMapReader) { //only close the reader if it is one we created Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java 2007-03-22 11:32:57 UTC (rev 296) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java 2007-04-21 15:41:43 UTC (rev 297) @@ -104,7 +104,7 @@ } try { - setColumnMD(PZMapParser.parse(this.pzmapReader)); + setColumnMD(PZMapParser.parse(this.pzmapReader, this)); } finally { if (closeMapReader) { //only close the reader if it is one we created Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java 2007-03-22 11:32:57 UTC (rev 296) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java 2007-04-21 15:41:43 UTC (rev 297) @@ -125,7 +125,7 @@ continue; } else if (!processedFirst && shouldCreateMDFromFile()) { processedFirst = true; - setColumnMD(ParserUtils.getColumnMDFromFile(line, getDelimiter(), getQualifier())); + setColumnMD(ParserUtils.getColumnMDFromFile(line, getDelimiter(), getQualifier(), this)); continue; } Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZDataSet.java 2007-03-22 11:32:57 UTC (rev 296) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZDataSet.java 2007-04-21 15:41:43 UTC (rev 297) @@ -51,7 +51,7 @@ private final Logger logger = LoggerFactory.getLogger(BuffReaderPZDataSet.class); public BuffReaderPZDataSet(final Map columnMD2, final BuffReaderDelimPZParser brDelimPzParser) { - super(columnMD2); + super(columnMD2, brDelimPzParser); //register the parser with the dataset so we can fetch rows from //the bufferedreader as needed this.brDelimPzParser = brDelimPzParser; @@ -59,7 +59,7 @@ } public BuffReaderPZDataSet(final Map columnMD2, final BuffReaderFixedPZParser brFixedPzParser) { - super(columnMD2); + super(columnMD2, brFixedPzParser); //register the parser with the dataset so we can fetch rows from //the bufferedreader as needed this.brFixedPzParser = brFixedPzParser; Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2007-03-22 11:32:57 UTC (rev 296) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2007-04-21 15:41:43 UTC (rev 297) @@ -56,6 +56,7 @@ import java.util.Properties; import java.util.Map.Entry; +import net.sf.pzfilereader.PZParser; import net.sf.pzfilereader.converter.PZConvertException; import net.sf.pzfilereader.converter.PZConverter; import net.sf.pzfilereader.structure.ColumnMetaData; @@ -74,18 +75,6 @@ } /** - * @deprecated should only use the splitLine with a CHAR. - * @param line - * @param delimiter - * @param qualifier - * @return List - */ - public static List splitLine(final String line, final String delimiter, final String qualifier) { - return splitLine(line, delimiter != null ? delimiter.charAt(0) : 0, qualifier != null ? qualifier.charAt(0) : 0, - PZConstants.SPLITLINE_SIZE_INIT); - } - - /** * Returns an ArrayList of items in a delimited string. If there is no * qualifier around the text, the qualifier parameter can be left null, or * empty. There should not be any line breaks in the string. Each line of @@ -353,8 +342,25 @@ * @param qualifier * @exception Exception * @return ArrayList - ColumnMetaData + * @deprecated Use getColumnMDFromFile(String, char, char, PZParser) */ public static Map getColumnMDFromFile(final String line, final char delimiter, final char qualifier) { + return getColumnMDFromFile(line, delimiter, qualifier, null); + } + + /** + * Returns a list of ColumnMetaData objects. This is for use with delimited + * files. The first line of the file which contains data will be used as the + * column names + * + * @param line + * @param delimiter + * @param qualifier + * @param p + * PZParser used to specify additional option when working witht the ColumnMetaData. Can be null + * @return ArrayList - ColumnMetaData + */ + public static Map getColumnMDFromFile(final String line, final char delimiter, final char qualifier, final PZParser p) { List lineData = null; final List results = new ArrayList(); final Map columnMD = new LinkedHashMap(); @@ -367,7 +373,7 @@ } columnMD.put(PZConstants.DETAIL_ID, results); - columnMD.put(PZConstants.COL_IDX, buidColumnIndexMap(results)); + columnMD.put(PZConstants.COL_IDX, buidColumnIndexMap(results, p)); return columnMD; } @@ -452,23 +458,7 @@ * @param qualifier - * qualifier being used * @return boolean - * @deprecated use the char version */ - public static boolean isMultiLine(final char[] chrArry, final String delimiter, final String qualifier) { - return isMultiLine(chrArry, delimiter != null ? delimiter.charAt(0) : 0, qualifier != null ? qualifier.charAt(0) : 0); - } - - /** - * Determines if the given line is the first part of a multiline record - * - * @param chrArry - - * char data of the line - * @param delimiter - - * delimiter being used - * @param qualifier - - * qualifier being used - * @return boolean - */ public static boolean isMultiLine(final char[] chrArry, final char delimiter, final char qualifier) { // check if the last char is the qualifier, if so then this a good @@ -567,20 +557,6 @@ } - /** - * Returns the key to the list of ColumnMetaData objects. Returns the - * correct MetaData per the mapping file and the data contained on the line - * - * - * @param columnMD - * @param line - * @return List - ColumMetaData - * @deprecated Moved to FixedWidthParserUtils.getCMDKey() - * - */ - public static String getCMDKeyForFixedLengthFile(final Map columnMD, final String line) { - return FixedWidthParserUtils.getCMDKey(columnMD, line); - } /** * Returns the key to the list of ColumnMetaData objects. Returns the @@ -643,19 +619,25 @@ * Use this method to find the index of a column. * * @author Benoit Xhenseval + * @author Paul Zepernick * @param key * @param columnMD * @param colName + * @param p + * Can be null. Used to specify potential options on how the column should be retrieved * @return -1 if it does not find it */ - public static int getColumnIndex(final String key, final Map columnMD, final String colName) { + public static int getColumnIndex(final String key, final Map columnMD, final String colName, final PZParser p) { int idx = -1; + String column = colName; + if (p != null && !p.isColumnNamesCaseSensitive()) { + column = colName.toLowerCase(Locale.getDefault()); + } if (key != null && !key.equals(PZConstants.DETAIL_ID) && !key.equals(PZConstants.COL_IDX)) { - idx = ((XMLRecordElement) columnMD.get(key)).getColumnIndex(colName.toLowerCase( - Locale.getDefault())); + idx = ((XMLRecordElement) columnMD.get(key)).getColumnIndex(column); } else if (key == null || key.equals(PZConstants.DETAIL_ID)) { final Map map = (Map) columnMD.get(PZConstants.COL_IDX); - final Integer i = (Integer) map.get(colName.toLowerCase(Locale.getDefault())); + final Integer i = (Integer) map.get(column); if (i != null) { //happens when the col name does not exist in the mapping idx = i.intValue(); } @@ -666,6 +648,20 @@ } return idx; } + + /** + * Use this method to find the index of a column. + * + * @author Benoit Xhenseval + * @param key + * @param columnMD + * @param colName + * @return -1 if it does not find it + * @deprecated use getColumnIndex(String, Map, String, PZParser) + */ + public static int getColumnIndex(final String key, final Map columnMD, final String colName) { + return getColumnIndex(key, columnMD, colName, null); + } /** * Create an InputStream based on a File. @@ -757,24 +753,45 @@ * Build a map of name/position based on a list of ColumnMetaData. * * @author Benoit Xhenseval + * @author Paul Zepernick * @param columns + * @param p + * Reference to Parser which can provide additional options on how the + * map should be build. This can be NULL. * @return a new Map */ - public static Map buidColumnIndexMap(final List columns) { + public static Map buidColumnIndexMap(final List columns, final PZParser p) { Map map = null; if (columns != null && !columns.isEmpty()) { map = new HashMap(); int idx = 0; for (final Iterator it = columns.iterator(); it.hasNext(); idx++) { final ColumnMetaData meta = (ColumnMetaData) it.next(); - map.put(meta.getColName().toLowerCase( - Locale.getDefault()), new Integer(idx)); + String colName = meta.getColName(); + if (p != null && !p.isColumnNamesCaseSensitive()) { + //user has selected to make column names case sensitive + //on lookups + colName = colName.toLowerCase(Locale.getDefault()); + } + map.put(colName, new Integer(idx)); } } return map; } /** + * Build a map of name/position based on a list of ColumnMetaData. + * + * @author Benoit Xhenseval + * @param columns + * @return a new Map + * @deprecated Please use buildColumnIndexMap(List, PZParser) + */ + public static Map buidColumnIndexMap(final List columns) { + return buidColumnIndexMap(columns, null); + } + + /** * Removes chars from the String that could not * be parsed into a Long value * @@ -890,6 +907,7 @@ * tables * @param dataDefinition * Name of the data definition stored in the Datafile table + * @throws SQLException * @return List */ public static List buildMDFromSQLTable(final Connection con, final String dataDefinition) throws SQLException{ Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java 2007-03-22 11:32:57 UTC (rev 296) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java 2007-04-21 15:41:43 UTC (rev 297) @@ -32,13 +32,9 @@ */ package net.sf.pzfilereader.xml; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.io.PrintWriter; import java.io.Reader; import java.util.ArrayList; import java.util.Iterator; @@ -47,6 +43,7 @@ import java.util.Map; import java.util.Map.Entry; +import net.sf.pzfilereader.PZParser; import net.sf.pzfilereader.structure.ColumnMetaData; import net.sf.pzfilereader.util.PZConstants; import net.sf.pzfilereader.util.ParserUtils; @@ -92,7 +89,7 @@ InputStreamReader isr = null; try { isr = new InputStreamReader(xmlStream); - return parse(isr); + return parse(isr, null); } finally { if (isr != null) { isr.close(); @@ -106,11 +103,13 @@ * returns a Map containing Lists of ColumnMetaData. * * @param xmlStreamReader + * @param pzparser + * Can be null. Allows additional opts to be set durring the XML map read * @return Map <records> with their corrisponding * @throws IOException * @throws JDOMException */ - public static Map parse(final Reader xmlStreamReader) throws JDOMException, IOException { + public static Map parse(final Reader xmlStreamReader, final PZParser pzparser) throws JDOMException, IOException { //use for debug when JDOM complains about the xml /* final BufferedReader br = new BufferedReader(xmlStreamReader); final FileWriter fw = new FileWriter("c:/test.pz"); @@ -148,7 +147,7 @@ mdIndex.put(PZConstants.DETAIL_ID, columns); // always force detail // to the top of // the map no matter what - mdIndex.put(PZConstants.COL_IDX, ParserUtils.buidColumnIndexMap(columns)); + mdIndex.put(PZConstants.COL_IDX, ParserUtils.buidColumnIndexMap(columns, pzparser)); // get all of the "record" elements and the columns under them final Iterator recordDescriptors = root.getChildren("RECORD").iterator(); @@ -166,7 +165,7 @@ columns = getColumnChildren(xmlElement); final XMLRecordElement xmlre = new XMLRecordElement(); - xmlre.setColumns(columns); + xmlre.setColumns(columns, pzparser); xmlre.setIndicator(xmlElement.getAttributeValue("indicator")); xmlre.setElementNumber(convertAttributeToInt(xmlElement.getAttribute("elementNumber"))); xmlre.setStartPosition(convertAttributeToInt(xmlElement.getAttribute("startPosition"))); Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/XMLRecordElement.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/XMLRecordElement.java 2007-03-22 11:32:57 UTC (rev 296) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/XMLRecordElement.java 2007-04-21 15:41:43 UTC (rev 297) @@ -17,6 +17,7 @@ import java.util.List; import java.util.Map; +import net.sf.pzfilereader.PZParser; import net.sf.pzfilereader.util.ParserUtils; /** @@ -108,11 +109,23 @@ /** * @param columns * The columns to set. + * @deprecated Please use setColumns(List, PZParser) */ public void setColumns(final List columns) { this.columns = columns; - this.columnIndex = ParserUtils.buidColumnIndexMap(columns); + this.columnIndex = ParserUtils.buidColumnIndexMap(columns, null); } + + /** + * @param columns + * The columns to set. + * @param p + * PZParser being used. Can be null. + */ + public void setColumns(final List columns, final PZParser p) { + this.columns = columns; + this.columnIndex = ParserUtils.buidColumnIndexMap(columns, p); + } /** * Returns the index of the column name. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |