You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(112) |
Nov
(44) |
Dec
(49) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(14) |
Feb
(12) |
Mar
(12) |
Apr
(12) |
May
(6) |
Jun
(11) |
Jul
(10) |
Aug
(6) |
Sep
(17) |
Oct
(3) |
Nov
(22) |
Dec
|
2008 |
Jan
(3) |
Feb
(7) |
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
(6) |
Oct
|
Nov
|
Dec
|
2009 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
(1) |
Mar
(9) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
(2) |
Dec
|
2011 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
(3) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
2012 |
Jan
(3) |
Feb
|
Mar
(2) |
Apr
(8) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <zep...@us...> - 2006-10-24 11:36:57
|
Revision: 115 http://svn.sourceforge.net/pzfilereader/?rev=115&view=rev Author: zepernick Date: 2006-10-24 04:36:50 -0700 (Tue, 24 Oct 2006) Log Message: ----------- started splitline test. Publishing so I can work on it futher from work Added Paths: ----------- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/ParserUtilsSplitLineTest.java Added: trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/ParserUtilsSplitLineTest.java =================================================================== --- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/ParserUtilsSplitLineTest.java (rev 0) +++ trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/ParserUtilsSplitLineTest.java 2006-10-24 11:36:50 UTC (rev 115) @@ -0,0 +1,53 @@ +package net.sf.pzfilereader.parserutils; + +import java.util.List; + +import net.sf.pzfilereader.util.ParserUtils; +import junit.framework.TestCase; + +/** + * Test the functionality of the splitLine method. This method returns + * a List of Strings. Each element of the list represents a column created + * by the parser from the delimited String. + * + * @author zepernick + */ +public class ParserUtilsSplitLineTest extends TestCase{ + final String[] delimitedDataNoBreaks = {"Column 1","Column 2", "Column 3", "Column 4", "Column 5"}; + final String[] delimitedDataWithBreaks = {"Column 1","Column 2", "Column 3", "Column 4", "Column 5"}; + + /** + * Test CSV without any line breaks + * + */ + public void testCSVNoLineBreaks(){ + + final String delimiter = ","; + final String qualifier = "\""; + final StringBuffer txtToParse = new StringBuffer(); + for (int i = 0; i < delimitedDataNoBreaks.length; i++){ + if (i > 0){ + txtToParse.append(delimiter); + } + txtToParse.append(qualifier + delimitedDataNoBreaks[i] + qualifier); + } + + List splitLineResults = ParserUtils.splitLine(txtToParse.toString(), delimiter, qualifier); + + + //check to make sure we have the same amount of elements which were expected + assertEquals(delimitedDataNoBreaks.length, splitLineResults.size()); + + //loop through each value and compare what came back + for (int i = 0 ; i < delimitedDataNoBreaks.length; i ++){ + assertEquals(delimitedDataNoBreaks[i], (String)splitLineResults.get(i)); + } + + + } + + public static void main(final String[] args) { + junit.textui.TestRunner.run(ParserUtilsSplitLineTest.class); + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-10-24 11:12:35
|
Revision: 114 http://svn.sourceforge.net/pzfilereader/?rev=114&view=rev Author: zepernick Date: 2006-10-24 04:12:29 -0700 (Tue, 24 Oct 2006) Log Message: ----------- Renamed to follow naming convention "ClassNameMethodToTest" Added Paths: ----------- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/ParserUtilsLTrimTest.java Removed Paths: ------------- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java Deleted: trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java =================================================================== --- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java 2006-10-24 11:08:33 UTC (rev 113) +++ trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java 2006-10-24 11:12:29 UTC (rev 114) @@ -1,83 +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.parserutils; - -import net.sf.pzfilereader.util.ParserUtils; -import junit.framework.TestCase; - -/** - * Tests the functionality of the left trim in the ParserUtils - * - * @author paul zepernick - */ -public class LTrimTest extends TestCase{ - /** - * Make sure all spaces are properly removed from the front of the String - * - */ - public void testTrimLeadingSpaces(){ - final String testS = " RemoveAll SpacesFromMe"; - assertEquals("RemoveAll SpacesFromMe" , ParserUtils.lTrim(testS)); - } - - /** - * Make sure all spaces are properly removed from the front of the String - * leaving the trailing spaces at the end - * - */ - public void testTrimLeadingSpacesWithTrailingSpaces(){ - final String testS = " RemoveAll SpacesFromMe "; - final String tResult = ParserUtils.lTrim(testS); - assertEquals("RemoveAll SpacesFromMe " , tResult); - } - - - /** - * Make sure all TAB chars are properly removed from the front of the String - * leaving the trailing spaces at the end - * - */ - public void testTrimLeadingTabs(){ - final String testS = "\t\t\tRemoveAll SpacesFromMe "; - final String tResult = ParserUtils.lTrim(testS); - assertEquals("RemoveAll SpacesFromMe " , tResult); - } - - - /** - * Make sure all TAB chars are properly removed from the front of the String - * leaving the trailing spaces at the end - * - */ - public void testKeepLeadingTabs(){ - final String testS = " \t\t\tRemoveAll SpacesFromMe "; - final String tResult = ParserUtils.lTrimKeepTabs(testS); - assertEquals("\t\t\tRemoveAll SpacesFromMe " , tResult); - } - - /** - * Ensure that spaces and tabs in the middle of the string will - * not be removed. - */ - public void testWithTabsInMiddleAndEnd() { - assertEquals("RemoveAll \tSpaces \t\t",ParserUtils.lTrim("\t \t RemoveAll \tSpaces \t\t")); - assertEquals("\t \t RemoveAll \tSpaces \t\t ",ParserUtils.lTrimKeepTabs(" \t \t RemoveAll \tSpaces \t\t ")); - assertEquals("\t \t RemoveAll \tSpaces \t\t",ParserUtils.lTrimKeepTabs("\t \t RemoveAll \tSpaces \t\t")); - } - - public static void main(final String[] args) { - junit.textui.TestRunner.run(LTrimTest.class); - } -} Copied: trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/ParserUtilsLTrimTest.java (from rev 109, trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java) =================================================================== --- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/ParserUtilsLTrimTest.java (rev 0) +++ trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/ParserUtilsLTrimTest.java 2006-10-24 11:12:29 UTC (rev 114) @@ -0,0 +1,83 @@ +/* + 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.parserutils; + +import net.sf.pzfilereader.util.ParserUtils; +import junit.framework.TestCase; + +/** + * Tests the functionality of the left trim in the ParserUtils + * + * @author paul zepernick + */ +public class ParserUtilsLTrimTest extends TestCase{ + /** + * Make sure all spaces are properly removed from the front of the String + * + */ + public void testTrimLeadingSpaces(){ + final String testS = " RemoveAll SpacesFromMe"; + assertEquals("RemoveAll SpacesFromMe" , ParserUtils.lTrim(testS)); + } + + /** + * Make sure all spaces are properly removed from the front of the String + * leaving the trailing spaces at the end + * + */ + public void testTrimLeadingSpacesWithTrailingSpaces(){ + final String testS = " RemoveAll SpacesFromMe "; + final String tResult = ParserUtils.lTrim(testS); + assertEquals("RemoveAll SpacesFromMe " , tResult); + } + + + /** + * Make sure all TAB chars are properly removed from the front of the String + * leaving the trailing spaces at the end + * + */ + public void testTrimLeadingTabs(){ + final String testS = "\t\t\tRemoveAll SpacesFromMe "; + final String tResult = ParserUtils.lTrim(testS); + assertEquals("RemoveAll SpacesFromMe " , tResult); + } + + + /** + * Make sure all TAB chars are properly removed from the front of the String + * leaving the trailing spaces at the end + * + */ + public void testKeepLeadingTabs(){ + final String testS = " \t\t\tRemoveAll SpacesFromMe "; + final String tResult = ParserUtils.lTrimKeepTabs(testS); + assertEquals("\t\t\tRemoveAll SpacesFromMe " , tResult); + } + + /** + * Ensure that spaces and tabs in the middle of the string will + * not be removed. + */ + public void testWithTabsInMiddleAndEnd() { + assertEquals("RemoveAll \tSpaces \t\t",ParserUtils.lTrim("\t \t RemoveAll \tSpaces \t\t")); + assertEquals("\t \t RemoveAll \tSpaces \t\t ",ParserUtils.lTrimKeepTabs(" \t \t RemoveAll \tSpaces \t\t ")); + assertEquals("\t \t RemoveAll \tSpaces \t\t",ParserUtils.lTrimKeepTabs("\t \t RemoveAll \tSpaces \t\t")); + } + + public static void main(final String[] args) { + junit.textui.TestRunner.run(ParserUtilsLTrimTest.class); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-10-24 11:08:38
|
Revision: 113 http://svn.sourceforge.net/pzfilereader/?rev=113&view=rev Author: zepernick Date: 2006-10-24 04:08:33 -0700 (Tue, 24 Oct 2006) Log Message: ----------- added CSV with hdr and trailer file to make #5 work okay Added Paths: ----------- trunk/PZFileReaderSamples/src/main/script/PEOPLE-CommaDelimitedWithQualifierAndHeaderTrailerRecError.txt Added: trunk/PZFileReaderSamples/src/main/script/PEOPLE-CommaDelimitedWithQualifierAndHeaderTrailerRecError.txt =================================================================== --- trunk/PZFileReaderSamples/src/main/script/PEOPLE-CommaDelimitedWithQualifierAndHeaderTrailerRecError.txt (rev 0) +++ trunk/PZFileReaderSamples/src/main/script/PEOPLE-CommaDelimitedWithQualifierAndHeaderTrailerRecError.txt 2006-10-24 11:08:33 UTC (rev 113) @@ -0,0 +1,9 @@ +"FIRSTNAME","LASTNAME","ADDRESS","CITY","STATE","ZIP" +"H","Some Header Data Here" +"JOHN","ANAME","1234 CIRCLE CT","ELYRIA","OH","44035" +"JIMMY","ZNAME","180 SOME ST","AVON","OH","44011" +"JANE","ANAME","111 MILKY WY","AVON","OH","44001" +"FRED","ZNAME","123 ROCKY WY","ELYRIA","OH","12345","Extra Element To Produce An Error" +"FRED","ZNAME","123 ROCKY WY","ELYRIA","OH","12345" +"FRED","ZNAME","Text Qualifier " and seperator, in string","ELYRIA","OH","" +"T","Some Trailer Data Here" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-10-24 11:03:30
|
Revision: 112 http://svn.sourceforge.net/pzfilereader/?rev=112&view=rev Author: zepernick Date: 2006-10-24 04:03:22 -0700 (Tue, 24 Oct 2006) Log Message: ----------- Added code to print the errors found in the file if there were any. Pointed to a text file with no header and trailer to corrispond with the mapping. Modified Paths: -------------- trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/exporttoexcel/DelimitedFileExportToExcel.java Modified: trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/exporttoexcel/DelimitedFileExportToExcel.java =================================================================== --- trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/exporttoexcel/DelimitedFileExportToExcel.java 2006-10-23 11:34:12 UTC (rev 111) +++ trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/exporttoexcel/DelimitedFileExportToExcel.java 2006-10-24 11:03:22 UTC (rev 112) @@ -7,6 +7,7 @@ import java.io.File; +import net.sf.pzfilereader.DataError; import net.sf.pzfilereader.DataSet; import net.sf.pzfilereader.ordering.OrderBy; import net.sf.pzfilereader.ordering.OrderColumn; @@ -26,7 +27,7 @@ } public static String getDefaultDataFile() { - return "PEOPLE-CommaDelimitedWithQualifierAndHeaderTrailer.txt"; + return "PEOPLE-CommaDelimitedWithQualifier.txt"; } public static String getDefaultMapping() { @@ -49,11 +50,16 @@ ds.orderRows(orderby); if (ds.getErrors() != null && ds.getErrors().size() > 0) { - System.out.println("FOUND ERRORS IN FILE"); + for (int i = 0; i < ds.getErrors().size(); i++){ + final DataError de = (DataError)ds.getErrors().get(i); + System.out.println("Error Msg: " + de.getErrorDesc() + " Line: " + de.getLineNo()); + } } // lets write this file out to excel :) - ds.writeToExcel(new File("MyExcelExport.xls")); + File xlFile = new File("MyExcelExport.xls"); + ds.writeToExcel(xlFile); + System.out.println("Excel Workbook Written To: " + xlFile.getAbsolutePath()); // clear out the DataSet object for the JVM to collect ds.freeMemory(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-10-23 11:34:17
|
Revision: 111 http://svn.sourceforge.net/pzfilereader/?rev=111&view=rev Author: zepernick Date: 2006-10-23 04:34:12 -0700 (Mon, 23 Oct 2006) Log Message: ----------- added header and trailer checks Modified Paths: -------------- trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/delimiteddynamiccolumns/DelimitedWithPZMap.java trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/delimiteddynamiccolumnswitherrors/DelimitedWithPZMapErrors.java Modified: trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/delimiteddynamiccolumns/DelimitedWithPZMap.java =================================================================== --- trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/delimiteddynamiccolumns/DelimitedWithPZMap.java 2006-10-23 10:58:17 UTC (rev 110) +++ trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/delimiteddynamiccolumns/DelimitedWithPZMap.java 2006-10-23 11:34:12 UTC (rev 111) @@ -27,7 +27,7 @@ } public static String getDefaultDataFile() { - return "PEOPLE-CommaDelimitedWithQualifierAndHeaderTrailer.txt"; + return "PEOPLE-CommaDelimitedWithQualifierAndHeaderTrailerRecError.txt"; } public static String getDefaultMapping() { Modified: trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/delimiteddynamiccolumnswitherrors/DelimitedWithPZMapErrors.java =================================================================== --- trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/delimiteddynamiccolumnswitherrors/DelimitedWithPZMapErrors.java 2006-10-23 10:58:17 UTC (rev 110) +++ trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/delimiteddynamiccolumnswitherrors/DelimitedWithPZMapErrors.java 2006-10-23 11:34:12 UTC (rev 111) @@ -28,7 +28,7 @@ } public static String getDefaultDataFile() { - return "PEOPLE-CommaDelimitedWithQualifierAndHeaderTrailer.txt"; + return "PEOPLE-CommaDelimitedWithQualifierAndHeaderTrailerRecError.txt"; } public static String getDefaultMapping() { @@ -57,6 +57,24 @@ colNames = ds.getColumns(); while (ds.next()) { + + if (ds.isRecordID("header")) { + System.out.println(">>>>found header"); + System.out.println("COLUMN NAME: INDICATOR VALUE: " + ds.getString("RECORDINDICATOR")); + System.out.println("COLUMN NAME: HEADERDATA VALUE: " + ds.getString("HEADERDATA")); + System.out.println("==========================================================================="); + continue; + } + + if (ds.isRecordID("trailer")) { + System.out.println(">>>>found trailer"); + System.out.println("COLUMN NAME: INDICATOR VALUE: " + ds.getString("RECORDINDICATOR")); + System.out.println("COLUMN NAME: TRAILERDATA VALUE: " + ds.getString("TRAILERDATA")); + System.out.println("==========================================================================="); + continue; + } + + for (int i = 0; i < colNames.length; i++) { System.out.println("COLUMN NAME: " + colNames[i] + " VALUE: " + ds.getString(colNames[i])); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-10-23 10:58:21
|
Revision: 110 http://svn.sourceforge.net/pzfilereader/?rev=110&view=rev Author: zepernick Date: 2006-10-23 03:58:17 -0700 (Mon, 23 Oct 2006) Log Message: ----------- Keep the header and trailer in the same order when moving to the bottom Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java 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-20 12:14:30 UTC (rev 109) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java 2006-10-23 10:58:17 UTC (rev 110) @@ -19,6 +19,7 @@ import java.util.List; import net.sf.pzfilereader.structure.Row; +import net.sf.pzfilereader.util.PZConstants; import net.sf.pzfilereader.util.ParserUtils; /** @@ -59,13 +60,18 @@ for (int i = 0; i < orderbys.size(); 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 + final String mdkey0 = row0.getMdkey() == null ? PZConstants.DETAIL_ID : row0.getMdkey(); + final String mdkey1 = row1.getMdkey() == null ? PZConstants.DETAIL_ID : row1.getMdkey(); + // shift all non detail records to the bottom of the DataSet - if (row0.getMdkey() != null && !row0.getMdkey().equals("detail")) { + if (!mdkey0.equals(PZConstants.DETAIL_ID) && !mdkey1.equals(PZConstants.DETAIL_ID)){ + //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 (row1.getMdkey() != null && !row1.getMdkey().equals("detail")) { + } else if (!mdkey1.equals(PZConstants.DETAIL_ID)) { return 0; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2006-10-20 12:14:42
|
Revision: 109 http://svn.sourceforge.net/pzfilereader/?rev=109&view=rev Author: benoitx Date: 2006-10-20 05:14:30 -0700 (Fri, 20 Oct 2006) Log Message: ----------- Fixed the test. Modified Paths: -------------- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java Modified: trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java =================================================================== --- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java 2006-10-20 09:53:38 UTC (rev 108) +++ trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java 2006-10-20 12:14:30 UTC (rev 109) @@ -73,10 +73,8 @@ */ public void testWithTabsInMiddleAndEnd() { assertEquals("RemoveAll \tSpaces \t\t",ParserUtils.lTrim("\t \t RemoveAll \tSpaces \t\t")); - - // Paul what should happen for the following tests, should they skip the tab and get rid of the spaces or stop at the first tab?? assertEquals("\t \t RemoveAll \tSpaces \t\t ",ParserUtils.lTrimKeepTabs(" \t \t RemoveAll \tSpaces \t\t ")); - assertEquals("\t\tRemoveAll \tSpaces \t\t",ParserUtils.lTrimKeepTabs("\t \t RemoveAll \tSpaces \t\t")); + assertEquals("\t \t RemoveAll \tSpaces \t\t",ParserUtils.lTrimKeepTabs("\t \t RemoveAll \tSpaces \t\t")); } public static void main(final String[] args) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2006-10-20 09:53:45
|
Revision: 108 http://svn.sourceforge.net/pzfilereader/?rev=108&view=rev Author: benoitx Date: 2006-10-20 02:53:38 -0700 (Fri, 20 Oct 2006) Log Message: ----------- Took liberty to make the tests more explicit in order to detect any potential side effect, say the lTrim would correctly remove the leading space and leave the last one but mangle the text in between, the original tests would not have spotted that. I have also added a space in the middle of the word to detect more potential issues. Finally, I have added a method at the bottom and this has raised a question about the exacts spec... Paul, please have a look. i.e. lTrimWithKeepTabs, what if the string starts with a tab and then a space and then some text "\t blabla" what should the result be??? "\t blabla" (now) or "\tblabla" ??? Modified Paths: -------------- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java Modified: trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java =================================================================== --- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java 2006-10-20 09:49:59 UTC (rev 107) +++ trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java 2006-10-20 09:53:38 UTC (rev 108) @@ -23,16 +23,13 @@ * @author paul zepernick */ public class LTrimTest extends TestCase{ - - - /** * Make sure all spaces are properly removed from the front of the String * */ public void testTrimLeadingSpaces(){ - final String testS = " RemoveAllSpacesFromMe"; - assertEquals(true , ParserUtils.lTrim(testS).indexOf(" ") == -1); + final String testS = " RemoveAll SpacesFromMe"; + assertEquals("RemoveAll SpacesFromMe" , ParserUtils.lTrim(testS)); } /** @@ -41,9 +38,9 @@ * */ public void testTrimLeadingSpacesWithTrailingSpaces(){ - final String testS = " RemoveAllSpacesFromMe "; + final String testS = " RemoveAll SpacesFromMe "; final String tResult = ParserUtils.lTrim(testS); - assertEquals(true , !tResult.startsWith(" ") && tResult.endsWith(" ")); + assertEquals("RemoveAll SpacesFromMe " , tResult); } @@ -53,9 +50,9 @@ * */ public void testTrimLeadingTabs(){ - final String testS = "\t\t\tRemoveAllSpacesFromMe "; + final String testS = "\t\t\tRemoveAll SpacesFromMe "; final String tResult = ParserUtils.lTrim(testS); - assertEquals(true , !tResult.startsWith("\t") && tResult.endsWith(" ")); + assertEquals("RemoveAll SpacesFromMe " , tResult); } @@ -65,11 +62,22 @@ * */ public void testKeepLeadingTabs(){ - final String testS = " \t\t\tRemoveAllSpacesFromMe "; + final String testS = " \t\t\tRemoveAll SpacesFromMe "; final String tResult = ParserUtils.lTrimKeepTabs(testS); - assertEquals(true , tResult.startsWith("\t") && tResult.endsWith(" ")); + assertEquals("\t\t\tRemoveAll SpacesFromMe " , tResult); } + /** + * Ensure that spaces and tabs in the middle of the string will + * not be removed. + */ + public void testWithTabsInMiddleAndEnd() { + assertEquals("RemoveAll \tSpaces \t\t",ParserUtils.lTrim("\t \t RemoveAll \tSpaces \t\t")); + + // Paul what should happen for the following tests, should they skip the tab and get rid of the spaces or stop at the first tab?? + assertEquals("\t \t RemoveAll \tSpaces \t\t ",ParserUtils.lTrimKeepTabs(" \t \t RemoveAll \tSpaces \t\t ")); + assertEquals("\t\tRemoveAll \tSpaces \t\t",ParserUtils.lTrimKeepTabs("\t \t RemoveAll \tSpaces \t\t")); + } public static void main(final String[] args) { junit.textui.TestRunner.run(LTrimTest.class); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2006-10-20 09:50:14
|
Revision: 107 http://svn.sourceforge.net/pzfilereader/?rev=107&view=rev Author: benoitx Date: 2006-10-20 02:49:59 -0700 (Fri, 20 Oct 2006) Log Message: ----------- Fixed link to download page. Modified Paths: -------------- trunk/project.properties Modified: trunk/project.properties =================================================================== --- trunk/project.properties 2006-10-19 22:22:11 UTC (rev 106) +++ trunk/project.properties 2006-10-20 09:49:59 UTC (rev 107) @@ -44,7 +44,7 @@ # Display the maven version the web site is documenting #maven.xdoc.version = maven.xdoc.version=${pom.currentVersion} -maven.xdoc.distributionUrl=https://sourceforge.net/project/showfiles.php?group_id=175139 +maven.xdoc.distributionUrl=https://sourceforge.net/project/showfiles.php?group_id=127761 #maven.xdoc.poweredby.image=objectlab-poweredby.gif maven.xdoc.poweredby.title=Powered By the Nice People of ObjectLab maven.xdoc.poweredby.url=http://www.objectlab.co.uk This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-10-19 22:22:15
|
Revision: 106 http://svn.sourceforge.net/pzfilereader/?rev=106&view=rev Author: zepernick Date: 2006-10-19 15:22:11 -0700 (Thu, 19 Oct 2006) Log Message: ----------- bad test on keep leading tabs...corrected Modified Paths: -------------- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java Modified: trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java =================================================================== --- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java 2006-10-19 15:28:54 UTC (rev 105) +++ trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java 2006-10-19 22:22:11 UTC (rev 106) @@ -67,7 +67,7 @@ public void testKeepLeadingTabs(){ final String testS = " \t\t\tRemoveAllSpacesFromMe "; final String tResult = ParserUtils.lTrimKeepTabs(testS); - assertEquals(true , !tResult.startsWith("\t") && tResult.endsWith(" ")); + assertEquals(true , tResult.startsWith("\t") && tResult.endsWith(" ")); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-10-19 15:29:30
|
Revision: 105 http://svn.sourceforge.net/pzfilereader/?rev=105&view=rev Author: zepernick Date: 2006-10-19 08:28:54 -0700 (Thu, 19 Oct 2006) Log Message: ----------- Test cases for lTrim and lTrimKeepTabs Added Paths: ----------- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java Added: trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java =================================================================== --- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java (rev 0) +++ trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/LTrimTest.java 2006-10-19 15:28:54 UTC (rev 105) @@ -0,0 +1,77 @@ +/* + 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.parserutils; + +import net.sf.pzfilereader.util.ParserUtils; +import junit.framework.TestCase; + +/** + * Tests the functionality of the left trim in the ParserUtils + * + * @author paul zepernick + */ +public class LTrimTest extends TestCase{ + + + + /** + * Make sure all spaces are properly removed from the front of the String + * + */ + public void testTrimLeadingSpaces(){ + final String testS = " RemoveAllSpacesFromMe"; + assertEquals(true , ParserUtils.lTrim(testS).indexOf(" ") == -1); + } + + /** + * Make sure all spaces are properly removed from the front of the String + * leaving the trailing spaces at the end + * + */ + public void testTrimLeadingSpacesWithTrailingSpaces(){ + final String testS = " RemoveAllSpacesFromMe "; + final String tResult = ParserUtils.lTrim(testS); + assertEquals(true , !tResult.startsWith(" ") && tResult.endsWith(" ")); + } + + + /** + * Make sure all TAB chars are properly removed from the front of the String + * leaving the trailing spaces at the end + * + */ + public void testTrimLeadingTabs(){ + final String testS = "\t\t\tRemoveAllSpacesFromMe "; + final String tResult = ParserUtils.lTrim(testS); + assertEquals(true , !tResult.startsWith("\t") && tResult.endsWith(" ")); + } + + + /** + * Make sure all TAB chars are properly removed from the front of the String + * leaving the trailing spaces at the end + * + */ + public void testKeepLeadingTabs(){ + final String testS = " \t\t\tRemoveAllSpacesFromMe "; + final String tResult = ParserUtils.lTrimKeepTabs(testS); + assertEquals(true , !tResult.startsWith("\t") && tResult.endsWith(" ")); + } + + + public static void main(final String[] args) { + junit.textui.TestRunner.run(LTrimTest.class); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-10-19 15:28:55
|
Revision: 104 http://svn.sourceforge.net/pzfilereader/?rev=104&view=rev Author: zepernick Date: 2006-10-19 08:28:42 -0700 (Thu, 19 Oct 2006) Log Message: ----------- Test cases for lTrim and lTrimKeepTabs Added Paths: ----------- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-10-19 07:27:16
|
Revision: 103 http://svn.sourceforge.net/pzfilereader/?rev=103&view=rev Author: zepernick Date: 2006-10-19 00:27:12 -0700 (Thu, 19 Oct 2006) Log Message: ----------- added checks for header and trailer records Modified Paths: -------------- trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/delimiteddynamiccolumns/DelimitedWithPZMap.java Modified: trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/delimiteddynamiccolumns/DelimitedWithPZMap.java =================================================================== --- trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/delimiteddynamiccolumns/DelimitedWithPZMap.java 2006-10-19 07:16:06 UTC (rev 102) +++ trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/delimiteddynamiccolumns/DelimitedWithPZMap.java 2006-10-19 07:27:12 UTC (rev 103) @@ -51,6 +51,23 @@ String[] colNames = ds.getColumns(); while (ds.next()) { + + if (ds.isRecordID("header")) { + System.out.println(">>>>found header"); + System.out.println("COLUMN NAME: INDICATOR VALUE: " + ds.getString("RECORDINDICATOR")); + System.out.println("COLUMN NAME: HEADERDATA VALUE: " + ds.getString("HEADERDATA")); + System.out.println("==========================================================================="); + continue; + } + + if (ds.isRecordID("trailer")) { + System.out.println(">>>>found trailer"); + System.out.println("COLUMN NAME: INDICATOR VALUE: " + ds.getString("RECORDINDICATOR")); + System.out.println("COLUMN NAME: TRAILERDATA VALUE: " + ds.getString("TRAILERDATA")); + System.out.println("==========================================================================="); + continue; + } + for (int i = 0; i < colNames.length; i++) { System.out.println("COLUMN NAME: " + colNames[i] + " VALUE: " + ds.getString(colNames[i])); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-10-19 07:16:09
|
Revision: 102 http://svn.sourceforge.net/pzfilereader/?rev=102&view=rev Author: zepernick Date: 2006-10-19 00:16:06 -0700 (Thu, 19 Oct 2006) Log Message: ----------- added default system type to get around JDOM parse error. More notes in task manager Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java 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-19 06:03:30 UTC (rev 101) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java 2006-10-19 07:16:06 UTC (rev 102) @@ -73,7 +73,8 @@ * returns a Map containing Lists of ColumnMetaData. * * @param xmlStream - * @return + * @return Map + * <records> with their corrisponding * @throws Exception */ public static Map parse(final InputStream xmlStream) throws Exception { @@ -81,7 +82,11 @@ builder.setValidation(true); // handle the ability to pull DTD from Jar if needed builder.setEntityResolver(new ResolveLocalDTD()); - final Document document = builder.build(xmlStream); + + //JDOM started to blow up on the parse if the system id param was not specified + //not sure why this started to happen now. Was not making to EntityResolver to pull + //dtd out of the jar if needed + final Document document = builder.build(xmlStream, "file:///"); final Element root = document.getRootElement(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-10-19 06:03:34
|
Revision: 101 http://svn.sourceforge.net/pzfilereader/?rev=101&view=rev Author: zepernick Date: 2006-10-18 23:03:30 -0700 (Wed, 18 Oct 2006) Log Message: ----------- backed out a 1.5 only method Integer.valueOf Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 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-18 20:51:29 UTC (rev 100) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2006-10-19 06:03:30 UTC (rev 101) @@ -805,7 +805,8 @@ int idx = 0; for (final Iterator it = columns.iterator(); it.hasNext(); idx++) { final ColumnMetaData meta = (ColumnMetaData) it.next(); - map.put(meta.getColName(), Integer.valueOf(idx)); + //map.put(meta.getColName(), Integer.valueOf(idx)); breaks 1.4 compile + map.put(meta.getColName(), new Integer(idx)); } } return map; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2006-10-18 20:51:48
|
Revision: 100 http://svn.sourceforge.net/pzfilereader/?rev=100&view=rev Author: benoitx Date: 2006-10-18 13:51:29 -0700 (Wed, 18 Oct 2006) Log Message: ----------- Uploaded new site. Modified Paths: -------------- trunk/PZFileReader/qalab.xml trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java trunk/PZFileReaderSamples/qalab.xml trunk/src/site/index.xml Modified: trunk/PZFileReader/qalab.xml =================================================================== --- trunk/PZFileReader/qalab.xml 2006-10-18 13:40:13 UTC (rev 99) +++ trunk/PZFileReader/qalab.xml 2006-10-18 20:51:29 UTC (rev 100) @@ -53,6 +53,12 @@ <summaryresult date="2006-10-17" filecount="3" statvalue="116" type="simian"/> <summaryresult date="2006-10-17" filecount="13" statvalue="17" type="cobertura-line"/> <summaryresult date="2006-10-17" filecount="13" statvalue="23" type="cobertura-branch"/> + <summaryresult date="2006-10-18" filecount="19" statvalue="26" type="checkstyle"/> + <summaryresult date="2006-10-18" filecount="3" statvalue="5" type="pmd"/> + <summaryresult date="2006-10-18" filecount="6" statvalue="11" type="findbugs"/> + <summaryresult date="2006-10-18" filecount="3" statvalue="116" type="simian"/> + <summaryresult date="2006-10-18" filecount="14" statvalue="18" type="cobertura-line"/> + <summaryresult date="2006-10-18" filecount="14" statvalue="24" type="cobertura-branch"/> </summary> <file id="com_pz_reader_ordering_package.html" path="com/pz/reader/ordering/package.html"> <result date="2006-10-05" statvalue="1" type="checkstyle"/> @@ -329,6 +335,8 @@ <file id="net_sf_pzfilereader_DataError.java" path="net/sf/pzfilereader/DataError.java"> <result date="2006-10-17" statvalue="3" type="checkstyle"/> <result date="2006-10-17" statvalue="100" type="cobertura-branch"/> + <result date="2006-10-18" statvalue="3" type="checkstyle"/> + <result date="2006-10-18" statvalue="100" type="cobertura-branch"/> </file> <file id="net_sf_pzfilereader_DataSet.java" path="net/sf/pzfilereader/DataSet.java"> <result date="2006-10-17" statvalue="4" type="checkstyle"/> @@ -336,13 +344,21 @@ <result date="2006-10-17" statvalue="2" type="findbugs"/> <result date="2006-10-17" statvalue="21" type="cobertura-line"/> <result date="2006-10-17" statvalue="27" type="cobertura-branch"/> + <result date="2006-10-18" statvalue="5" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="pmd"/> + <result date="2006-10-18" statvalue="2" type="findbugs"/> + <result date="2006-10-18" statvalue="21" type="cobertura-line"/> + <result date="2006-10-18" statvalue="27" type="cobertura-branch"/> </file> <file id="net_sf_pzfilereader_LargeDataSet.java" path="net/sf/pzfilereader/LargeDataSet.java"> <result date="2006-10-17" statvalue="4" type="checkstyle"/> + <result date="2006-10-18" statvalue="4" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_ordering_OrderBy.java" path="net/sf/pzfilereader/ordering/OrderBy.java"> <result date="2006-10-17" statvalue="1" type="checkstyle"/> <result date="2006-10-17" statvalue="2" type="findbugs"/> + <result date="2006-10-18" statvalue="1" type="checkstyle"/> + <result date="2006-10-18" statvalue="2" type="findbugs"/> </file> <file id="net_sf_pzfilereader_util_ParserUtils.java" path="net/sf/pzfilereader/util/ParserUtils.java"> <result date="2006-10-17" statvalue="4" type="checkstyle"/> @@ -350,27 +366,44 @@ <result date="2006-10-17" statvalue="3" type="findbugs"/> <result date="2006-10-17" statvalue="33" type="cobertura-line"/> <result date="2006-10-17" statvalue="41" type="cobertura-branch"/> + <result date="2006-10-18" statvalue="9" type="checkstyle"/> + <result date="2006-10-18" statvalue="3" type="pmd"/> + <result date="2006-10-18" statvalue="3" type="findbugs"/> + <result date="2006-10-18" statvalue="36" type="cobertura-line"/> + <result date="2006-10-18" statvalue="43" type="cobertura-branch"/> </file> <file id="net_sf_pzfilereader_xml_PZMapParser.java" path="net/sf/pzfilereader/xml/PZMapParser.java"> <result date="2006-10-17" statvalue="4" type="checkstyle"/> <result date="2006-10-17" statvalue="1" type="pmd"/> <result date="2006-10-17" statvalue="1" type="findbugs"/> + <result date="2006-10-18" statvalue="4" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="pmd"/> + <result date="2006-10-18" statvalue="1" type="findbugs"/> </file> <file id="net_sf_pzfilereader_xml_ResolveLocalDTD.java" path="net/sf/pzfilereader/xml/ResolveLocalDTD.java"> <result date="2006-10-17" statvalue="2" type="findbugs"/> + <result date="2006-10-18" statvalue="2" type="findbugs"/> </file> <file id="net_sf_pzfilereader_structure_Row.java" path="net/sf/pzfilereader/structure/Row.java"> <result date="2006-10-17" statvalue="1" type="findbugs"/> <result date="2006-10-17" statvalue="44" type="cobertura-line"/> + <result date="2006-10-18" statvalue="1" type="findbugs"/> + <result date="2006-10-18" statvalue="44" type="cobertura-line"/> </file> <file id="net_sf_pzfilereader_structure_ColumnMetaData.java" path="net/sf/pzfilereader/structure/ColumnMetaData.java"> <result date="2006-10-17" statvalue="50" type="cobertura-line"/> <result date="2006-10-17" statvalue="100" type="cobertura-branch"/> + <result date="2006-10-18" statvalue="50" type="cobertura-line"/> + <result date="2006-10-18" statvalue="100" type="cobertura-branch"/> </file> <file id="net_sf_pzfilereader_Version.java" path="net/sf/pzfilereader/Version.java"> <result date="2006-10-17" statvalue="100" type="cobertura-branch"/> + <result date="2006-10-18" statvalue="100" type="cobertura-branch"/> </file> <file id="net_sf_pzfilereader_xml_XMLRecordElement.java" path="net/sf/pzfilereader/xml/XMLRecordElement.java"> <result date="2006-10-17" statvalue="100" type="cobertura-branch"/> </file> + <file id="net_sf_pzfilereader_util_PZConstants.java" path="net/sf/pzfilereader/util/PZConstants.java"> + <result date="2006-10-18" statvalue="100" type="cobertura-branch"/> + </file> </qalab> Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2006-10-18 13:40:13 UTC (rev 99) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2006-10-18 20:51:29 UTC (rev 100) @@ -1186,7 +1186,8 @@ } /** - * Erases the dataset early and releases memory for the JVM to reclaim + * 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) { Modified: trunk/PZFileReaderSamples/qalab.xml =================================================================== --- trunk/PZFileReaderSamples/qalab.xml 2006-10-18 13:40:13 UTC (rev 99) +++ trunk/PZFileReaderSamples/qalab.xml 2006-10-18 20:51:29 UTC (rev 100) @@ -25,6 +25,10 @@ <summaryresult date="2006-10-17" filecount="2" statvalue="2" type="pmd"/> <summaryresult date="2006-10-17" filecount="5" statvalue="7" type="findbugs"/> <summaryresult date="2006-10-17" filecount="6" statvalue="82" type="simian"/> + <summaryresult date="2006-10-18" filecount="34" statvalue="143" type="checkstyle"/> + <summaryresult date="2006-10-18" filecount="2" statvalue="2" type="pmd"/> + <summaryresult date="2006-10-18" filecount="6" statvalue="8" type="findbugs"/> + <summaryresult date="2006-10-18" filecount="6" statvalue="78" type="simian"/> </summary> <file id="com_pz_reader_examples_numericsanddates_package.html" path="com/pz/reader/examples/numericsanddates/package.html"> <result date="2006-10-16" statvalue="1" type="checkstyle"/> @@ -154,134 +158,174 @@ <file id="com_pz_reader_examples_ConsoleMenu.java" path="com/pz/reader/examples/ConsoleMenu.java"/> <file id="net_sf_pzfilereader_examples_package.html" path="net/sf/pzfilereader/examples/package.html"> <result date="2006-10-17" statvalue="1" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_largedataset_largecsvperformancetest_package.html" path="net/sf/pzfilereader/examples/largedataset/largecsvperformancetest/package.html"> <result date="2006-10-17" statvalue="1" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_multilinedelimitedrecord_package.html" path="net/sf/pzfilereader/examples/multilinedelimitedrecord/package.html"> <result date="2006-10-17" statvalue="1" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_numericsanddates_package.html" path="net/sf/pzfilereader/examples/numericsanddates/package.html"> <result date="2006-10-17" statvalue="1" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_delimitedcolumnnamesinfile_package.html" path="net/sf/pzfilereader/examples/delimitedcolumnnamesinfile/package.html"> <result date="2006-10-17" statvalue="1" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_delimiteddynamiccolumns_package.html" path="net/sf/pzfilereader/examples/delimiteddynamiccolumns/package.html"> <result date="2006-10-17" statvalue="1" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_exporttoexcel_package.html" path="net/sf/pzfilereader/examples/exporttoexcel/package.html"> <result date="2006-10-17" statvalue="1" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_largedataset_fixedlengthdynamiccolumns_package.html" path="net/sf/pzfilereader/examples/largedataset/fixedlengthdynamiccolumns/package.html"> <result date="2006-10-17" statvalue="1" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_createsamplecsv_package.html" path="net/sf/pzfilereader/examples/createsamplecsv/package.html"> <result date="2006-10-17" statvalue="1" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_fixedlengthdynamiccolumns_package.html" path="net/sf/pzfilereader/examples/fixedlengthdynamiccolumns/package.html"> <result date="2006-10-17" statvalue="1" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_largedataset_delimiteddynamiccolumns_package.html" path="net/sf/pzfilereader/examples/largedataset/delimiteddynamiccolumns/package.html"> <result date="2006-10-17" statvalue="1" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_csvperformancetest_package.html" path="net/sf/pzfilereader/examples/csvperformancetest/package.html"> <result date="2006-10-17" statvalue="1" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_lowlevelparse_package.html" path="net/sf/pzfilereader/examples/lowlevelparse/package.html"> <result date="2006-10-17" statvalue="1" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_delimiteddynamiccolumnswitherrors_package.html" path="net/sf/pzfilereader/examples/delimiteddynamiccolumnswitherrors/package.html"> <result date="2006-10-17" statvalue="1" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_fixedlengthheaderandtrailer_package.html" path="net/sf/pzfilereader/examples/fixedlengthheaderandtrailer/package.html"> <result date="2006-10-17" statvalue="1" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_csvheaderandtrailer_package.html" path="net/sf/pzfilereader/examples/csvheaderandtrailer/package.html"> <result date="2006-10-17" statvalue="1" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_Examples.java" path="net/sf/pzfilereader/examples/Examples.java"> <result date="2006-10-17" statvalue="21" type="checkstyle"/> + <result date="2006-10-18" statvalue="21" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="findbugs"/> </file> <file id="net_sf_pzfilereader_examples_createsamplecsv_CSVTestFileCreator.java" path="net/sf/pzfilereader/examples/createsamplecsv/CSVTestFileCreator.java"> <result date="2006-10-17" statvalue="7" type="checkstyle"/> <result date="2006-10-17" statvalue="1" type="pmd"/> <result date="2006-10-17" statvalue="1" type="findbugs"/> + <result date="2006-10-18" statvalue="7" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="pmd"/> + <result date="2006-10-18" statvalue="1" type="findbugs"/> </file> <file id="net_sf_pzfilereader_examples_csvheaderandtrailer_CSVHeaderAndTrailer.java" path="net/sf/pzfilereader/examples/csvheaderandtrailer/CSVHeaderAndTrailer.java"> <result date="2006-10-17" statvalue="17" type="checkstyle"/> + <result date="2006-10-18" statvalue="17" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_csvperformancetest_CSVPerformanceTest.java" path="net/sf/pzfilereader/examples/csvperformancetest/CSVPerformanceTest.java"> <result date="2006-10-17" statvalue="15" type="checkstyle"/> <result date="2006-10-17" statvalue="1" type="findbugs"/> + <result date="2006-10-18" statvalue="16" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="findbugs"/> </file> <file id="net_sf_pzfilereader_examples_delimitedcolumnnamesinfile_DelimitedColumnNamesInFile.java" path="net/sf/pzfilereader/examples/delimitedcolumnnamesinfile/DelimitedColumnNamesInFile.java"> <result date="2006-10-17" statvalue="5" type="checkstyle"/> + <result date="2006-10-18" statvalue="5" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_delimiteddynamiccolumns_DelimitedWithPZMap.java" path="net/sf/pzfilereader/examples/delimiteddynamiccolumns/DelimitedWithPZMap.java"> <result date="2006-10-17" statvalue="4" type="checkstyle"/> + <result date="2006-10-18" statvalue="4" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_delimiteddynamiccolumnswitherrors_DelimitedWithPZMapErrors.java" path="net/sf/pzfilereader/examples/delimiteddynamiccolumnswitherrors/DelimitedWithPZMapErrors.java"> <result date="2006-10-17" statvalue="5" type="checkstyle"/> + <result date="2006-10-18" statvalue="5" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_exporttoexcel_DelimitedFileExportToExcel.java" path="net/sf/pzfilereader/examples/exporttoexcel/DelimitedFileExportToExcel.java"> <result date="2006-10-17" statvalue="2" type="checkstyle"/> + <result date="2006-10-18" statvalue="2" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_fixedlengthdynamiccolumns_FixedLengthWithPZMap.java" path="net/sf/pzfilereader/examples/fixedlengthdynamiccolumns/FixedLengthWithPZMap.java"> <result date="2006-10-17" statvalue="3" type="checkstyle"/> + <result date="2006-10-18" statvalue="3" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_fixedlengthheaderandtrailer_FixedLengthHeaderAndTrailer.java" path="net/sf/pzfilereader/examples/fixedlengthheaderandtrailer/FixedLengthHeaderAndTrailer.java"> <result date="2006-10-17" statvalue="17" type="checkstyle"/> + <result date="2006-10-18" statvalue="17" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_largedataset_delimiteddynamiccolumns_LargeDelimitedWithPZMap.java" path="net/sf/pzfilereader/examples/largedataset/delimiteddynamiccolumns/LargeDelimitedWithPZMap.java"> <result date="2006-10-17" statvalue="4" type="checkstyle"/> + <result date="2006-10-18" statvalue="4" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_largedataset_fixedlengthdynamiccolumns_LargeFixedLengthWithPZMap.java" path="net/sf/pzfilereader/examples/largedataset/fixedlengthdynamiccolumns/LargeFixedLengthWithPZMap.java"> <result date="2006-10-17" statvalue="3" type="checkstyle"/> + <result date="2006-10-18" statvalue="3" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_largedataset_largecsvperformancetest_CSVLarge.java" path="net/sf/pzfilereader/examples/largedataset/largecsvperformancetest/CSVLarge.java"> <result date="2006-10-17" statvalue="9" type="checkstyle"/> <result date="2006-10-17" statvalue="1" type="findbugs"/> + <result date="2006-10-18" statvalue="9" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="findbugs"/> </file> <file id="net_sf_pzfilereader_examples_lowlevelparse_LowLevelParse.java" path="net/sf/pzfilereader/examples/lowlevelparse/LowLevelParse.java"> <result date="2006-10-17" statvalue="4" type="checkstyle"/> <result date="2006-10-17" statvalue="1" type="pmd"/> <result date="2006-10-17" statvalue="2" type="findbugs"/> + <result date="2006-10-18" statvalue="4" type="checkstyle"/> + <result date="2006-10-18" statvalue="1" type="pmd"/> + <result date="2006-10-18" statvalue="2" type="findbugs"/> </file> <file id="net_sf_pzfilereader_examples_multilinedelimitedrecord_DelimitedMultiLine.java" path="net/sf/pzfilereader/examples/multilinedelimitedrecord/DelimitedMultiLine.java"> <result date="2006-10-17" statvalue="4" type="checkstyle"/> + <result date="2006-10-18" statvalue="4" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_numericsanddates_NumericsAndDates.java" path="net/sf/pzfilereader/examples/numericsanddates/NumericsAndDates.java"> <result date="2006-10-17" statvalue="6" type="checkstyle"/> + <result date="2006-10-18" statvalue="6" type="checkstyle"/> </file> <file id="net_sf_pzfilereader_examples_ConsoleMenu.java" path="net/sf/pzfilereader/examples/ConsoleMenu.java"> <result date="2006-10-17" statvalue="2" type="findbugs"/> + <result date="2006-10-18" statvalue="2" type="findbugs"/> </file> </qalab> Modified: trunk/src/site/index.xml =================================================================== --- trunk/src/site/index.xml 2006-10-18 13:40:13 UTC (rev 99) +++ trunk/src/site/index.xml 2006-10-18 20:51:29 UTC (rev 100) @@ -92,8 +92,6 @@ while (ds.next()){ //loop through file ds.getString("mycolumnName"); } - - ds.freeMemory(); // probably should be in a finally. </pre></div> </subsection> @@ -108,8 +106,6 @@ while (ds.next()){ //loop through file ds.getString("mycolumnName"); } - - ds.freeMemory(); </pre></div> </subsection> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2006-10-18 13:40:38
|
Revision: 99 http://svn.sourceforge.net/pzfilereader/?rev=99&view=rev Author: benoitx Date: 2006-10-18 06:40:13 -0700 (Wed, 18 Oct 2006) Log Message: ----------- Some serious kicking... 1/ use a map for finding the column index; this makes the fetch of the first or last column consistent 2/ removed SOME of the substring which are causing dramatic performance degradation when once has a fair amount of columns. 3/ optimised some string manipulation code (getDelimiterOffset, lTrim, lTrimKeepTabs, removeChar 4/ I would suggest the creation of a suite of unit tests for all those methods.... Paul, do you want to take this on? Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.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/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 trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/XMLRecordElement.java trunk/PZFileReaderSamples/.classpath trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/Examples.java trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/csvperformancetest/CSVPerformanceTest.java trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/delimiteddynamiccolumns/DelimitedWithPZMap.java Added Paths: ----------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/PZConstants.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2006-10-18 11:29:19 UTC (rev 98) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2006-10-18 13:40:13 UTC (rev 99) @@ -31,11 +31,13 @@ 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; import net.sf.pzfilereader.structure.Row; import net.sf.pzfilereader.util.ExcelTransformer; +import net.sf.pzfilereader.util.PZConstants; import net.sf.pzfilereader.util.ParserUtils; import net.sf.pzfilereader.xml.PZMapParser; @@ -48,8 +50,6 @@ * @todo Ought to implement an interface for the access to data. */ public class DataSet { - private static final String DETAIL_ID = "detail"; - /** Array to hold the rows and their values in the text file */ private List rows = null; @@ -148,7 +148,7 @@ // the dataset when reading in the file while (rs.next()) { - ColumnMetaData column = new ColumnMetaData(); + final ColumnMetaData column = new ColumnMetaData(); column.setColName(rs.getString("DATASTRUCTURE_COLUMN")); column.setColLength(rs.getInt("DATASTRUCTURE_LENGTH")); column.setStartPosition(recPosition); @@ -158,7 +158,8 @@ cmds.add(column); } - columnMD.put(DETAIL_ID, cmds); + 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); @@ -271,7 +272,8 @@ hasResults = true; } - columnMD.put(DETAIL_ID, cmds); + 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); @@ -522,7 +524,7 @@ int recPosition = 1; final Row row = new Row(); - row.setMdkey(mdkey.equals(DETAIL_ID) ? null : mdkey); // try + row.setMdkey(mdkey.equals(PZConstants.DETAIL_ID) ? null : mdkey); // try final List cmds = ParserUtils.getColumnMetaData(mdkey, columnMD); // to limit the memory use @@ -678,11 +680,11 @@ // ******************************************************************** // column values - List columns = ParserUtils.splitLine(lineData, delimiter, qualifier); + final List columns = ParserUtils.splitLine(lineData, delimiter, qualifier); lineData = ""; - String mdkey = ParserUtils.getCMDKeyForDelimitedFile(columnMD, columns); - List cmds = ParserUtils.getColumnMetaData(mdkey, columnMD); - int columnCount = cmds.size(); + 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 @@ -707,8 +709,8 @@ } } - Row row = new Row(); - row.setMdkey(mdkey.equals(DETAIL_ID) ? null : mdkey); // try + 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); @@ -739,10 +741,14 @@ */ public void setValue(final String columnName, final String value) throws Exception { /** get a reference to the row */ - Row row = (Row) rows.get(pointer); - final List cmds = ParserUtils.getColumnMetaData(row.getMdkey(), columnMD); + 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); + // row.setValue(ParserUtils.findColumn(columnName, cmds), value); } /** @@ -799,20 +805,27 @@ */ public String getString(final String column) { final Row row = (Row) rows.get(pointer); - final List cmds = ParserUtils.getColumnMetaData(row.getMdkey(), columnMD); + // 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 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 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 row.getValue(ParserUtils.findColumn(column, cmds)); + return s; } /** @@ -828,8 +841,11 @@ 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 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) { @@ -864,10 +880,12 @@ 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); + // 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)); - String s = row.getValue(ParserUtils.findColumn(column, cmds)); - if (!strictNumericParse) { if (s.trim().length() == 0) { return 0; @@ -903,9 +921,11 @@ 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); + // final List cmds = ParserUtils.getColumnMetaData(row.getMdkey(), + // columnMD); - String s = row.getValue(ParserUtils.findColumn(column, cmds)); + // String s = row.getValue(ParserUtils.findColumn(column, cmds)); + final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); return sdf.parse(s); } @@ -924,9 +944,11 @@ */ 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 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); } @@ -941,11 +963,13 @@ String[] array = null; if (columnMD != null) { - final List cmds = ParserUtils.getColumnMetaData(DETAIL_ID, columnMD); + 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(); + System.out.println(i + "/ Columns... " + column.getColName()); } } @@ -966,7 +990,7 @@ final List cmds = ParserUtils.getColumnMetaData(recordID, columnMD); array = new String[cmds.size()]; for (int i = 0; i < cmds.size(); i++) { - ColumnMetaData column = (ColumnMetaData) cmds.get(i); + final ColumnMetaData column = (ColumnMetaData) cmds.get(i); array[i] = column.getColName(); } } @@ -1056,7 +1080,7 @@ public boolean isRecordID(final String recordID) { String rowID = ((Row) rows.get(pointer)).getMdkey(); if (rowID == null) { - rowID = DETAIL_ID; + rowID = PZConstants.DETAIL_ID; } return rowID.equals(recordID); @@ -1124,7 +1148,7 @@ // with <RECORD> mappings"); // } if (ob != null && rows != null) { - final List cmds = ParserUtils.getColumnMetaData(DETAIL_ID, columnMD); + final List cmds = ParserUtils.getColumnMetaData(PZConstants.DETAIL_ID, columnMD); ob.setColumnMD(cmds); Collections.sort(rows, ob); goTop(); 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-18 11:29:19 UTC (rev 98) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java 2006-10-18 13:40:13 UTC (rev 99) @@ -47,7 +47,7 @@ } /** - * over ridden from the Comparator class. + * overridden from the Comparator class. * * Performs the sort * @@ -59,27 +59,28 @@ for (int i = 0; i < orderbys.size(); 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 - if (row0.getMdkey() != null && !row0.getMdkey().equals("detail")){ + + // 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 + if (row0.getMdkey() != null && !row0.getMdkey().equals("detail")) { return 1; - }else if (row1.getMdkey() != null && !row1.getMdkey().equals("detail")){ + } else if (row1.getMdkey() != null && !row1.getMdkey().equals("detail")) { return 0; } - + // 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(); -//+ BX will never be equal to null. -// if (comp0 == null) { -// comp0 = new String(""); -// } -// if (comp1 == null) { -// comp1 = new String(""); -// } + // + 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(); 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-18 11:29:19 UTC (rev 98) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ExcelTransformer.java 2006-10-18 13:40:13 UTC (rev 99) @@ -22,7 +22,6 @@ import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; - import net.sf.pzfilereader.DataSet; /** Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/PZConstants.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/PZConstants.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/PZConstants.java 2006-10-18 13:40:13 UTC (rev 99) @@ -0,0 +1,18 @@ +/** + * + */ +package net.sf.pzfilereader.util; + +/** + * @author xhensevb + * + */ +public final class PZConstants { + public static final String DETAIL_ID = "detail"; + + public static final String COL_IDX = "colIndex"; + + private PZConstants() { + + } +} 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-18 11:29:19 UTC (rev 98) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2006-10-18 13:40:13 UTC (rev 99) @@ -40,10 +40,7 @@ * @version 2.0 */ public final class ParserUtils { - private static final String DETAIL_ID = "detail"; - private ParserUtils() { - } /** @@ -73,11 +70,9 @@ line = lTrim(line); for (int i = 0; i < line.length(); i++) { final String remainderOfLine = line.substring(i); // data of the - // line which - // has not yet - // been - // read + // line which has not yet been read // check to see if there is a text qualifier + final char currentChar = line.charAt(i); if (qualifier != null && qualifier.trim().length() > 0) { if (line.substring(i, i + 1).equals(qualifier) && !beginQualifier && !beginNoQualifier) { // begining of a set of data @@ -98,7 +93,7 @@ beginNoQualifier = false; continue;// grab the next char } - sb.append(line.substring(i, i + 1)); + sb.append(currentChar); } else if ((!beginNoQualifier) && line.substring(i, i + 1).equals(qualifier) && beginQualifier && (lTrim(line.substring(i + 1)).length() == 0 // this will be true on empty undelmited columns at the @@ -130,7 +125,7 @@ } else if (beginNoQualifier || beginQualifier) { // getting data in a NO qualifier element or qualified // element - sb.append(line.substring(i, i + 1)); + sb.append(currentChar); } } else { @@ -139,7 +134,7 @@ list.add(sb.toString()); sb.delete(0, sb.length()); } else { - sb.append(line.substring(i, i + 1)); + sb.append(currentChar); } } } @@ -151,7 +146,6 @@ sb.delete(0, sb.length()); sb.append(s); } - } if (qualifier == null || qualifier.trim().length() == 0 || beginQualifier || beginNoQualifier @@ -180,14 +174,29 @@ */ public static int getDelimiterOffset(final String line, final int start, final String delimiter) { - int offset = 0; - for (int i = start; i < line.length(); i++) { - offset++; - if (line.substring(i, i + 1).equals(delimiter)) { - return offset; - } + int idx = line.indexOf(delimiter, start); + if (idx >= 0) { + // idx++; + // idx-=start; + idx -= start - 1; } - return -1; + return idx; + + // int offset = 0; + // for (int i = start; i < line.length(); i++) { + // offset++; + // if (line.substring(i, i + 1).equals(delimiter)) { + // if (offset != idx) { + // System.out.println("String [" + line + "] start:" + start + "(" + + // line.charAt(start) + ") delim [" + // + delimiter + "] length:" + delimiter.length() + " Old:" + offset + " + // new:" + idx); + // } + // + // return offset; + // } + // } + // return -1; } /** @@ -198,20 +207,34 @@ * @return String */ public static String lTrim(final String value) { - final StringBuffer returnVal = new StringBuffer(); - boolean gotAChar = false; + String trimmed = value; + int offset = 0; + final int maxLength = value.length(); + while (offset < maxLength && (value.charAt(offset) == ' ' || value.charAt(offset) == '\t')) { + offset++; + } - for (int i = 0; i < value.length(); i++) { - if (value.substring(i, i + 1).trim().length() == 0 && !gotAChar) { - continue; - } else { - gotAChar = true; - returnVal.append(value.substring(i, i + 1)); - } + if (offset > 0) { + trimmed = value.substring(offset); } - return returnVal.toString(); - + return trimmed; + // + // + // final StringBuffer returnVal = new StringBuffer(); + // boolean gotAChar = false; + // + // for (int i = 0; i < value.length(); i++) { + // if (value.substring(i, i + 1).trim().length() == 0 && !gotAChar) { + // continue; + // } else { + // gotAChar = true; + // returnVal.append(value.substring(i, i + 1)); + // } + // } + // + // return returnVal.toString(); + // } /** @@ -222,19 +245,32 @@ * @return String */ public static String lTrimKeepTabs(final String value) { - final StringBuffer returnVal = new StringBuffer(); - boolean gotAChar = false; + String trimmed = value; + int offset = 0; + final int maxLength = value.length(); + while (offset < maxLength && value.charAt(offset) == ' ') { + offset++; + } - for (int i = 0; i < value.length(); i++) { - if (!value.substring(i, i + 1).equals("\t") && value.substring(i, i + 1).trim().length() == 0 && !gotAChar) { - continue; - } else { - gotAChar = true; - returnVal.append(value.substring(i, i + 1)); - } + if (offset > 0) { + trimmed = value.substring(offset); } - return returnVal.toString(); + return trimmed; + // final StringBuffer returnVal = new StringBuffer(); + // boolean gotAChar = false; + // + // for (int i = 0; i < value.length(); i++) { + // if (!value.substring(i, i + 1).equals("\t") && value.substring(i, i + + // 1).trim().length() == 0 && !gotAChar) { + // continue; + // } else { + // gotAChar = true; + // returnVal.append(value.substring(i, i + 1)); + // } + // } + // + // return returnVal.toString(); } @@ -247,16 +283,25 @@ * string to search * @return String */ - public static String removeChar(final String character, final String theString) { + public static String removeChar(final char theChar, final String theString) { final StringBuffer s = new StringBuffer(); for (int i = 0; i < theString.length(); i++) { - if (theString.substring(i, i + 1).equalsIgnoreCase(character)) { - continue; + final char currentChar = theString.charAt(i); + if (currentChar != theChar) { + s.append(currentChar); } - s.append(theString.substring(i, i + 1)); } return s.toString(); + // final StringBuffer s = new StringBuffer(); + // for (int i = 0; i < theString.length(); i++) { + // if (theString.substring(i, i + 1).equalsIgnoreCase(character)) { + // continue; + // } + // s.append(theString.substring(i, i + 1)); + // } + // + // return s.toString(); } @@ -313,7 +358,8 @@ } } - columnMD.put(DETAIL_ID, results); + columnMD.put(PZConstants.DETAIL_ID, results); + columnMD.put(PZConstants.COL_IDX, buidColumnIndexMap(results)); return columnMD; } @@ -341,7 +387,8 @@ results.add(cmd); } - columnMD.put(DETAIL_ID, results); + columnMD.put(PZConstants.DETAIL_ID, results); + columnMD.put(PZConstants.COL_IDX, buidColumnIndexMap(results)); return columnMD; } @@ -401,6 +448,7 @@ * vector of ColumnMetaData objects * @return int - position of the column in the file * @throws NoSuchElementException + * @deprecated surely not... */ public static int findColumn(final String columnName, final List columnMD) { for (int i = 0; i < columnMD.size(); i++) { @@ -506,8 +554,8 @@ final Iterator columnMDIt = columnMD.keySet().iterator(); while (columnMDIt.hasNext()) { final String key = (String) columnMDIt.next(); - if (key.equals(DETAIL_ID)) { - cmds = (List) columnMD.get(key); + if (key.equals(PZConstants.DETAIL_ID) || key.equals(PZConstants.COL_IDX)) { + cmds = (List) columnMD.get(PZConstants.DETAIL_ID); } else { cmds = ((XMLRecordElement) columnMD.get(key)).getColumns(); } @@ -538,14 +586,14 @@ if (columnMD.size() == 1) { // no <RECORD> elments were specifed for this parse, just return the // detail id - return 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(DETAIL_ID)) { + if (key.equals(PZConstants.DETAIL_ID) || key.equals(PZConstants.COL_IDX)) { continue; // skip this key will be assumed if none of the // others match } @@ -567,7 +615,7 @@ } // must be a detail line - return DETAIL_ID; + return PZConstants.DETAIL_ID; } @@ -584,14 +632,14 @@ if (columnMD.size() == 1) { // no <RECORD> elments were specifed for this parse, just return the // detail id - return 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(DETAIL_ID)) { + if (key.equals(PZConstants.DETAIL_ID) || key.equals(PZConstants.COL_IDX)) { continue; // skip this key will be assumed if none of the // others match } @@ -610,7 +658,7 @@ } // must be a detail line - return DETAIL_ID; + return PZConstants.DETAIL_ID; } /** @@ -621,12 +669,41 @@ * @return List */ public static List getColumnMetaData(final String key, final Map columnMD) { - if (key == null || key.equals(DETAIL_ID)) { - return (List) columnMD.get(DETAIL_ID); + if (key == null || key.equals(PZConstants.DETAIL_ID) || key.equals(PZConstants.COL_IDX)) { + return (List) columnMD.get(PZConstants.DETAIL_ID); } return ((XMLRecordElement) columnMD.get(key)).getColumns(); + } + /** + * 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 + */ + 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) { + throw new NoSuchElementException("Column " + colName + " does not exist, check case/spelling. key:" + key); + } + return idx; } /** @@ -675,28 +752,33 @@ } catch (final Exception ignore) { } } - + /** - * <p>Returns padding using the specified delimiter repeated - * to a given length.</p> - * + * <p> + * Returns padding using the specified delimiter repeated to a given length. + * </p> + * * <pre> - * StringUtils.padding(0, 'e') = "" - * StringUtils.padding(3, 'e') = "eee" - * StringUtils.padding(-2, 'e') = IndexOutOfBoundsException + * StringUtils.padding(0, 'e') = "" + * StringUtils.padding(3, 'e') = "eee" + * StringUtils.padding(-2, 'e') = IndexOutOfBoundsException * </pre> - * - * <p>Note: this method doesn't not support padding with - * <a href="http://www.unicode.org/glossary/#supplementary_character">Unicode Supplementary Characters</a> - * as they require a pair of <code>char</code>s to be represented. - * If you are needing to support full I18N of your applications - * consider using {@link #repeat(String, int)} instead. + * + * <p> + * Note: this method doesn't not support padding with <a + * href="http://www.unicode.org/glossary/#supplementary_character">Unicode + * Supplementary Characters</a> as they require a pair of <code>char</code>s + * to be represented. If you are needing to support full I18N of your + * applications consider using {@link #repeat(String, int)} instead. * </p> - * - * @param repeat number of times to repeat delim - * @param padChar character to repeat + * + * @param repeat + * number of times to repeat delim + * @param padChar + * character to repeat * @return String with repeated character - * @throws IndexOutOfBoundsException if <code>repeat < 0</code> + * @throws IndexOutOfBoundsException + * if <code>repeat < 0</code> * @see #repeat(String, int) */ public static String padding(final int repeat, final char padChar) { @@ -708,5 +790,24 @@ buf[i] = padChar; } return new String(buf); - } + } + + /** + * Build a map of name/position based on a list of ColumnMetaData. + * @author Benoit Xhenseval + * @param columns + * @return a new Map + */ + public static Map buidColumnIndexMap(final List columns) { + 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(), Integer.valueOf(idx)); + } + } + return map; + } } 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-18 11:29:19 UTC (rev 98) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java 2006-10-18 13:40:13 UTC (rev 99) @@ -22,22 +22,21 @@ import java.util.List; import java.util.Map; +import net.sf.pzfilereader.structure.ColumnMetaData; +import net.sf.pzfilereader.util.PZConstants; +import net.sf.pzfilereader.util.ParserUtils; + import org.jdom.Attribute; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; -import net.sf.pzfilereader.structure.ColumnMetaData; -import net.sf.pzfilereader.util.ParserUtils; - /** * @author zepernick * * Parses a PZmap definition XML file */ public final class PZMapParser { - private static final String DETAIL_ID = "detail"; - private static boolean showDebug = false; /** @@ -91,8 +90,10 @@ List columns = getColumnChildren(root); final Map mdIndex = new LinkedHashMap(); // retain the same order // specified in the mapping - mdIndex.put(DETAIL_ID, columns); // always force detail to the top of - // the map no matter what + 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)); // get all of the "record" elements and the columns under them final Iterator recordDescriptors = root.getChildren("RECORD").iterator(); @@ -103,7 +104,7 @@ // is the harcoded // value we are using to mark columns specified outside of a // <RECORD> element - if (xmlElement.getAttributeValue("id").equals(DETAIL_ID)) { + if (xmlElement.getAttributeValue("id").equals(PZConstants.DETAIL_ID)) { throw new Exception("The ID 'detail' on the <RECORD> element is reserved, please select another id"); } @@ -185,7 +186,7 @@ XMLRecordElement xmlrecEle = null; final String recordID = (String) mapIt.next(); Iterator columns = null; - if (recordID.equals(DETAIL_ID)) { + if (recordID.equals(PZConstants.DETAIL_ID)) { columns = ((List) xmlResults.get(recordID)).iterator(); } else { xmlrecEle = (XMLRecordElement) xmlResults.get(recordID); 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-18 11:29:19 UTC (rev 98) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/ResolveLocalDTD.java 2006-10-18 13:40:13 UTC (rev 99) @@ -37,7 +37,7 @@ public InputSource resolveEntity(final String publicId, final String systemId) throws SAXException, IOException { try { if (!systemId.toLowerCase().startsWith("http://")) { - URL resource = getClass().getResource("pzfilereader.dtd"); + final URL resource = getClass().getResource("pzfilereader.dtd"); if (resource != null) { return new InputSource(resource.openStream()); Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/XMLRecordElement.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/XMLRecordElement.java 2006-10-18 11:29:19 UTC (rev 98) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/XMLRecordElement.java 2006-10-18 13:40:13 UTC (rev 99) @@ -15,7 +15,10 @@ package net.sf.pzfilereader.xml; import java.util.List; +import java.util.Map; +import net.sf.pzfilereader.util.ParserUtils; + /** * @author Paul Zepernick * @@ -32,6 +35,8 @@ private List columns; + private Map columnIndex; + /** * @return Returns the elementNumber. */ @@ -105,5 +110,23 @@ */ public void setColumns(final List columns) { this.columns = columns; + this.columnIndex = ParserUtils.buidColumnIndexMap(columns); } + + /** + * Returns the index of the column name. + * @author Benoit Xhenseval + * @param colName + * @return -1 if the column name does not exist. + */ + public int getColumnIndex(final String colName) { + int idx = -1; + if (columnIndex != null) { + final Integer i = (Integer) columnIndex.get(colName); + if (i != null) { + idx = i.intValue(); + } + } + return idx; + } } Modified: trunk/PZFileReaderSamples/.classpath =================================================================== --- trunk/PZFileReaderSamples/.classpath 2006-10-18 11:29:19 UTC (rev 98) +++ trunk/PZFileReaderSamples/.classpath 2006-10-18 13:40:13 UTC (rev 99) @@ -1,10 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> - <classpath> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"></classpathentry> - <classpathentry excluding="" kind="src" path="src/main/java"></classpathentry> - <classpathentry path="MAVEN_REPO/net.sf.pzfilereader/jars/pzfilereader-2.3.0.jar" kind="var"></classpathentry> - <classpathentry path="MAVEN_REPO/jdom/jars/jdom-1.0.jar" kind="var"></classpathentry> - <classpathentry path="MAVEN_REPO/jexcelapi/jars/jxl-2.4.2.jar" kind="var"></classpathentry> - <classpathentry kind="output" path="target/classes"></classpathentry> -</classpath> \ No newline at end of file + <classpathentry path="org.eclipse.jdt.launching.JRE_CONTAINER" kind="con"/> + <classpathentry path="src/main/java" kind="src"/> + <classpathentry sourcepath="/PZ_SRC_HOME" path="MAVEN_REPO/net.sf.pzfilereader/jars/pzfilereader-2.3.0.jar" kind="var"/> + <classpathentry path="MAVEN_REPO/jdom/jars/jdom-1.0.jar" kind="var"/> + <classpathentry path="MAVEN_REPO/jexcelapi/jars/jxl-2.4.2.jar" kind="var"/> + <classpathentry path="target/classes" kind="output"/> +</classpath> Modified: trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/Examples.java =================================================================== --- trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/Examples.java 2006-10-18 11:29:19 UTC (rev 98) +++ trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/Examples.java 2006-10-18 13:40:13 UTC (rev 99) @@ -67,6 +67,7 @@ menu.addMenuItem("LowLevelParse", "doLowLevelParse", false); menu.addMenuItem("DelimitedMultiLine", "doDelimitedMultiLine", false); menu.addMenuItem("NumericsAndDates", "doNumericsAndDates", false); + menu.addMenuItem("Ask for GC", "doGC", false); menu.addMenuItem("Who you gonna call?", "doCall", false); menu.displayMenu(); @@ -91,8 +92,9 @@ public void doCSVPerformanceTest() { try { final String mapping = ConsoleMenu.getString("CSV File ", "SampleCSV.csv"); - final boolean data = ConsoleMenu.getBoolean("Verbose", false); - CSVPerformanceTest.call(mapping,data); + final boolean data = ConsoleMenu.getBoolean("Traverse the entire parsed file", true); + final boolean verbose = ConsoleMenu.getBoolean("Verbose", false); + CSVPerformanceTest.call(mapping,verbose,data); } catch (Exception e) { e.printStackTrace(); } @@ -212,4 +214,8 @@ } } + public void doGC() { + System.gc(); + } + } Modified: trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/csvperformancetest/CSVPerformanceTest.java =================================================================== --- trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/csvperformancetest/CSVPerformanceTest.java 2006-10-18 11:29:19 UTC (rev 98) +++ trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/csvperformancetest/CSVPerformanceTest.java 2006-10-18 13:40:13 UTC (rev 99) @@ -34,19 +34,20 @@ String filename = (String) settings.get("csvFile"); String verbose = (String) settings.get("verbose"); - call(filename, Boolean.valueOf(verbose).booleanValue()); + call(filename, Boolean.valueOf(verbose).booleanValue(), true); } catch (final Exception ex) { ex.printStackTrace(); } } - public static void call(String filename, boolean verbose) throws Exception, InterruptedException { + public static void call(String filename, boolean verbose, boolean traverse) throws Exception, InterruptedException { DataSet ds = null; String[] colNames = null; // delimited by a comma // text qualified by double quotes // ignore first record + System.out.println("Parsing...."); long timeStarted = System.currentTimeMillis(); ds = new DataSet(new File(filename), ",", "\"", false); long timeFinished = System.currentTimeMillis(); @@ -56,35 +57,46 @@ if (timeFinished - timeStarted < 1000) { timeMessage = (timeFinished - timeStarted) + " Milleseconds..."; } else { - timeMessage = ((timeFinished - timeStarted) / 1000) + " Seconds..."; + timeMessage = ((float) ((timeFinished - timeStarted) / 1000.0)) + " Seconds..."; } System.out.println(""); System.out.println("********FILE PARSED IN: " + timeMessage + " ******"); - Thread.sleep(2000); // sleep for a couple seconds to the message - // above can be read - if (verbose) { + if (traverse) { + if (verbose) { + Thread.sleep(2000); // sleep for a couple seconds to the message + // above can be read + } timeStarted = System.currentTimeMillis(); colNames = ds.getColumns(); - + int rowCount = 0; + int colCount = colNames.length; while (ds.next()) { + rowCount++; for (int i = 0; i < colNames.length; i++) { - System.out.println("COLUMN NAME: " + colNames[i] + " VALUE: " + ds.getString(colNames[i])); + String string = ds.getString(colNames[i]); + + if (verbose) { + System.out.println("COLUMN NAME: " + colNames[i] + " VALUE: " + string); + } } - System.out.println("==========================================================================="); + if (verbose) { + System.out.println("==========================================================================="); + } } timeFinished = System.currentTimeMillis(); if (timeFinished - timeStarted < 1000) { timeMessage = (timeFinished - timeStarted) + " Milleseconds..."; } else { - timeMessage = ((timeFinished - timeStarted) / 1000) + " Seconds..."; + timeMessage = ((float)((timeFinished - timeStarted) / 1000.0)) + " Seconds..."; } System.out.println(""); - System.out.println("********Displayed Data To Console In: " + timeMessage + " ******"); + System.out.println("********Traversed Data In: " + timeMessage + " (rows: " + rowCount + " Col:" + colCount + + ") ******"); } Modified: trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/delimiteddynamiccolumns/DelimitedWithPZMap.java =================================================================== --- trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/delimiteddynamiccolumns/DelimitedWithPZMap.java 2006-10-18 11:29:19 UTC (rev 98) +++ trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/delimiteddynamiccolumns/DelimitedWithPZMap.java 2006-10-18 13:40:13 UTC (rev 99) @@ -39,7 +39,6 @@ // text qualified by double quotes // ignore first record DataSet ds = null; - String[] colNames = null; OrderBy orderby = null; ds = new DataSet(new File(mapping), new File(data), ",", "\"", true, false); @@ -49,7 +48,7 @@ orderby.addOrderColumn(new OrderColumn("LASTNAME", true)); // ds.orderRows(orderby); - colNames = ds.getColumns(); + String[] colNames = ds.getColumns(); while (ds.next()) { for (int i = 0; i < colNames.length; i++) { 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:29:24
|
Revision: 98 http://svn.sourceforge.net/pzfilereader/?rev=98&view=rev Author: zepernick Date: 2006-10-18 04:29:19 -0700 (Wed, 18 Oct 2006) Log Message: ----------- javadoc package Added Paths: ----------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/package.html Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/package.html =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/package.html (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/package.html 2006-10-18 11:29:19 UTC (rev 98) @@ -0,0 +1,25 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<html> + <head> + <title>net.sf.pzfilereader.ordering 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"> + Main package of the project, containing the actual DataSet implementations. + Classes also exist which describe the version number, and the structure of a data error. + </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: <zep...@us...> - 2006-10-18 11:27:30
|
Revision: 97 http://svn.sourceforge.net/pzfilereader/?rev=97&view=rev Author: zepernick Date: 2006-10-18 04:27:19 -0700 (Wed, 18 Oct 2006) Log Message: ----------- javadoc package Added Paths: ----------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/structure/package.html Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/structure/package.html =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/structure/package.html (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/structure/package.html 2006-10-18 11:27:19 UTC (rev 97) @@ -0,0 +1,26 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<html> + <head> + <title>net.sf.pzfilereader.ordering 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"> + Contains classes which decribes the structure of the DataSet. + Information is stored on the structure of a Row (record) and + the ColumnMetaData for the columns contained in the Row. + </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: <zep...@us...> - 2006-10-18 11:24:32
|
Revision: 96 http://svn.sourceforge.net/pzfilereader/?rev=96&view=rev Author: zepernick Date: 2006-10-18 04:24:28 -0700 (Wed, 18 Oct 2006) Log Message: ----------- package javadoc Added Paths: ----------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/package.html Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/package.html =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/package.html (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/package.html 2006-10-18 11:24:28 UTC (rev 96) @@ -0,0 +1,24 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<html> + <head> + <title>net.sf.pzfilereader.ordering 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"> + Reponsible for all sorting operations performed on a DataSet + </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: <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-18 08:44:35
|
Revision: 94 http://svn.sourceforge.net/pzfilereader/?rev=94&view=rev Author: benoitx Date: 2006-10-18 01:44:30 -0700 (Wed, 18 Oct 2006) Log Message: ----------- Fix the links to Word and PDF doco. Modified Paths: -------------- trunk/src/site/documentation/index.xml trunk/src/site/index.xml Modified: trunk/src/site/documentation/index.xml =================================================================== --- trunk/src/site/documentation/index.xml 2006-10-18 00:39:34 UTC (rev 93) +++ trunk/src/site/documentation/index.xml 2006-10-18 08:44:30 UTC (rev 94) @@ -19,6 +19,10 @@ </head> <body> <!-- The body of the document contains a number of sections --> + <section name="Documentation"> + <p>A manual is available as <a href="pzfilereader-manual.doc">Word</a> document or a <a href="pzfilereader-manual.pdf">PDF</a>.</p> + </section> + <section name="XML Examples"> <subsection name="Delimited.pzmap.xml"> Modified: trunk/src/site/index.xml =================================================================== --- trunk/src/site/index.xml 2006-10-18 00:39:34 UTC (rev 93) +++ trunk/src/site/index.xml 2006-10-18 08:44:30 UTC (rev 94) @@ -31,6 +31,8 @@ <p>We also provide <strong>delimited file parsing</strong>; works with any delimiter / qualifier, multiline records, delimiter or qualifier allowed in column value.</p> + <p>A manual is available as <a href="documentation/pzfilereader-manual.doc">Word</a> document or a <a href="documentation/pzfilereader-manual.pdf">PDF</a>.</p> + <p>PZFileReader is part of the ObjectLab Kit family.<a href="http://digg.com/submit?phase=2&url=objectlabkit.sourceforge.net&title=Paul%20Zepernick%20and%20ObjectLab%20have%20released%20version%202%2E3%2E0%20of%20PZFileReader%2E&bodytext=PZFileReader%20on%20SourceForge%3A%20a%20Java%20(1%2E4%2B)%20flat%20file%20parser%20that%20handles%20CSV,%20fixed%20length%20and%20custom%20delimiters%2E%20The%20formats%20are%20configured%20in%20XML%20or%20in%20DB%2E%20Once%20parsed%20the%20data%20is%20easily%20accessible%20record%20by%20record%20and%20via%20a%20column%20name,%20regardless%20of%20order%2E%20%20It%20is%20fast%20and%20released%20under%20Apache%20license%202%2E0%2E&topic=programming"> <img src="http://digg.com/img/badges/91x17-digg-button.png" width="91" height="17" alt="Digg!" style="vertical-align:middle" /></a></p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-10-18 00:39:37
|
Revision: 93 http://svn.sourceforge.net/pzfilereader/?rev=93&view=rev Author: zepernick Date: 2006-10-17 17:39:34 -0700 (Tue, 17 Oct 2006) Log Message: ----------- updated package structure to net.sf on bat file Modified Paths: -------------- trunk/PZFileReaderSamples/src/main/script/run-examples.bat Modified: trunk/PZFileReaderSamples/src/main/script/run-examples.bat =================================================================== --- trunk/PZFileReaderSamples/src/main/script/run-examples.bat 2006-10-17 23:00:31 UTC (rev 92) +++ trunk/PZFileReaderSamples/src/main/script/run-examples.bat 2006-10-18 00:39:34 UTC (rev 93) @@ -9,6 +9,6 @@ echo %CLASSPATH% -"%JAVA_HOME%\bin\java" -Xmx512m -Xms512m com.pz.reader.examples.Examples +"%JAVA_HOME%\bin\java" -Xmx512m -Xms512m net.sf.pzfilereader.examples.Examples pause \ 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-17 23:00:44
|
Revision: 92 http://svn.sourceforge.net/pzfilereader/?rev=92&view=rev Author: benoitx Date: 2006-10-17 16:00:31 -0700 (Tue, 17 Oct 2006) Log Message: ----------- tiny amount of formatting. Modified Paths: -------------- trunk/PZFileReader/qalab.xml trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java Modified: trunk/PZFileReader/qalab.xml =================================================================== --- trunk/PZFileReader/qalab.xml 2006-10-17 22:28:22 UTC (rev 91) +++ trunk/PZFileReader/qalab.xml 2006-10-17 23:00:31 UTC (rev 92) @@ -49,8 +49,8 @@ <summaryresult date="2006-10-16" filecount="13" statvalue="23" type="cobertura-branch"/> <summaryresult date="2006-10-17" filecount="18" statvalue="25" type="checkstyle"/> <summaryresult date="2006-10-17" filecount="3" statvalue="5" type="pmd"/> - <summaryresult date="2006-10-17" filecount="7" statvalue="12" type="findbugs"/> - <summaryresult date="2006-10-17" filecount="3" statvalue="114" type="simian"/> + <summaryresult date="2006-10-17" filecount="6" statvalue="11" type="findbugs"/> + <summaryresult date="2006-10-17" filecount="3" statvalue="116" type="simian"/> <summaryresult date="2006-10-17" filecount="13" statvalue="17" type="cobertura-line"/> <summaryresult date="2006-10-17" filecount="13" statvalue="23" type="cobertura-branch"/> </summary> @@ -334,12 +334,11 @@ <result date="2006-10-17" statvalue="4" type="checkstyle"/> <result date="2006-10-17" statvalue="1" type="pmd"/> <result date="2006-10-17" statvalue="2" type="findbugs"/> - <result date="2006-10-17" statvalue="20" type="cobertura-line"/> - <result date="2006-10-17" statvalue="26" type="cobertura-branch"/> + <result date="2006-10-17" statvalue="21" type="cobertura-line"/> + <result date="2006-10-17" statvalue="27" type="cobertura-branch"/> </file> <file id="net_sf_pzfilereader_LargeDataSet.java" path="net/sf/pzfilereader/LargeDataSet.java"> <result date="2006-10-17" statvalue="4" type="checkstyle"/> - <result date="2006-10-17" statvalue="1" type="findbugs"/> </file> <file id="net_sf_pzfilereader_ordering_OrderBy.java" path="net/sf/pzfilereader/ordering/OrderBy.java"> <result date="2006-10-17" statvalue="1" type="checkstyle"/> Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2006-10-17 22:28:22 UTC (rev 91) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2006-10-17 23:00:31 UTC (rev 92) @@ -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; 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 22:28:22 UTC (rev 91) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2006-10-17 23:00:31 UTC (rev 92) @@ -611,7 +611,6 @@ // must be a detail line return DETAIL_ID; - } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2006-10-17 22:28:36
|
Revision: 91 http://svn.sourceforge.net/pzfilereader/?rev=91&view=rev Author: benoitx Date: 2006-10-17 15:28:22 -0700 (Tue, 17 Oct 2006) Log Message: ----------- scoping and using PreparedStatement (always better). Modified Paths: -------------- trunk/PZFileReader/qalab.xml trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/LargeDataSet.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/qalab.xml =================================================================== --- trunk/PZFileReader/qalab.xml 2006-10-17 21:39:51 UTC (rev 90) +++ trunk/PZFileReader/qalab.xml 2006-10-17 22:28:22 UTC (rev 91) @@ -51,7 +51,7 @@ <summaryresult date="2006-10-17" filecount="3" statvalue="5" type="pmd"/> <summaryresult date="2006-10-17" filecount="7" statvalue="12" type="findbugs"/> <summaryresult date="2006-10-17" filecount="3" statvalue="114" type="simian"/> - <summaryresult date="2006-10-17" filecount="13" statvalue="16" type="cobertura-line"/> + <summaryresult date="2006-10-17" filecount="13" statvalue="17" type="cobertura-line"/> <summaryresult date="2006-10-17" filecount="13" statvalue="23" type="cobertura-branch"/> </summary> <file id="com_pz_reader_ordering_package.html" path="com/pz/reader/ordering/package.html"> Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2006-10-17 21:39:51 UTC (rev 90) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java 2006-10-17 22:28:22 UTC (rev 91) @@ -20,8 +20,8 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.sql.Connection; +import java.sql.PreparedStatement; import java.sql.ResultSet; -import java.sql.Statement; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -49,6 +49,7 @@ * @todo Ought to implement an interface for the access to data. */ public class DataSet { + private static final String DETAIL_ID = "detail"; /** Array to hold the rows and their values in the text file */ private List rows = null; @@ -128,16 +129,19 @@ this.handleShortLines = handleShortLines; ResultSet rs = null; - Statement stmt = null; + PreparedStatement stmt = null; try { columnMD = new LinkedHashMap(); - stmt = con.createStatement(); - 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"; + 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"; - rs = stmt.executeQuery(sql); + 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(); @@ -155,7 +159,7 @@ cmds.add(column); } - columnMD.put("detail", cmds); + columnMD.put(DETAIL_ID, cmds); if (cmds.isEmpty()) { throw new FileNotFoundException("DATA DEFINITION CAN NOT BE FOUND IN THE DATABASE " + dataDefinition); @@ -242,15 +246,17 @@ this.handleShortLines = handleShortLines; ResultSet rs = null; - Statement stmt = null; + PreparedStatement stmt = null; try { columnMD = new LinkedHashMap(); - stmt = con.createStatement(); - 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"; + 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"; - rs = stmt.executeQuery(sql); + 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; @@ -266,7 +272,7 @@ hasResults = true; } - columnMD.put("detail", cmds); + columnMD.put(DETAIL_ID, cmds); if (!hasResults) { throw new FileNotFoundException("DATA DEFINITION CAN NOT BE FOUND IN THE DATABASE " + dataDefinition); @@ -482,7 +488,8 @@ br = new BufferedReader(isr); String line = null; int lineCount = 0; - // map of record lengths corrisponding to the ID's in the columnMD array + // 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++; @@ -493,7 +500,6 @@ final String mdkey = ParserUtils.getCMDKeyForFixedLengthFile(columnMD, line); final int recordLength = ((Integer) recordLengths.get(mdkey)).intValue(); - final List cmds = ParserUtils.getColumnMetaData(mdkey, columnMD); // Incorrect record length on line log the error. Line will not // be included in the @@ -504,7 +510,7 @@ } else if (line.length() < recordLength) { if (handleShortLines) { // We can pad this line out - line += ParserUtils.padding(recordLength-line.length(), ' '); + line += ParserUtils.padding(recordLength - line.length(), ' '); // log a warning addError("PADDED LINE TO CORRECT RECORD LENGTH", lineCount, 1); @@ -517,17 +523,14 @@ int recPosition = 1; final Row row = new Row(); - row.setMdkey(mdkey.equals("detail") ? null : mdkey); // try - // to - // limit - // the - // memory - // use + row.setMdkey(mdkey.equals(DETAIL_ID) ? null : mdkey); // try + + final List cmds = ParserUtils.getColumnMetaData(mdkey, columnMD); + // to limit the memory use // Build the columns for the row for (int i = 0; i < cmds.size(); i++) { - String tempValue = null; - tempValue = line - .substring(recPosition - 1, recPosition + (((ColumnMetaData) cmds.get(i)).getColLength() - 1)); + final String tempValue = line.substring(recPosition - 1, recPosition + + (((ColumnMetaData) cmds.get(i)).getColLength() - 1)); recPosition += ((ColumnMetaData) cmds.get(i)).getColLength(); row.addColumn(tempValue.trim()); } @@ -706,12 +709,8 @@ } Row row = new Row(); - row.setMdkey(mdkey.equals("detail") ? null : mdkey); // try - // to - // limit - // the - // memory - // use + row.setMdkey(mdkey.equals(DETAIL_ID) ? null : mdkey); // try + // to limit the memory use row.setCols(columns); row.setRowNumber(lineCount); /** add the row to the array */ @@ -828,7 +827,6 @@ */ public double getDouble(final String column) { final StringBuffer newString = new StringBuffer(); - final String[] allowedChars = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "-" }; final Row row = (Row) rows.get(pointer); final List cmds = ParserUtils.getColumnMetaData(row.getMdkey(), columnMD); @@ -839,11 +837,9 @@ return 0; } for (int i = 0; i < s.length(); i++) { - for (int j = 0; j < allowedChars.length; j++) { - if (s.substring(i, i + 1).equals(allowedChars[j])) { - newString.append(s.substring(i, i + 1)); - break; - } + 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(".")) @@ -868,7 +864,6 @@ */ public int getInt(final String column) { final StringBuffer newString = new StringBuffer(); - final String[] allowedChars = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-" }; final Row row = (Row) rows.get(pointer); final List cmds = ParserUtils.getColumnMetaData(row.getMdkey(), columnMD); @@ -879,11 +874,9 @@ return 0; } for (int i = 0; i < s.length(); i++) { - for (int j = 0; j < allowedChars.length; j++) { - if (s.substring(i, i + 1).equals(allowedChars[j])) { - newString.append(s.substring(i, i + 1)); - break; - } + 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 @@ -949,7 +942,7 @@ String[] array = null; if (columnMD != null) { - final List cmds = ParserUtils.getColumnMetaData("detail", columnMD); + final List cmds = ParserUtils.getColumnMetaData(DETAIL_ID, columnMD); array = new String[cmds.size()]; for (int i = 0; i < cmds.size(); i++) { column = (ColumnMetaData) cmds.get(i); @@ -1064,7 +1057,7 @@ public boolean isRecordID(final String recordID) { String rowID = ((Row) rows.get(pointer)).getMdkey(); if (rowID == null) { - rowID = "detail"; + rowID = DETAIL_ID; } return rowID.equals(recordID); @@ -1125,13 +1118,14 @@ * @see net.sf.pzfilereader.ordering.OrderColumn */ public void orderRows(final OrderBy ob) throws Exception { - //PZ try to handle other <records> by sending them to - //the bottom of the sort + // 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"); - // } + // throw new Exception("orderRows does not currently support ordering + // with <RECORD> mappings"); + // } if (ob != null && rows != null) { - final List cmds = ParserUtils.getColumnMetaData("detail", columnMD); + final List cmds = ParserUtils.getColumnMetaData(DETAIL_ID, columnMD); ob.setColumnMD(cmds); Collections.sort(rows, ob); goTop(); 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:39:51 UTC (rev 90) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/LargeDataSet.java 2006-10-17 22:28:22 UTC (rev 91) @@ -50,8 +50,9 @@ 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 + // procssed in the file + // used for delimited files private boolean ignoreFirstRecord = false; @@ -65,10 +66,11 @@ private int columnCount = 0; - /** used for fixed length files, map of record lengths corresponding to the + /** + * used for fixed length files, map of record lengths corresponding to the * ID's in the columnMD array. */ - private Map recordLengths = null; + private Map recordLengths = null; /** * Constructor based on InputStream. Constructs a new LargeDataSet using the @@ -425,7 +427,7 @@ lineData += line; if (processingMultiLine) { continue; // if we are working on a multiline rec, get the - // data on the next line + // data on the next line } } // ******************************************************************** @@ -478,7 +480,8 @@ private boolean readNextFixedLen() throws Exception { String line = null; - final int aLineCount = 0; //+++++++++++++++++++++++++++++++++ Paul this does not seem incremented at all... + final int aLineCount = 0; // +++++++++++++++++++++++++++++++++ Paul + // this does not seem incremented at all... boolean readRecordOk = false; if (getRows() == null) { @@ -513,14 +516,11 @@ continue; } else if (line.length() < recordLength) { if (isHandleShortLines()) { - // We can pad this line out - while (line.length() < recordLength) { - line += ParserUtils.padding(recordLength-line.length(), ' '); - } + // We can pad this line out in one go. + line += ParserUtils.padding(recordLength - line.length(), ' '); // log a warning addError("PADDED LINE TO CORRECT RECORD LENGTH", aLineCount, 1); - } else { addError("LINE TOO SHORT. LINE IS " + line.length() + " LONG. SHOULD BE " + recordLength, aLineCount, 2); continue; @@ -530,13 +530,11 @@ int recPosition = 1; final Row row = new Row(); row.setMdkey(mdkey.equals("detail") ? null : mdkey); // try to - // limit the - // memory - // use + // limit the memory use // Build the columns for the row for (int i = 0; i < cmds.size(); i++) { - String tempValue = null; - tempValue = line.substring(recPosition - 1, recPosition + (((ColumnMetaData) cmds.get(i)).getColLength() - 1)); + final String tempValue = line.substring(recPosition - 1, recPosition + + (((ColumnMetaData) cmds.get(i)).getColLength() - 1)); recPosition += ((ColumnMetaData) cmds.get(i)).getColLength(); row.addColumn(tempValue.trim()); } @@ -547,8 +545,6 @@ readRecordOk = true; break; } - return readRecordOk; - } } 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 21:39:51 UTC (rev 90) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2006-10-17 22:28:22 UTC (rev 91) @@ -40,6 +40,8 @@ * @version 2.0 */ public final class ParserUtils { + private static final String DETAIL_ID = "detail"; + private ParserUtils() { } @@ -311,7 +313,7 @@ } } - columnMD.put("detail", results); + columnMD.put(DETAIL_ID, results); return columnMD; } @@ -339,7 +341,7 @@ results.add(cmd); } - columnMD.put("detail", results); + columnMD.put(DETAIL_ID, results); return columnMD; } @@ -504,7 +506,7 @@ final Iterator columnMDIt = columnMD.keySet().iterator(); while (columnMDIt.hasNext()) { final String key = (String) columnMDIt.next(); - if (key.equals("detail")) { + if (key.equals(DETAIL_ID)) { cmds = (List) columnMD.get(key); } else { cmds = ((XMLRecordElement) columnMD.get(key)).getColumns(); @@ -536,14 +538,14 @@ if (columnMD.size() == 1) { // no <RECORD> elments were specifed for this parse, just return the // detail id - return "detail"; + return 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("detail")) { + if (key.equals(DETAIL_ID)) { continue; // skip this key will be assumed if none of the // others match } @@ -565,7 +567,7 @@ } // must be a detail line - return "detail"; + return DETAIL_ID; } @@ -582,14 +584,14 @@ if (columnMD.size() == 1) { // no <RECORD> elments were specifed for this parse, just return the // detail id - return "detail"; + return 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("detail")) { + if (key.equals(DETAIL_ID)) { continue; // skip this key will be assumed if none of the // others match } @@ -608,7 +610,7 @@ } // must be a detail line - return "detail"; + return DETAIL_ID; } @@ -620,9 +622,8 @@ * @return List */ public static List getColumnMetaData(final String key, final Map columnMD) { - - if (key == null || key.equals("detail")) { - return (List) columnMD.get("detail"); + if (key == null || key.equals(DETAIL_ID)) { + return (List) columnMD.get(DETAIL_ID); } return ((XMLRecordElement) columnMD.get(key)).getColumns(); @@ -661,7 +662,6 @@ reader.close(); } catch (final Exception ignore) { } - } /** @@ -675,7 +675,6 @@ reader.close(); } catch (final Exception ignore) { } - } /** 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:39:51 UTC (rev 90) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java 2006-10-17 22:28:22 UTC (rev 91) @@ -36,6 +36,7 @@ * Parses a PZmap definition XML file */ public final class PZMapParser { + private static final String DETAIL_ID = "detail"; private static boolean showDebug = false; @@ -77,32 +78,32 @@ * @throws Exception */ public static Map parse(final InputStream xmlStream) throws Exception { - SAXBuilder builder = new SAXBuilder(); + final SAXBuilder builder = new SAXBuilder(); builder.setValidation(true); // handle the ability to pull DTD from Jar if needed builder.setEntityResolver(new ResolveLocalDTD()); - Document document = builder.build(xmlStream); + final Document document = builder.build(xmlStream); - Element root = document.getRootElement(); + final Element root = document.getRootElement(); // lets first get all of the columns that are declared directly under // the PZMAP 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 + mdIndex.put(DETAIL_ID, columns); // always force detail to the top of + // the 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()) { - Element xmlElement = (Element) recordDescriptors.next(); + 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("detail")) { + if (xmlElement.getAttributeValue("id").equals(DETAIL_ID)) { throw new Exception("The ID 'detail' on the <RECORD> element is reserved, please select another id"); } @@ -143,8 +144,8 @@ final Iterator xmlChildren = parent.getChildren("COLUMN").iterator(); while (xmlChildren.hasNext()) { - ColumnMetaData cmd = new ColumnMetaData(); - Element xmlColumn = (Element) xmlChildren.next(); + final ColumnMetaData cmd = new ColumnMetaData(); + final Element xmlColumn = (Element) xmlChildren.next(); // make sure the name attribute is present on the column if (xmlColumn.getAttributeValue("name") == null) { @@ -162,13 +163,10 @@ + xmlColumn.getAttributeValue("length")); } } - columnResults.add(cmd); - } return columnResults; - } /** @@ -183,12 +181,11 @@ private static void showDebug(final Map xmlResults) { final Iterator mapIt = xmlResults.keySet().iterator(); -// XMLRecordElement xmlrecEle = null; while (mapIt.hasNext()) { XMLRecordElement xmlrecEle = null; final String recordID = (String) mapIt.next(); Iterator columns = null; - if (recordID.equals("detail")) { + if (recordID.equals(DETAIL_ID)) { columns = ((List) xmlResults.get(recordID)).iterator(); } else { xmlrecEle = (XMLRecordElement) xmlResults.get(recordID); @@ -206,8 +203,6 @@ System.out.println(" Column Name: " + cmd.getColName() + " LENGTH: " + cmd.getColLength()); } - } } - } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |