From: <be...@us...> - 2006-10-16 13:45:10
|
Revision: 57 http://svn.sourceforge.net/pzfilereader/?rev=57&view=rev Author: benoitx Date: 2006-10-16 06:44:42 -0700 (Mon, 16 Oct 2006) Log Message: ----------- Added unit tests in pzfilereader (quite limited). Modified Paths: -------------- trunk/PZFileReader/.classpath trunk/PZFileReader/.project trunk/PZFileReader/project.xml trunk/PZFileReader/qalab.xml trunk/PZFileReader/src/test/java/com/test/AllJunitTests.java trunk/PZFileReader/src/test/java/com/test/delim/columnInFile/DelimitedColumnNamesInFile.java trunk/PZFileReader/src/test/java/com/test/delim/tab/TabDelimited.java trunk/PZFileReaderSamples/.classpath trunk/PZFileReaderSamples/.project Added Paths: ----------- trunk/PZFileReader/src/test/java/com/test/delim/columnInFile/DelimitedColumnNamesInFileTest.java trunk/PZFileReader/src/test/java/com/test/delim/multiLine/TestCSVPerformance.java trunk/PZFileReader/src/test/java/com/test/delim/tab/TabDelimitedTest.java trunk/PZFileReaderSamples/maven.xml trunk/PZFileReaderSamples/project.xml trunk/PZFileReaderSamples/qalab.xml Removed Paths: ------------- trunk/PZFileReader/src/test/java/com/test/delim/columnInFile/TestDelimitedColumnNamesInFile.java trunk/PZFileReader/src/test/java/com/test/delim/multiLine/CSVPerformanceTest.java trunk/PZFileReader/src/test/java/com/test/delim/tab/TestTabDelimited.java Property Changed: ---------------- trunk/PZFileReaderSamples/ Modified: trunk/PZFileReader/.classpath =================================================================== --- trunk/PZFileReader/.classpath 2006-10-16 12:59:13 UTC (rev 56) +++ trunk/PZFileReader/.classpath 2006-10-16 13:44:42 UTC (rev 57) @@ -1,9 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> + <classpath> - <classpathentry kind="src" path=""/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> - <classpathentry kind="lib" path="include/jdom.jar"/> - <classpathentry kind="lib" path="include/junit.jar"/> - <classpathentry kind="lib" path="include/jxl.jar"/> - <classpathentry kind="output" path=""/> -</classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"></classpathentry> + <classpathentry excluding="" kind="src" path="src/main/java"></classpathentry> + <classpathentry output="target/test-classes" kind="src" path="src/test/java"></classpathentry> + <classpathentry path="MAVEN_REPO/junit/jars/junit-3.8.2.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 Modified: trunk/PZFileReader/.project =================================================================== --- trunk/PZFileReader/.project 2006-10-16 12:59:13 UTC (rev 56) +++ trunk/PZFileReader/.project 2006-10-16 13:44:42 UTC (rev 57) @@ -1,22 +1,16 @@ <?xml version="1.0" encoding="UTF-8"?> + <projectDescription> - <name>PZFileReader</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>com.ibm.sse.model.structuredbuilder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.jdt.core.javanature</nature> - </natures> -</projectDescription> + <name>pzfilereader</name> + <comment>Simple Java delimited and fixed width file parser. Handles CSV, Excel CSV, Tab, Pipe delimiters, just to name a few. Maps column positions in the file to user friendly names via XML. See PZFileReader Feature List under News for complete feature list.</comment> + <projects></projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments></arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> \ No newline at end of file Modified: trunk/PZFileReader/project.xml =================================================================== --- trunk/PZFileReader/project.xml 2006-10-16 12:59:13 UTC (rev 56) +++ trunk/PZFileReader/project.xml 2006-10-16 13:44:42 UTC (rev 57) @@ -47,7 +47,7 @@ <unitTestSourceDirectory>src/test/java</unitTestSourceDirectory> <unitTest> <includes> - <include>**/*NOTest.java</include> + <include>**/*Test.java</include> </includes> <excludes> <exclude>**/Abstract*.java</exclude> Modified: trunk/PZFileReader/qalab.xml =================================================================== --- trunk/PZFileReader/qalab.xml 2006-10-16 12:59:13 UTC (rev 56) +++ trunk/PZFileReader/qalab.xml 2006-10-16 13:44:42 UTC (rev 57) @@ -19,13 +19,17 @@ <summary> <summaryresult date="2006-10-16" filecount="18" statvalue="469" type="checkstyle"/> <summaryresult date="2006-10-16" filecount="2" statvalue="4" type="pmd"/> - <summaryresult date="2006-10-16" filecount="7" statvalue="18" type="findbugs"/> + <summaryresult date="2006-10-16" filecount="7" statvalue="16" type="findbugs"/> <summaryresult date="2006-10-16" filecount="3" statvalue="170" type="simian"/> + <summaryresult date="2006-10-16" filecount="13" statvalue="17" type="cobertura-line"/> + <summaryresult date="2006-10-16" filecount="13" statvalue="26" type="cobertura-branch"/> </summary> <file id="com_pz_reader_util_ParserUtils.java" path="com/pz/reader/util/ParserUtils.java"> <result date="2006-10-16" statvalue="25" type="checkstyle"/> <result date="2006-10-16" statvalue="3" type="pmd"/> <result date="2006-10-16" statvalue="3" type="findbugs"/> + <result date="2006-10-16" statvalue="37" type="cobertura-line"/> + <result date="2006-10-16" statvalue="48" type="cobertura-branch"/> </file> <file id="com_pz_reader_xml_PZMapParser.java" path="com/pz/reader/xml/PZMapParser.java"> <result date="2006-10-16" statvalue="158" type="checkstyle"/> @@ -38,11 +42,13 @@ id="C:_project_pzfilereader_PZFileReader_src_test_java_com_test_delim_tab_TabDelimited.java" path="C:/project/pzfilereader/PZFileReader/src/test/java/com/test/delim/tab/TabDelimited.java"/> <file id="com_pz_reader_DataSet.java" path="com/pz/reader/DataSet.java"> <result date="2006-10-16" statvalue="103" type="checkstyle"/> - <result date="2006-10-16" statvalue="3" type="findbugs"/> + <result date="2006-10-16" statvalue="2" type="findbugs"/> + <result date="2006-10-16" statvalue="20" type="cobertura-line"/> + <result date="2006-10-16" statvalue="25" type="cobertura-branch"/> </file> <file id="com_pz_reader_LargeDataSet.java" path="com/pz/reader/LargeDataSet.java"> <result date="2006-10-16" statvalue="63" type="checkstyle"/> - <result date="2006-10-16" statvalue="3" type="findbugs"/> + <result date="2006-10-16" statvalue="2" type="findbugs"/> </file> <file id="com_pz_reader_ordering_OrderBy.java" path="com/pz/reader/ordering/OrderBy.java"> <result date="2006-10-16" statvalue="12" type="checkstyle"/> @@ -55,6 +61,7 @@ <file id="com_pz_reader_structure_Row.java" path="com/pz/reader/structure/Row.java"> <result date="2006-10-16" statvalue="2" type="checkstyle"/> <result date="2006-10-16" statvalue="1" type="findbugs"/> + <result date="2006-10-16" statvalue="44" type="cobertura-line"/> </file> <file id="com_pz_reader_DataError.java" path="com/pz/reader/DataError.java"> <result date="2006-10-16" statvalue="5" type="checkstyle"/> @@ -65,6 +72,7 @@ </file> <file id="com_pz_reader_structure_ColumnMetaData.java" path="com/pz/reader/structure/ColumnMetaData.java"> <result date="2006-10-16" statvalue="66" type="checkstyle"/> + <result date="2006-10-16" statvalue="50" type="cobertura-line"/> <result date="2006-10-16" statvalue="100" type="cobertura-branch"/> </file> <file id="com_pz_reader_xml_XMLRecordElement.java" path="com/pz/reader/xml/XMLRecordElement.java"> Modified: trunk/PZFileReader/src/test/java/com/test/AllJunitTests.java =================================================================== --- trunk/PZFileReader/src/test/java/com/test/AllJunitTests.java 2006-10-16 12:59:13 UTC (rev 56) +++ trunk/PZFileReader/src/test/java/com/test/AllJunitTests.java 2006-10-16 13:44:42 UTC (rev 57) @@ -16,8 +16,8 @@ public static Test suite() { TestSuite suite = new TestSuite("Test For All PZFileReader Functionality"); //$JUnit-BEGIN$ - suite.addTest(new TestSuite(com.test.delim.columnInFile.TestDelimitedColumnNamesInFile.class)); - suite.addTest(new TestSuite(com.test.delim.tab.TestTabDelimited.class)); + suite.addTest(new TestSuite(com.test.delim.columnInFile.DelimitedColumnNamesInFileTest.class)); + suite.addTest(new TestSuite(com.test.delim.tab.TabDelimitedTest.class)); //$JUnit-END$ return suite; } Modified: trunk/PZFileReader/src/test/java/com/test/delim/columnInFile/DelimitedColumnNamesInFile.java =================================================================== --- trunk/PZFileReader/src/test/java/com/test/delim/columnInFile/DelimitedColumnNamesInFile.java 2006-10-16 12:59:13 UTC (rev 56) +++ trunk/PZFileReader/src/test/java/com/test/delim/columnInFile/DelimitedColumnNamesInFile.java 2006-10-16 13:44:42 UTC (rev 57) @@ -3,7 +3,7 @@ /* * Created on Nov 27, 2005 * - */ + */ import java.io.File; @@ -25,21 +25,21 @@ DataSet ds = null; String[] colNames = null; OrderBy orderby = null; - - + + //delimited by a comma //text qualified by double quotes //ignore first record ds = new DataSet(new File("com/test/delim/columnInFile/PEOPLE-CommaDelimitedWithQualifier.txt"),",","\"",false); - + //re order the data set by last name orderby = new OrderBy(); orderby.addOrderColumn(new OrderColumn("CITY",false)); orderby.addOrderColumn(new OrderColumn("LASTNAME",true)); ds.orderRows(orderby); - + colNames = ds.getColumns(); - + while (ds.next()){ for (int i = 0; i < colNames.length; i++){ System.out.println("COLUMN NAME: " + colNames[i] + " VALUE: " + ds.getString(colNames[i])); @@ -47,8 +47,8 @@ System.out.println("==========================================================================="); } - - + + if (ds.getErrors() != null && ds.getErrors().size() > 0){ System.out.println("FOUND ERRORS IN FILE...."); for (int i = 0; i < ds.getErrors().size(); i++){ @@ -56,16 +56,16 @@ System.out.println("Error: " + de.getErrorDesc() + " Line: " + de.getLineNo()); } } - + //clear out the DataSet object for the JVM to collect ds.freeMemory(); - + } - - + + //used for Junit test - + public DataSet getDsForTest() throws Exception{ - return new DataSet(new File("com/test/delim/columnInFile/PEOPLE-CommaDelimitedWithQualifier.txt"),",","\"",false); + return new DataSet(new File("src/test/java/com/test/delim/columnInFile/PEOPLE-CommaDelimitedWithQualifier.txt"),",","\"",false); } } Copied: trunk/PZFileReader/src/test/java/com/test/delim/columnInFile/DelimitedColumnNamesInFileTest.java (from rev 56, trunk/PZFileReader/src/test/java/com/test/delim/columnInFile/TestDelimitedColumnNamesInFile.java) =================================================================== --- trunk/PZFileReader/src/test/java/com/test/delim/columnInFile/DelimitedColumnNamesInFileTest.java (rev 0) +++ trunk/PZFileReader/src/test/java/com/test/delim/columnInFile/DelimitedColumnNamesInFileTest.java 2006-10-16 13:44:42 UTC (rev 57) @@ -0,0 +1,94 @@ +/* + * Created on Feb 26, 2006 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package com.test.delim.columnInFile; + +import com.pz.reader.DataSet; + +import junit.framework.TestCase; + +/** + * @author zepernick + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class DelimitedColumnNamesInFileTest extends TestCase { + public DelimitedColumnNamesInFileTest( + String name) { + super(name); + } + + //tests to make sure we have 0 errors + public void testErrorCount() { + DataSet ds = null; + + try{ + DelimitedColumnNamesInFile testDelimted = new DelimitedColumnNamesInFile(); + + ds = testDelimted.getDsForTest(); + + //check that we had no errors + assertEquals(0, ds.getErrors().size()); + + + }catch(Exception ex){ + ex.printStackTrace(); + }finally{ + if (ds != null) ds.freeMemory(); + } + } + + //test to make sure we parsed the correct number + //of rows in the file + public void testRowCount(){ + DataSet ds = null; + + try{ + DelimitedColumnNamesInFile testDelimted = new DelimitedColumnNamesInFile(); + + ds = testDelimted.getDsForTest(); + + //check that we parsed in the right amount of rows + assertEquals(6, ds.rows.size()); + + + + }catch(Exception ex){ + ex.printStackTrace(); + }finally{ + if (ds != null) ds.freeMemory(); + } + } + + + //test to make sure we have the right number of column names from the file + public void testColumnNameCount(){ + DataSet ds = null; + + try{ + DelimitedColumnNamesInFile testDelimted = new DelimitedColumnNamesInFile(); + + ds = testDelimted.getDsForTest(); + + //check that we parsed in the right amount of column names + assertEquals(6, ds.getColumns().length); + + + + }catch(Exception ex){ + ex.printStackTrace(); + }finally{ + if (ds != null) ds.freeMemory(); + } + } + + + public static void main(String[] args) { + junit.textui.TestRunner.run( + DelimitedColumnNamesInFileTest.class); + } +} Deleted: trunk/PZFileReader/src/test/java/com/test/delim/columnInFile/TestDelimitedColumnNamesInFile.java =================================================================== --- trunk/PZFileReader/src/test/java/com/test/delim/columnInFile/TestDelimitedColumnNamesInFile.java 2006-10-16 12:59:13 UTC (rev 56) +++ trunk/PZFileReader/src/test/java/com/test/delim/columnInFile/TestDelimitedColumnNamesInFile.java 2006-10-16 13:44:42 UTC (rev 57) @@ -1,94 +0,0 @@ -/* - * Created on Feb 26, 2006 - * - * TODO To change the template for this generated file go to - * Window - Preferences - Java - Code Style - Code Templates - */ -package com.test.delim.columnInFile; - -import com.pz.reader.DataSet; - -import junit.framework.TestCase; - -/** - * @author zepernick - * - * TODO To change the template for this generated type comment go to - * Window - Preferences - Java - Code Style - Code Templates - */ -public class TestDelimitedColumnNamesInFile extends TestCase { - public TestDelimitedColumnNamesInFile( - String name) { - super(name); - } - - //tests to make sure we have 0 errors - public void testErrorCount() { - DataSet ds = null; - - try{ - DelimitedColumnNamesInFile testDelimted = new DelimitedColumnNamesInFile(); - - ds = testDelimted.getDsForTest(); - - //check that we had no errors - assertEquals(0, ds.getErrors().size()); - - - }catch(Exception ex){ - ex.printStackTrace(); - }finally{ - if (ds != null) ds.freeMemory(); - } - } - - //test to make sure we parsed the correct number - //of rows in the file - public void testRowCount(){ - DataSet ds = null; - - try{ - DelimitedColumnNamesInFile testDelimted = new DelimitedColumnNamesInFile(); - - ds = testDelimted.getDsForTest(); - - //check that we parsed in the right amount of rows - assertEquals(6, ds.rows.size()); - - - - }catch(Exception ex){ - ex.printStackTrace(); - }finally{ - if (ds != null) ds.freeMemory(); - } - } - - - //test to make sure we have the right number of column names from the file - public void testColumnNameCount(){ - DataSet ds = null; - - try{ - DelimitedColumnNamesInFile testDelimted = new DelimitedColumnNamesInFile(); - - ds = testDelimted.getDsForTest(); - - //check that we parsed in the right amount of column names - assertEquals(6, ds.getColumns().length); - - - - }catch(Exception ex){ - ex.printStackTrace(); - }finally{ - if (ds != null) ds.freeMemory(); - } - } - - - public static void main(String[] args) { - junit.textui.TestRunner.run( - TestDelimitedColumnNamesInFile.class); - } -} Deleted: trunk/PZFileReader/src/test/java/com/test/delim/multiLine/CSVPerformanceTest.java =================================================================== --- trunk/PZFileReader/src/test/java/com/test/delim/multiLine/CSVPerformanceTest.java 2006-10-16 12:59:13 UTC (rev 56) +++ trunk/PZFileReader/src/test/java/com/test/delim/multiLine/CSVPerformanceTest.java 2006-10-16 13:44:42 UTC (rev 57) @@ -1,100 +0,0 @@ -package com.test.delim.multiLine; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.util.HashMap; -import java.util.Map; - -import com.pz.reader.DataError; -import com.pz.reader.LargeDataSet; - - - -/* - * Created on Dec 1, 2005 - * - * TODO To change the template for this generated file go to - * Window - Preferences - Java - Code Style - Code Templates - */ - -/** - * @author zepernick - * - * TODO To change the template for this generated type comment go to - * Window - Preferences - Java - Code Style - Code Templates - */ -public class CSVPerformanceTest { - - public static void main(String[] args) { - - LargeDataSet ds = null; - String[] colNames = null; - - try{ - - - - //delimited by a comma - //text qualified by double quotes - //ignore first record - long timeStarted = System.currentTimeMillis(); - ds = new LargeDataSet(new File("com/test/delim/multiLine/PEOPLE-CommaDelimitedWithQualifier.txt"),",","\"",false); - long timeFinished = System.currentTimeMillis(); - - - String timeMessage = ""; - - if (timeFinished - timeStarted < 1000){ - timeMessage = (timeFinished - timeStarted) + " Milleseconds..." ; - }else{ - timeMessage = ((timeFinished - timeStarted) / 1000) + " 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 - - timeStarted = System.currentTimeMillis(); - - int times = 0; - while (ds.next()) { - colNames = ds.getColumns(); - for (int i = 0; i < colNames.length; i++){ - System.out.println("COLUMN NAME: " + colNames[i] + " VALUE: " + ds.getString(colNames[i])); - } - - System.out.println("==========================================================================="); - times++; - } - timeFinished = System.currentTimeMillis(); - - if (timeFinished - timeStarted < 1000){ - timeMessage = (timeFinished - timeStarted) + " Milleseconds..." ; - }else{ - timeMessage = ((timeFinished - timeStarted) / 1000) + " Seconds..."; - } - - System.out.println(""); - System.out.println("********Displayed Data To Console In: " + timeMessage + " ******"); - - - - if (ds.getErrors() != null && ds.getErrors().size() > 0){ - System.out.println("FOUND ERRORS IN FILE...."); - for (int i = 0; i < ds.getErrors().size(); i++){ - DataError de = (DataError)ds.getErrors().get(i); - System.out.println("Error: " + de.getErrorDesc() + " Line: " + de.getLineNo()); - } - } - - //clear out the DataSet object for the JVM to collect - ds.freeMemory(); - }catch(Exception ex){ - ex.printStackTrace(); - } - - - } - - -} Copied: trunk/PZFileReader/src/test/java/com/test/delim/multiLine/TestCSVPerformance.java (from rev 56, trunk/PZFileReader/src/test/java/com/test/delim/multiLine/CSVPerformanceTest.java) =================================================================== --- trunk/PZFileReader/src/test/java/com/test/delim/multiLine/TestCSVPerformance.java (rev 0) +++ trunk/PZFileReader/src/test/java/com/test/delim/multiLine/TestCSVPerformance.java 2006-10-16 13:44:42 UTC (rev 57) @@ -0,0 +1,96 @@ +package com.test.delim.multiLine; +import java.io.File; + +import com.pz.reader.DataError; +import com.pz.reader.LargeDataSet; + + + +/* + * Created on Dec 1, 2005 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ + +/** + * @author zepernick + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class TestCSVPerformance { + + public static void main(String[] args) { + + LargeDataSet ds = null; + String[] colNames = null; + + try{ + + + + //delimited by a comma + //text qualified by double quotes + //ignore first record + long timeStarted = System.currentTimeMillis(); + ds = new LargeDataSet(new File("com/test/delim/multiLine/PEOPLE-CommaDelimitedWithQualifier.txt"),",","\"",false); + long timeFinished = System.currentTimeMillis(); + + + String timeMessage = ""; + + if (timeFinished - timeStarted < 1000){ + timeMessage = (timeFinished - timeStarted) + " Milleseconds..." ; + }else{ + timeMessage = ((timeFinished - timeStarted) / 1000) + " 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 + + timeStarted = System.currentTimeMillis(); + + int times = 0; + while (ds.next()) { + colNames = ds.getColumns(); + for (int i = 0; i < colNames.length; i++){ + System.out.println("COLUMN NAME: " + colNames[i] + " VALUE: " + ds.getString(colNames[i])); + } + + System.out.println("==========================================================================="); + times++; + } + timeFinished = System.currentTimeMillis(); + + if (timeFinished - timeStarted < 1000){ + timeMessage = (timeFinished - timeStarted) + " Milleseconds..." ; + }else{ + timeMessage = ((timeFinished - timeStarted) / 1000) + " Seconds..."; + } + + System.out.println(""); + System.out.println("********Displayed Data To Console In: " + timeMessage + " ******"); + + + + if (ds.getErrors() != null && ds.getErrors().size() > 0){ + System.out.println("FOUND ERRORS IN FILE...."); + for (int i = 0; i < ds.getErrors().size(); i++){ + DataError de = (DataError)ds.getErrors().get(i); + System.out.println("Error: " + de.getErrorDesc() + " Line: " + de.getLineNo()); + } + } + + //clear out the DataSet object for the JVM to collect + ds.freeMemory(); + }catch(Exception ex){ + ex.printStackTrace(); + } + + + } + + +} Modified: trunk/PZFileReader/src/test/java/com/test/delim/tab/TabDelimited.java =================================================================== --- trunk/PZFileReader/src/test/java/com/test/delim/tab/TabDelimited.java 2006-10-16 12:59:13 UTC (rev 56) +++ trunk/PZFileReader/src/test/java/com/test/delim/tab/TabDelimited.java 2006-10-16 13:44:42 UTC (rev 57) @@ -5,12 +5,9 @@ */ import java.io.File; -import java.io.FileInputStream; import com.pz.reader.DataError; import com.pz.reader.DataSet; -import com.pz.reader.ordering.OrderBy; -import com.pz.reader.ordering.OrderColumn; @@ -24,10 +21,9 @@ public static void main(String[] args)throws Exception{ DataSet ds = null; String[] colNames = null; - OrderBy orderby = null; File tmpFile = null; - - + + //delimited by a comma //text qualified by double quotes //ignore first record @@ -35,15 +31,15 @@ System.out.println("tmp file path: " + tmpFile); //ds = new DataSet(new FileInputStream(tmpFile),"\t","",true); ds = new DataSet(tmpFile,"\t","\"",true); - + //re order the data set by last name /* orderby = new OrderBy(); orderby.addOrderColumn(new OrderColumn("CITY",false)); orderby.addOrderColumn(new OrderColumn("LASTNAME",true)); ds.orderRows(orderby);*/ - + colNames = ds.getColumns(); - + while (ds.next()){ for (int i = 0; i < colNames.length; i++){ System.out.println("COLUMN NAME: " + colNames[i] + " VALUE: " + ds.getString(colNames[i])); @@ -51,8 +47,8 @@ System.out.println("==========================================================================="); } - - + + if (ds.getErrors() != null && ds.getErrors().size() > 0){ System.out.println("FOUND ERRORS IN FILE...."); for (int i = 0; i < ds.getErrors().size(); i++){ @@ -60,16 +56,16 @@ System.out.println("Error: " + de.getErrorDesc() + " Line: " + de.getLineNo()); } } - + //clear out the DataSet object for the JVM to collect ds.freeMemory(); - + } - - + + //used for Junit test - + public DataSet getDsForTest() throws Exception{ - return new DataSet(new File("com/test/delim/tab/PEOPLE-TabDelimitedWithQualifier.txt"),"\t","\"",true); + return new DataSet(new File("src/test/java/com/test/delim/tab/PEOPLE-TabDelimitedWithQualifier.txt"),"\t","\"",true); } } Copied: trunk/PZFileReader/src/test/java/com/test/delim/tab/TabDelimitedTest.java (from rev 56, trunk/PZFileReader/src/test/java/com/test/delim/tab/TestTabDelimited.java) =================================================================== --- trunk/PZFileReader/src/test/java/com/test/delim/tab/TabDelimitedTest.java (rev 0) +++ trunk/PZFileReader/src/test/java/com/test/delim/tab/TabDelimitedTest.java 2006-10-16 13:44:42 UTC (rev 57) @@ -0,0 +1,94 @@ +/* + * Created on Feb 26, 2006 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package com.test.delim.tab; + +import com.pz.reader.DataSet; + +import junit.framework.TestCase; + +/** + * @author zepernick + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class TabDelimitedTest extends TestCase { + public TabDelimitedTest( + String name) { + super(name); + } + + //tests to make sure we have 0 errors + public void testErrorCount() { + DataSet ds = null; + + try{ + TabDelimited testTab = new TabDelimited(); + + ds = testTab.getDsForTest(); + + //check that we had no errors + assertEquals(0, ds.getErrors().size()); + + + }catch(Exception ex){ + ex.printStackTrace(); + }finally{ + if (ds != null) ds.freeMemory(); + } + } + + //test to make sure we parsed the correct number + //of rows in the file + public void testRowCount(){ + DataSet ds = null; + + try{ + TabDelimited testTab = new TabDelimited(); + + ds = testTab.getDsForTest(); + + //check that we parsed in the right amount of rows + assertEquals(2, ds.rows.size()); + + + + }catch(Exception ex){ + ex.printStackTrace(); + }finally{ + if (ds != null) ds.freeMemory(); + } + } + + + //test to make sure we have the right number of column names from the file + public void testColumnNameCount(){ + DataSet ds = null; + + try{ + TabDelimited testTab = new TabDelimited(); + + ds = testTab.getDsForTest(); + + //check that we parsed in the right amount of column names + assertEquals(5, ds.getColumns().length); + + + + }catch(Exception ex){ + ex.printStackTrace(); + }finally{ + if (ds != null) ds.freeMemory(); + } + } + + + public static void main(String[] args) { + junit.textui.TestRunner.run( + TabDelimitedTest.class); + } +} Deleted: trunk/PZFileReader/src/test/java/com/test/delim/tab/TestTabDelimited.java =================================================================== --- trunk/PZFileReader/src/test/java/com/test/delim/tab/TestTabDelimited.java 2006-10-16 12:59:13 UTC (rev 56) +++ trunk/PZFileReader/src/test/java/com/test/delim/tab/TestTabDelimited.java 2006-10-16 13:44:42 UTC (rev 57) @@ -1,94 +0,0 @@ -/* - * Created on Feb 26, 2006 - * - * TODO To change the template for this generated file go to - * Window - Preferences - Java - Code Style - Code Templates - */ -package com.test.delim.tab; - -import com.pz.reader.DataSet; - -import junit.framework.TestCase; - -/** - * @author zepernick - * - * TODO To change the template for this generated type comment go to - * Window - Preferences - Java - Code Style - Code Templates - */ -public class TestTabDelimited extends TestCase { - public TestTabDelimited( - String name) { - super(name); - } - - //tests to make sure we have 0 errors - public void testErrorCount() { - DataSet ds = null; - - try{ - TabDelimited testTab = new TabDelimited(); - - ds = testTab.getDsForTest(); - - //check that we had no errors - assertEquals(0, ds.getErrors().size()); - - - }catch(Exception ex){ - ex.printStackTrace(); - }finally{ - if (ds != null) ds.freeMemory(); - } - } - - //test to make sure we parsed the correct number - //of rows in the file - public void testRowCount(){ - DataSet ds = null; - - try{ - TabDelimited testTab = new TabDelimited(); - - ds = testTab.getDsForTest(); - - //check that we parsed in the right amount of rows - assertEquals(2, ds.rows.size()); - - - - }catch(Exception ex){ - ex.printStackTrace(); - }finally{ - if (ds != null) ds.freeMemory(); - } - } - - - //test to make sure we have the right number of column names from the file - public void testColumnNameCount(){ - DataSet ds = null; - - try{ - TabDelimited testTab = new TabDelimited(); - - ds = testTab.getDsForTest(); - - //check that we parsed in the right amount of column names - assertEquals(5, ds.getColumns().length); - - - - }catch(Exception ex){ - ex.printStackTrace(); - }finally{ - if (ds != null) ds.freeMemory(); - } - } - - - public static void main(String[] args) { - junit.textui.TestRunner.run( - TestTabDelimited.class); - } -} Property changes on: trunk/PZFileReaderSamples ___________________________________________________________________ Name: svn:ignore + target Modified: trunk/PZFileReaderSamples/.classpath =================================================================== --- trunk/PZFileReaderSamples/.classpath 2006-10-16 12:59:13 UTC (rev 56) +++ trunk/PZFileReaderSamples/.classpath 2006-10-16 13:44:42 UTC (rev 57) @@ -1,7 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> + <classpath> - <classpathentry kind="src" path=""/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> - <classpathentry kind="src" path="/PZFileReader"/> - <classpathentry kind="output" path=""/> -</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/com.pz.reader/jars/pzfilereader-2.2.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 Modified: trunk/PZFileReaderSamples/.project =================================================================== --- trunk/PZFileReaderSamples/.project 2006-10-16 12:59:13 UTC (rev 56) +++ trunk/PZFileReaderSamples/.project 2006-10-16 13:44:42 UTC (rev 57) @@ -1,22 +1,16 @@ <?xml version="1.0" encoding="UTF-8"?> + <projectDescription> - <name>PZFileReaderSamples</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>com.ibm.sse.model.structuredbuilder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.jdt.core.javanature</nature> - </natures> -</projectDescription> + <name>pzfilereader-examples</name> + <comment>Simple Java delimited and fixed width file parser. Handles CSV, Excel CSV, Tab, Pipe delimiters, just to name a few. Maps column positions in the file to user friendly names via XML. See PZFileReader Feature List under News for complete feature list.</comment> + <projects></projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments></arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> \ No newline at end of file Added: trunk/PZFileReaderSamples/maven.xml =================================================================== --- trunk/PZFileReaderSamples/maven.xml (rev 0) +++ trunk/PZFileReaderSamples/maven.xml 2006-10-16 13:44:42 UTC (rev 57) @@ -0,0 +1,18 @@ +<?xml version="1.0"?> + +<!-- + /* + * ======================================================================== + * ObjectLab Financial Ltd, proud sponsor of PZFileReader. + * ======================================================================== + */ +--> + +<project xmlns:j="jelly:core" xmlns:core="jelly:core" + xmlns:maven="jelly:maven" xmlns:ant="jelly:ant" + xmlns:define="jelly:define" xmlns:doc="doc" xmlns:util="jelly:util" + xmlns:log="jelly:log"> + + <goal name="pz:build" prereqs="jar:install" /> + <goal name="pz:rebuild" prereqs="clean,kit:build" /> +</project> Added: trunk/PZFileReaderSamples/project.xml =================================================================== --- trunk/PZFileReaderSamples/project.xml (rev 0) +++ trunk/PZFileReaderSamples/project.xml 2006-10-16 13:44:42 UTC (rev 57) @@ -0,0 +1,65 @@ +<?xml version="1.0"?> + +<!-- + /* + * ======================================================================== + * $Id: project.xml 167 2006-09-12 15:11:43Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + * ======================================================================== + */ +--> + +<project> + <extend>../common-build/project.xml</extend> + <name>PZFileReader Examples</name> + <artifactId>pzfilereader-examples</artifactId> + <package>com.pz.reader</package> + <shortDescription>PZFileReader </shortDescription> + <description> + Simple Java delimited and fixed width file parser. Handles CSV, Excel CSV, Tab, Pipe delimiters, just to name a few. + Maps column positions in the file to user friendly names via XML. See PZFileReader Feature List under News for complete feature list. + </description> + <repository> + <connection> + scm:svn:https://svn.sourceforge.net/svnroot/pzfilereader/trunk/PZFileReader + </connection> + <developerConnection> + scm:svn:https://svn.sourceforge.net/svnroot/pzfilereader/trunk/PZFileReader + </developerConnection> + </repository> + <dependencies> + <dependency> + <groupId>com.pz.reader</groupId> + <artifactId>pzfilereader</artifactId> + <version>${pom.currentVersion}</version> + <type>jar</type> + </dependency> + </dependencies> + + <build> + <sourceDirectory>src/main/java</sourceDirectory> + <unitTestSourceDirectory>src/test/java</unitTestSourceDirectory> + <unitTest> + <includes> + <include>**/*NOTest.java</include> + </includes> + <excludes> + <exclude>**/Abstract*.java</exclude> + </excludes> + </unitTest> + </build> + +</project> Added: trunk/PZFileReaderSamples/qalab.xml =================================================================== --- trunk/PZFileReaderSamples/qalab.xml (rev 0) +++ trunk/PZFileReaderSamples/qalab.xml 2006-10-16 13:44:42 UTC (rev 57) @@ -0,0 +1,148 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE qalab [<!ELEMENT qalab (summary,file*)> +<!ATTLIST qalab version CDATA #REQUIRED> +<!ELEMENT summary (summaryresult*)> +<!ELEMENT file (result+)> +<!ATTLIST file id ID #REQUIRED> +<!ATTLIST file path CDATA #REQUIRED> +<!ELEMENT result EMPTY> +<!ATTLIST result date CDATA #REQUIRED> +<!ATTLIST result statvalue CDATA #REQUIRED> +<!ATTLIST result type CDATA #REQUIRED> +<!ELEMENT summaryresult EMPTY> +<!ATTLIST summaryresult date CDATA #REQUIRED> +<!ATTLIST summaryresult statvalue CDATA #REQUIRED> +<!ATTLIST summaryresult filecount CDATA #REQUIRED> +<!ATTLIST summaryresult type CDATA #REQUIRED> +]> +<qalab version="1.1"> + <summary> + <summaryresult date="2006-10-16" filecount="30" statvalue="223" type="checkstyle"/> + <summaryresult date="2006-10-16" filecount="6" statvalue="12" type="pmd"/> + <summaryresult date="2006-10-16" filecount="4" statvalue="5" type="findbugs"/> + <summaryresult date="2006-10-16" filecount="4" statvalue="70" 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"/> + </file> + <file id="com_pz_reader_examples_exporttoexcel_package.html" path="com/pz/reader/examples/exporttoexcel/package.html"> + <result date="2006-10-16" statvalue="1" type="checkstyle"/> + </file> + <file id="com_pz_reader_examples_csvperformancetest_package.html" path="com/pz/reader/examples/csvperformancetest/package.html"> + <result date="2006-10-16" statvalue="1" type="checkstyle"/> + </file> + <file + id="com_pz_reader_examples_largedataset_fixedlengthdynamiccolumns_package.html" path="com/pz/reader/examples/largedataset/fixedlengthdynamiccolumns/package.html"> + <result date="2006-10-16" statvalue="1" type="checkstyle"/> + </file> + <file id="com_pz_reader_examples_lowlevelparse_package.html" path="com/pz/reader/examples/lowlevelparse/package.html"> + <result date="2006-10-16" statvalue="1" type="checkstyle"/> + </file> + <file + id="com_pz_reader_examples_largedataset_largecsvperformancetest_package.html" path="com/pz/reader/examples/largedataset/largecsvperformancetest/package.html"> + <result date="2006-10-16" statvalue="1" type="checkstyle"/> + </file> + <file + id="com_pz_reader_examples_multilinedelimitedrecord_package.html" path="com/pz/reader/examples/multilinedelimitedrecord/package.html"> + <result date="2006-10-16" statvalue="1" type="checkstyle"/> + </file> + <file + id="com_pz_reader_examples_delimitedcolumnnamesinfile_package.html" path="com/pz/reader/examples/delimitedcolumnnamesinfile/package.html"> + <result date="2006-10-16" statvalue="1" type="checkstyle"/> + </file> + <file id="com_pz_reader_examples_csvheaderandtrailer_package.html" path="com/pz/reader/examples/csvheaderandtrailer/package.html"> + <result date="2006-10-16" statvalue="1" type="checkstyle"/> + </file> + <file + id="com_pz_reader_examples_largedataset_delimiteddynamiccolumns_package.html" path="com/pz/reader/examples/largedataset/delimiteddynamiccolumns/package.html"> + <result date="2006-10-16" statvalue="1" type="checkstyle"/> + </file> + <file + id="com_pz_reader_examples_fixedlengthdynamiccolumns_package.html" path="com/pz/reader/examples/fixedlengthdynamiccolumns/package.html"> + <result date="2006-10-16" statvalue="1" type="checkstyle"/> + </file> + <file id="com_pz_reader_examples_createsamplecsv_package.html" path="com/pz/reader/examples/createsamplecsv/package.html"> + <result date="2006-10-16" statvalue="1" type="checkstyle"/> + </file> + <file + id="com_pz_reader_examples_delimiteddynamiccolumnswitherrors_package.html" path="com/pz/reader/examples/delimiteddynamiccolumnswitherrors/package.html"> + <result date="2006-10-16" statvalue="1" type="checkstyle"/> + </file> + <file + id="com_pz_reader_examples_delimiteddynamiccolumns_package.html" path="com/pz/reader/examples/delimiteddynamiccolumns/package.html"> + <result date="2006-10-16" statvalue="1" type="checkstyle"/> + </file> + <file + id="com_pz_reader_examples_fixedlengthheaderandtrailer_package.html" path="com/pz/reader/examples/fixedlengthheaderandtrailer/package.html"> + <result date="2006-10-16" statvalue="1" type="checkstyle"/> + </file> + <file + id="com_pz_reader_examples_createsamplecsv_CSVTestFileCreator.java" path="com/pz/reader/examples/createsamplecsv/CSVTestFileCreator.java"> + <result date="2006-10-16" statvalue="9" type="checkstyle"/> + <result date="2006-10-16" statvalue="1" type="pmd"/> + <result date="2006-10-16" statvalue="1" type="findbugs"/> + </file> + <file + id="com_pz_reader_examples_csvheaderandtrailer_CSVHeaderAndTrailer.java" path="com/pz/reader/examples/csvheaderandtrailer/CSVHeaderAndTrailer.java"> + <result date="2006-10-16" statvalue="20" type="checkstyle"/> + <result date="2006-10-16" statvalue="3" type="pmd"/> + </file> + <file + id="com_pz_reader_examples_csvperformancetest_CSVPerformanceTest.java" path="com/pz/reader/examples/csvperformancetest/CSVPerformanceTest.java"> + <result date="2006-10-16" statvalue="57" type="checkstyle"/> + <result date="2006-10-16" statvalue="1" type="findbugs"/> + </file> + <file + id="com_pz_reader_examples_delimitedcolumnnamesinfile_DelimitedColumnNamesInFile.java" path="com/pz/reader/examples/delimitedcolumnnamesinfile/DelimitedColumnNamesInFile.java"> + <result date="2006-10-16" statvalue="5" type="checkstyle"/> + </file> + <file + id="com_pz_reader_examples_delimiteddynamiccolumns_DelimitedWithPZMap.java" path="com/pz/reader/examples/delimiteddynamiccolumns/DelimitedWithPZMap.java"> + <result date="2006-10-16" statvalue="4" type="checkstyle"/> + </file> + <file + id="com_pz_reader_examples_delimiteddynamiccolumnswitherrors_DelimitedWithPZMapErrors.java" path="com/pz/reader/examples/delimiteddynamiccolumnswitherrors/DelimitedWithPZMapErrors.java"> + <result date="2006-10-16" statvalue="5" type="checkstyle"/> + </file> + <file + id="com_pz_reader_examples_exporttoexcel_DelimitedFileExportToExcel.java" path="com/pz/reader/examples/exporttoexcel/DelimitedFileExportToExcel.java"> + <result date="2006-10-16" statvalue="2" type="checkstyle"/> + </file> + <file + id="com_pz_reader_examples_fixedlengthdynamiccolumns_FixedLengthWithPZMap.java" path="com/pz/reader/examples/fixedlengthdynamiccolumns/FixedLengthWithPZMap.java"> + <result date="2006-10-16" statvalue="3" type="checkstyle"/> + </file> + <file + id="com_pz_reader_examples_fixedlengthheaderandtrailer_FixedLengthHeaderAndTrailer.java" path="com/pz/reader/examples/fixedlengthheaderandtrailer/FixedLengthHeaderAndTrailer.java"> + <result date="2006-10-16" statvalue="17" type="checkstyle"/> + </file> + <file + id="com_pz_reader_examples_largedataset_delimiteddynamiccolumns_DelimitedWithPZMap.java" path="com/pz/reader/examples/largedataset/delimiteddynamiccolumns/DelimitedWithPZMap.java"> + <result date="2006-10-16" statvalue="9" type="checkstyle"/> + <result date="2006-10-16" statvalue="2" type="pmd"/> + </file> + <file + id="com_pz_reader_examples_largedataset_fixedlengthdynamiccolumns_FixedLengthWithPZMap.java" path="com/pz/reader/examples/largedataset/fixedlengthdynamiccolumns/FixedLengthWithPZMap.java"> + <result date="2006-10-16" statvalue="4" type="checkstyle"/> + </file> + <file + id="com_pz_reader_examples_largedataset_largecsvperformancetest_CSVLarge.java" path="com/pz/reader/examples/largedataset/largecsvperformancetest/CSVLarge.java"> + <result date="2006-10-16" statvalue="33" type="checkstyle"/> + <result date="2006-10-16" statvalue="1" type="findbugs"/> + </file> + <file id="com_pz_reader_examples_lowlevelparse_LowLevelParse.java" path="com/pz/reader/examples/lowlevelparse/LowLevelParse.java"> + <result date="2006-10-16" statvalue="24" type="checkstyle"/> + <result date="2006-10-16" statvalue="2" type="pmd"/> + <result date="2006-10-16" statvalue="2" type="findbugs"/> + </file> + <file + id="com_pz_reader_examples_multilinedelimitedrecord_DelimitedMultiLine.java" path="com/pz/reader/examples/multilinedelimitedrecord/DelimitedMultiLine.java"> + <result date="2006-10-16" statvalue="8" type="checkstyle"/> + <result date="2006-10-16" statvalue="2" type="pmd"/> + </file> + <file + id="com_pz_reader_examples_numericsanddates_NumericsAndDates.java" path="com/pz/reader/examples/numericsanddates/NumericsAndDates.java"> + <result date="2006-10-16" statvalue="8" type="checkstyle"/> + <result date="2006-10-16" statvalue="2" type="pmd"/> + </file> +</qalab> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2006-10-17 17:27:33
|
Revision: 84 http://svn.sourceforge.net/pzfilereader/?rev=84&view=rev Author: benoitx Date: 2006-10-17 10:26:35 -0700 (Tue, 17 Oct 2006) Log Message: ----------- Final items for move to net.sf.pzfilereader. Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/LargeDataSet.java trunk/PZFileReader/src/test/java/net/sf/pzfilereader/columninfile/DelimitedColumnNamesInFile.java trunk/PZFileReader/src/test/java/net/sf/pzfilereader/delim/tab/TabDelimited.java trunk/PZFileReader/src/test/java/net/sf/pzfilereader/multiline/TestCSVPerformance.java trunk/PZFileReaderSamples/.classpath Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/LargeDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/LargeDataSet.java 2006-10-17 17:19:40 UTC (rev 83) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/LargeDataSet.java 2006-10-17 17:26:35 UTC (rev 84) @@ -247,8 +247,8 @@ * @param ob - * OrderBy object * @exception Exception - * @see com.pz.reader.ordering.OrderBy - * @see com.pz.reader.ordering.OrderColumn + * @see net.sf.pzfilereader.ordering.OrderBy + * @see net.sf.pzfilereader.ordering.OrderColumn */ public void orderRows(final OrderBy ob) throws Exception { throw new RuntimeException("orderRows() is Not Implemented For LargeDataSet"); Modified: trunk/PZFileReader/src/test/java/net/sf/pzfilereader/columninfile/DelimitedColumnNamesInFile.java =================================================================== --- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/columninfile/DelimitedColumnNamesInFile.java 2006-10-17 17:19:40 UTC (rev 83) +++ trunk/PZFileReader/src/test/java/net/sf/pzfilereader/columninfile/DelimitedColumnNamesInFile.java 2006-10-17 17:26:35 UTC (rev 84) @@ -27,7 +27,7 @@ // delimited by a comma // text qualified by double quotes // ignore first record - ds = new DataSet(new File("com/test/delim/columnInFile/PEOPLE-CommaDelimitedWithQualifier.txt"), ",", "\"", false); + ds = new DataSet(new File("net/sf/pzfilereader/columninfile/PEOPLE-CommaDelimitedWithQualifier.txt"), ",", "\"", false); // re order the data set by last name orderby = new OrderBy(); @@ -61,7 +61,7 @@ // used for Junit test public DataSet getDsForTest() throws Exception { - return new DataSet(new File("src/test/java/com/test/delim/columnInFile/PEOPLE-CommaDelimitedWithQualifier.txt"), ",", + return new DataSet(new File("src/test/java/net/sf/pzfilereader/columninfile/PEOPLE-CommaDelimitedWithQualifier.txt"), ",", "\"", false); } } Modified: trunk/PZFileReader/src/test/java/net/sf/pzfilereader/delim/tab/TabDelimited.java =================================================================== --- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/delim/tab/TabDelimited.java 2006-10-17 17:19:40 UTC (rev 83) +++ trunk/PZFileReader/src/test/java/net/sf/pzfilereader/delim/tab/TabDelimited.java 2006-10-17 17:26:35 UTC (rev 84) @@ -25,7 +25,7 @@ // delimited by a comma // text qualified by double quotes // ignore first record - tmpFile = new File("com/test/delim/tab/PEOPLE-TabDelimitedWithQualifier.txt"); + tmpFile = new File("net/sf/pzfilereader/delim/tab/PEOPLE-TabDelimitedWithQualifier.txt"); System.out.println("tmp file path: " + tmpFile); // ds = new DataSet(new FileInputStream(tmpFile),"\t","",true); ds = new DataSet(tmpFile, "\t", "\"", true); @@ -63,6 +63,6 @@ // used for Junit test public DataSet getDsForTest() throws Exception { - return new DataSet(new File("src/test/java/com/test/delim/tab/PEOPLE-TabDelimitedWithQualifier.txt"), "\t", "\"", true); + return new DataSet(new File("src/test/java/net/sf/pzfilereader/delim/tab/PEOPLE-TabDelimitedWithQualifier.txt"), "\t", "\"", true); } } Modified: trunk/PZFileReader/src/test/java/net/sf/pzfilereader/multiline/TestCSVPerformance.java =================================================================== --- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/multiline/TestCSVPerformance.java 2006-10-17 17:19:40 UTC (rev 83) +++ trunk/PZFileReader/src/test/java/net/sf/pzfilereader/multiline/TestCSVPerformance.java 2006-10-17 17:26:35 UTC (rev 84) @@ -31,7 +31,7 @@ // text qualified by double quotes // ignore first record long timeStarted = System.currentTimeMillis(); - ds = new LargeDataSet(new File("com/test/delim/multiLine/PEOPLE-CommaDelimitedWithQualifier.txt"), ",", "\"", false); + ds = new LargeDataSet(new File("net/sf/pzfilereader/multiLine/PEOPLE-CommaDelimitedWithQualifier.txt"), ",", "\"", false); long timeFinished = System.currentTimeMillis(); String timeMessage = ""; Modified: trunk/PZFileReaderSamples/.classpath =================================================================== --- trunk/PZFileReaderSamples/.classpath 2006-10-17 17:19:40 UTC (rev 83) +++ trunk/PZFileReaderSamples/.classpath 2006-10-17 17:26:35 UTC (rev 84) @@ -1,9 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> + <classpath> - <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/com.pz.reader/jars/pzfilereader-2.2.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> + <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 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. |
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-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: <be...@us...> - 2006-10-27 14:06:44
|
Revision: 142 http://svn.sourceforge.net/pzfilereader/?rev=142&view=rev Author: benoitx Date: 2006-10-27 07:06:22 -0700 (Fri, 27 Oct 2006) Log Message: ----------- First cut at re-org to use Factory mechanisms. Converted 2 unit tests and they seem happy... Still using IDataSet for the interface. LargeSet not covered at this stage. Modified Paths: -------------- trunk/PZFileReader/.classpath trunk/PZFileReader/src/main/java/net/sf/pzfilereader/IDataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java trunk/PZFileReader/src/test/java/net/sf/pzfilereader/columninfile/DelimitedColumnNamesInFile.java trunk/PZFileReader/src/test/java/net/sf/pzfilereader/columninfile/DelimitedColumnNamesInFileTest.java trunk/PZFileReader/src/test/java/net/sf/pzfilereader/delim/tab/TabDelimited.java trunk/PZFileReader/src/test/java/net/sf/pzfilereader/delim/tab/TabDelimitedTest.java trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/ParserUtilsLTrimTest.java trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/ParserUtilsSplitLineTest.java Added Paths: ----------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultPZParserFactory.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/InitialisationException.java Modified: trunk/PZFileReader/.classpath =================================================================== --- trunk/PZFileReader/.classpath 2006-10-27 11:55:43 UTC (rev 141) +++ trunk/PZFileReader/.classpath 2006-10-27 14:06:22 UTC (rev 142) @@ -1,11 +1,12 @@ <?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 output="target/test-classes" kind="src" path="src/test/java"></classpathentry> - <classpathentry path="MAVEN_REPO/junit/jars/junit-3.8.2.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 path="src/test/java" output="target/test-classes" kind="src"/> + <classpathentry path="MAVEN_REPO/junit/jars/junit-3.8.2.jar" kind="var"/> + <classpathentry path="ECLIPSE_HOME/plugins/org.eclipse.hyades.test.tools.core_4.2.1.v200607310100/common.runner.jar" kind="var"/> + <classpathentry path="ECLIPSE_HOME/plugins/org.eclipse.hyades.test.tools.core_4.2.1.v200607310100/java.runner.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> Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2006-10-27 14:06:22 UTC (rev 142) @@ -0,0 +1,285 @@ +/** + * + */ +package net.sf.pzfilereader; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.List; + +import net.sf.pzfilereader.structure.Row; +import net.sf.pzfilereader.util.PZConstants; +import net.sf.pzfilereader.util.ParserUtils; + +/** + * @author xhensevb + * + */ +public abstract class AbstractDelimiterPZParser extends AbstractPZParser { + private char delimiter = 0; + + private char qualifier = 0; + + private boolean ignoreFirstRecord = false; + + public AbstractDelimiterPZParser(InputStream dataSourceStream, String dataDefinition, char delimiter, char qualifier, + boolean ignoreFirstRecord) { + super(dataSourceStream, dataDefinition); + this.delimiter = delimiter; + this.qualifier = qualifier; + this.ignoreFirstRecord = ignoreFirstRecord; + } + + public AbstractDelimiterPZParser(File dataSource, char delimiter, char qualifier, boolean ignoreFirstRecord) { + super(dataSource); + this.delimiter = delimiter; + this.qualifier = qualifier; + this.ignoreFirstRecord = ignoreFirstRecord; + } + + public AbstractDelimiterPZParser(InputStream dataSourceStream, char delimiter, char qualifier, boolean ignoreFirstRecord) { + super(dataSourceStream); + this.delimiter = delimiter; + this.qualifier = qualifier; + this.ignoreFirstRecord = ignoreFirstRecord; + } + + public IDataSet doParse() { + try { + if (getDataSourceStream() != null) { + return doDelimitedFile(getDataSourceStream(), getDelimiter(), getQualifier(), isIgnoreFirstRecord(), shouldCreateMDFromFile()); + } else { + InputStream stream = null; + try { + stream = ParserUtils.createInputStream(getDataSource()); + return doDelimitedFile(stream, getDelimiter(), getQualifier(), isIgnoreFirstRecord(), shouldCreateMDFromFile()); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } finally { + if (stream != null) { + stream.close(); + } + } + } + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + protected abstract boolean shouldCreateMDFromFile(); + + protected char getDelimiter() { + return delimiter; + } + + protected void setDelimiter(char delimiter) { + this.delimiter = delimiter; + } + + protected boolean isIgnoreFirstRecord() { + return ignoreFirstRecord; + } + + protected void setIgnoreFirstRecord(boolean ignoreFirstRecord) { + this.ignoreFirstRecord = ignoreFirstRecord; + } + + protected char getQualifier() { + return qualifier; + } + + protected void setQualifier(char qualifier) { + this.qualifier = qualifier; + } + + /* + * This is the new version of doDelimitedFile using InputStrem instead of + * File. This is more flexible especially it is working with WebStart. + * + * puts together the dataset for a DELIMITED file. This is used for PZ XML + * mappings, and SQL table mappings + */ + private IDataSet doDelimitedFile(final InputStream dataSource, final char delimiter, final char qualifier, + final boolean ignoreFirstRecord, final boolean createMDFromFile) throws IOException, Exception { + if (dataSource == null) { + throw new NullPointerException("dataSource is null"); + } + + InputStreamReader isr = null; + BufferedReader br = null; + DefaultDataSet ds = new DefaultDataSet(getColumnMD()); + try { + // get the total column count + // columnCount = columnMD.size(); + + /** Read in the flat file */ + // fr = new FileReader(dataSource.getAbsolutePath()); + isr = new InputStreamReader(dataSource); + br = new BufferedReader(isr); + + boolean processedFirst = false; + boolean processingMultiLine = false; + int lineCount = 0; + String lineData = ""; + /** loop through each line in the file */ + String line = null; + while ((line = br.readLine()) != null) { + lineCount++; + /** empty line skip past it */ + String trimmed = line.trim(); + if (!processingMultiLine && trimmed.length() == 0) { + continue; + } + + // check to see if the user has elected to skip the first record + if (!processedFirst && ignoreFirstRecord) { + processedFirst = true; + continue; + } else if (!processedFirst && createMDFromFile) { + processedFirst = true; + setColumnMD(ParserUtils.getColumnMDFromFile(line, delimiter, qualifier)); + ds.setColumnMD(getColumnMD()); + continue; + } + + // ******************************************************** + // new functionality as of 2.1.0 check to see if we have + // any line breaks in the middle of the record, this will only + // be checked if we have specified a delimiter + // ******************************************************** + final char[] chrArry = trimmed.toCharArray(); + if (!processingMultiLine && delimiter > 0) { + processingMultiLine = ParserUtils.isMultiLine(chrArry, delimiter, qualifier); + } + + // check to see if we have reached the end of the linebreak in + // the record + + final String trimmedLineData = lineData.trim(); + if (processingMultiLine && trimmedLineData.length() > 0) { + // need to do one last check here. it is possible that the " + // could be part of the data + // excel will escape these with another quote; here is some + // data "" This would indicate + // there is more to the multiline + if (trimmed.charAt(trimmed.length() - 1) == qualifier && !trimmed.endsWith("" + qualifier + qualifier)) { + // it is safe to assume we have reached the end of the + // line break + processingMultiLine = false; + if (trimmedLineData.length() > 0) { // + would always be + // true surely.... + lineData += "\r\n"; + } + lineData += line; + } else { + // check to see if this is the last line of the record + // looking for a qualifier followed by a delimiter + if (trimmedLineData.length() > 0) { // + here again, + // this should + // always be true... + lineData += "\r\n"; + } + lineData += line; + boolean qualiFound = false; + for (int i = 0; i < chrArry.length; i++) { + if (qualiFound) { + if (chrArry[i] == ' ') { + continue; + } else { + // not a space, if this char is the + // delimiter, then we have reached the end + // of + // the record + if (chrArry[i] == delimiter) { + // processingMultiLine = false; + // fix put in, setting to false caused + // bug when processing multiple + // multi-line + // columns on the same record + processingMultiLine = ParserUtils.isMultiLine(chrArry, delimiter, qualifier); + break; + } + qualiFound = false; + continue; + } + } else if (chrArry[i] == qualifier) { + qualiFound = true; + } + } + // check to see if we are still in multi line mode, if + // so grab the next line + if (processingMultiLine) { + continue; + } + } + } else { + // throw the line into lineData var. + lineData += line; + if (processingMultiLine) { + continue; // if we are working on a multiline rec, get + // the data on the next line + } + } + // ******************************************************************** + // end record line break logic + // ******************************************************************** + + // column values + final List columns = ParserUtils.splitLine(lineData, delimiter, qualifier); + lineData = ""; + final String mdkey = ParserUtils.getCMDKeyForDelimitedFile(getColumnMD(), columns); + final List cmds = ParserUtils.getColumnMetaData(mdkey, getColumnMD()); + final int columnCount = cmds.size(); + // DEBUG + + // Incorrect record length on line log the error. Line + // will not be included in the dataset + if (columns.size() > columnCount) { + // log the error + addError(ds, "TOO MANY COLUMNS WANTED: " + columnCount + " GOT: " + columns.size(), lineCount, 2); + continue; + } else if (columns.size() < columnCount) { + if (isHandlingShortLines()) { + // We can pad this line out + while (columns.size() < columnCount) { + columns.add(""); + } + + // log a warning + addError(ds, "PADDED LINE TO CORRECT NUMBER OF COLUMNS", lineCount, 1); + + } else { + addError(ds, "TOO FEW COLUMNS WANTED: " + columnCount + " GOT: " + columns.size(), lineCount, 2); + continue; + } + } + + final Row row = new Row(); + row.setMdkey(mdkey.equals(PZConstants.DETAIL_ID) ? null : mdkey); // try + // to limit the memory use + row.setCols(columns); + row.setRowNumber(lineCount); + /** add the row to the array */ + ds.addRow(row); + } + } finally { + if (isr != null) { + isr.close(); + } + if (br != null) { + br.close(); + } + } + return ds; + } +} Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java 2006-10-27 14:06:22 UTC (rev 142) @@ -0,0 +1,154 @@ +/** + * + */ +package net.sf.pzfilereader; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.List; +import java.util.Map; + +import net.sf.pzfilereader.structure.Row; +import net.sf.pzfilereader.util.FixedWidthParserUtils; +import net.sf.pzfilereader.util.PZConstants; +import net.sf.pzfilereader.util.ParserUtils; + +/** + * @author xhensevb + * + */ +public abstract class AbstractFixedLengthPZParser extends AbstractPZParser { + + protected AbstractFixedLengthPZParser(File dataSource, String dataDefinition) { + super(dataSource, dataDefinition); + } + + protected AbstractFixedLengthPZParser(File dataSource) { + super(dataSource); + } + + protected AbstractFixedLengthPZParser(InputStream dataSourceStream, String dataDefinition) { + super(dataSourceStream, dataDefinition); + } + + protected AbstractFixedLengthPZParser(InputStream dataSourceStream) { + super(dataSourceStream); + } + + public IDataSet doParse() { + try { + if (getDataSourceStream() != null) { + return doFixedLengthFile(getDataSourceStream()); + } else { + InputStream stream; + stream = ParserUtils.createInputStream(getDataSource()); + try { + return doFixedLengthFile(stream); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } finally { + if (stream != null) { + stream.close(); + } + } + } + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + /* + * This is the new version of doDelimitedFile using InputStrem instead of + * File. This is more flexible especially it is working with WebStart. + * + * puts together the dataset for fixed length file. This is used for PZ XML + * mappings, and SQL table mappings + */ + private IDataSet doFixedLengthFile(final InputStream dataSource) throws IOException { + InputStreamReader isr = null; + BufferedReader br = null; + + DefaultDataSet ds = new DefaultDataSet(getColumnMD()); + + try { + final Map recordLengths = ParserUtils.calculateRecordLengths(getColumnMD()); + + // Read in the flat file + isr = new InputStreamReader(dataSource); + br = new BufferedReader(isr); + String line = null; + int lineCount = 0; + // map of record lengths corrisponding to the ID's in the columnMD + // array + // loop through each line in the file + while ((line = br.readLine()) != null) { + lineCount++; + // empty line skip past it + if (line.trim().length() == 0) { + continue; + } + + final String mdkey = FixedWidthParserUtils.getCMDKey(getColumnMD(), line); + final int recordLength = ((Integer) recordLengths.get(mdkey)).intValue(); + + // Incorrect record length on line log the error. Line will not + // be included in the + // dataset + if (line.length() > recordLength) { + addError(ds, "LINE TOO LONG. LINE IS " + line.length() + " LONG. SHOULD BE " + recordLength, lineCount, 2); + continue; + } else if (line.length() < recordLength) { + if (isHandlingShortLines()) { + // We can pad this line out + line += ParserUtils.padding(recordLength - line.length(), ' '); + + // log a warning + addError(ds, "PADDED LINE TO CORRECT RECORD LENGTH", lineCount, 1); + + } else { + addError(ds, "LINE TOO SHORT. LINE IS " + line.length() + " LONG. SHOULD BE " + recordLength, lineCount, + 2); + continue; + } + } + + // int recPosition = 1; + final Row row = new Row(); + row.setMdkey(mdkey.equals(PZConstants.DETAIL_ID) ? null : mdkey); // try + + final List cmds = ParserUtils.getColumnMetaData(mdkey, getColumnMD()); + row.addColumn(FixedWidthParserUtils.splitFixedText(cmds, line)); + // to limit the memory use + // Build the columns for the row + // for (int i = 0; i < cmds.size(); i++) { + // final String tempValue = line.substring(recPosition - 1, + // recPosition + // + (((ColumnMetaData) cmds.get(i)).getColLength() - 1)); + // recPosition += ((ColumnMetaData) cmds.get(i)).getColLength(); + // row.addColumn(tempValue.trim()); + // } + row.setRowNumber(lineCount); + // add the row to the array + ds.addRow(row); + } + } finally { + if (isr != null) { + isr.close(); + } + if (br != null) { + br.close(); + } + } + return ds; + } +} Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java 2006-10-27 14:06:22 UTC (rev 142) @@ -0,0 +1,140 @@ +/** + * + */ +package net.sf.pzfilereader; + +import java.io.File; +import java.io.InputStream; +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * @author xhensevb + * + */ +public abstract class AbstractPZParser implements PZParser { + + private boolean handlingShortLines = false; + + private boolean initialised = false; + + /** Map of column metadata's */ + private Map columnMD = null; + + private String dataDefinition = null; + + private InputStream dataSourceStream = null; + + private File dataSource = null; + + protected AbstractPZParser(File dataSource) { + this.dataSource = dataSource; + } + + protected AbstractPZParser(InputStream dataSourceStream) { + this.dataSourceStream = dataSourceStream; + } + + protected AbstractPZParser(File dataSource, String dataDefinition) { + this.dataSource = dataSource; + this.dataDefinition = dataDefinition; + } + + protected AbstractPZParser(InputStream dataSourceStream, String dataDefinition) { + this.dataSourceStream = dataSourceStream; + this.dataDefinition = dataDefinition; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParser#isHandlingShortLines() + */ + public boolean isHandlingShortLines() { + return handlingShortLines; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParser#setHandlingShortLines(boolean) + */ + public void setHandlingShortLines(boolean handleShortLines) { + this.handlingShortLines = handleShortLines; + } + + public final IDataSet parse() { + if (!initialised) { + init(); + } + return doParse(); + } + + protected abstract IDataSet doParse(); + + protected abstract void init(); + + protected void setColumnMD(final Map map) { + columnMD = map; + } + + protected void addToColumnMD(final Object key, final Object value) { + if (columnMD == null) { + columnMD = new LinkedHashMap(); + } + columnMD.put(key, value); + } + + protected boolean isInitialised() { + return initialised; + } + + protected void setInitialised(boolean initialised) { + this.initialised = initialised; + } + + protected String getDataDefinition() { + return dataDefinition; + } + + protected void setDataDefinition(String dataDefinition) { + this.dataDefinition = dataDefinition; + } + + protected File getDataSource() { + return dataSource; + } + + protected void setDataSource(File dataSource) { + this.dataSource = dataSource; + } + + protected InputStream getDataSourceStream() { + return dataSourceStream; + } + + protected void setDataSourceStream(InputStream dataSourceStream) { + this.dataSourceStream = dataSourceStream; + } + + protected Map getColumnMD() { + return columnMD; + } + + /** + * Adds a new error to this DataSet. These can be collected, and retreived + * after processing + * + * @param errorDesc - + * String description of error + * @param lineNo - + * int line number error occured on + * @param errorLevel - + * int errorLevel 1,2,3 1=warning 2=error 3= severe error + */ + protected void addError(final DefaultDataSet ds, final String errorDesc, final int lineNo, final int errorLevel) { + final DataError de = new DataError(errorDesc,lineNo,errorLevel); + ds.addError(de); + } + +} Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java 2006-10-27 14:06:22 UTC (rev 142) @@ -0,0 +1,100 @@ +/** + * + */ +package net.sf.pzfilereader; + +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import net.sf.pzfilereader.structure.ColumnMetaData; +import net.sf.pzfilereader.util.PZConstants; +import net.sf.pzfilereader.util.ParserUtils; + +/** + * @author xhensevb + * + */ +public class DBDelimiterPZParser extends AbstractDelimiterPZParser { + + private Connection con; + + public DBDelimiterPZParser(Connection con, InputStream dataSourceStream, String dataDefinition, char delimiter, + char qualifier, boolean ignoreFirstRecord) { + super(dataSourceStream, dataDefinition, delimiter, qualifier, ignoreFirstRecord); + this.con = con; + } + + protected void init() { + ResultSet rs = null; + PreparedStatement stmt = null; + + try { + final String sql = "SELECT * FROM DATAFILE INNER JOIN DATASTRUCTURE ON " + + "DATAFILE.DATAFILE_NO = DATASTRUCTURE.DATAFILE_NO " + "WHERE DATAFILE.DATAFILE_DESC = '" + + getDataDefinition() + "' " + "ORDER BY DATASTRUCTURE_COL_ORDER"; + + stmt = con.prepareStatement(sql); // always use PreparedStatement + // as the DB can do clever things. + rs = stmt.executeQuery(); + + int recPosition = 1; + final List cmds = new ArrayList(); + // put array of columns together. These will be used to put together + // the dataset when reading in the file + while (rs.next()) { + + final ColumnMetaData column = new ColumnMetaData(); + column.setColName(rs.getString("DATASTRUCTURE_COLUMN")); + column.setColLength(rs.getInt("DATASTRUCTURE_LENGTH")); + column.setStartPosition(recPosition); + column.setEndPosition(recPosition + (rs.getInt("DATASTRUCTURE_LENGTH") - 1)); + recPosition += rs.getInt("DATASTRUCTURE_LENGTH"); + + cmds.add(column); + } + + addToColumnMD(PZConstants.DETAIL_ID, cmds); + addToColumnMD(PZConstants.COL_IDX, ParserUtils.buidColumnIndexMap(cmds)); + + if (cmds.isEmpty()) { + throw new FileNotFoundException("DATA DEFINITION CAN NOT BE FOUND IN THE DATABASE " + getDataDefinition()); + } + + // read in the fixed length file and construct the DataSet object + // doFixedLengthFile(dataSourceStream); + setInitialised(true); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } finally { + try { + if (rs != null) { + rs.close(); + } + if (stmt != null) { + stmt.close(); + } + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + + public IDataSet doParse() { + return null; + } + + protected boolean shouldCreateMDFromFile() { + return true; + } +} Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java 2006-10-27 14:06:22 UTC (rev 142) @@ -0,0 +1,101 @@ +/** + * + */ +package net.sf.pzfilereader; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import net.sf.pzfilereader.structure.ColumnMetaData; +import net.sf.pzfilereader.util.PZConstants; +import net.sf.pzfilereader.util.ParserUtils; + +/** + * @author xhensevb + * + */ +public class DBFixedLengthPZParser extends AbstractFixedLengthPZParser { + + private Connection con; + + public DBFixedLengthPZParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition) { + super(dataSourceStream, dataDefinition); + this.con = con; + } + + public DBFixedLengthPZParser(Connection con, File dataSource, String dataDefinition) { + super(dataSource, dataDefinition); + this.con = con; + } + + protected void init() { + ResultSet rs = null; + PreparedStatement stmt = null; + + try { + final String sql = "SELECT * FROM DATAFILE INNER JOIN DATASTRUCTURE ON " + + "DATAFILE.DATAFILE_NO = DATASTRUCTURE.DATAFILE_NO " + "WHERE DATAFILE.DATAFILE_DESC = '" + + getDataDefinition() + "' " + "ORDER BY DATASTRUCTURE_COL_ORDER"; + + stmt = con.prepareStatement(sql); // always use PreparedStatement + // as the DB can do clever things. + rs = stmt.executeQuery(); + + int recPosition = 1; + final List cmds = new ArrayList(); + // put array of columns together. These will be used to put together + // the dataset when reading in the file + while (rs.next()) { + + final ColumnMetaData column = new ColumnMetaData(); + column.setColName(rs.getString("DATASTRUCTURE_COLUMN")); + column.setColLength(rs.getInt("DATASTRUCTURE_LENGTH")); + column.setStartPosition(recPosition); + column.setEndPosition(recPosition + (rs.getInt("DATASTRUCTURE_LENGTH") - 1)); + recPosition += rs.getInt("DATASTRUCTURE_LENGTH"); + + cmds.add(column); + } + + addToColumnMD(PZConstants.DETAIL_ID, cmds); + addToColumnMD(PZConstants.COL_IDX, ParserUtils.buidColumnIndexMap(cmds)); + + if (cmds.isEmpty()) { + throw new FileNotFoundException("DATA DEFINITION CAN NOT BE FOUND IN THE DATABASE " + getDataDefinition()); + } + + // read in the fixed length file and construct the DataSet object + // doFixedLengthFile(dataSourceStream); + setInitialised(true); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } finally { + try { + if (rs != null) { + rs.close(); + } + if (stmt != null) { + stmt.close(); + } + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + + public IDataSet doParse() { + return null; + } +} Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java 2006-10-27 14:06:22 UTC (rev 142) @@ -0,0 +1,426 @@ +/** + * + */ +package net.sf.pzfilereader; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +import net.sf.pzfilereader.ordering.OrderBy; +import net.sf.pzfilereader.structure.ColumnMetaData; +import net.sf.pzfilereader.structure.Row; +import net.sf.pzfilereader.util.PZConstants; +import net.sf.pzfilereader.util.ParserUtils; + +/** + * @author xhensevb + * + */ +public class DefaultDataSet implements IDataSet { + private List rows = new ArrayList(); + + private List errors = new ArrayList(); + + /** Pointer for the current row in the array we are on */ + private int pointer = -1; + + /** flag to indicate if data should be pulled as lower case */ + private boolean lowerCase = false; + + /** flag to inidicate if data should be pulled as upper case */ + private boolean upperCase = false; + + /** + * flag to indicate if a strict parse should be used when getting doubles + * and ints + */ + private boolean strictNumericParse = false; + + private Map columnMD; + + public DefaultDataSet(Map columnMD2) { + this.columnMD = columnMD2; + } + + public void addRow(Row row) { + rows.add(row); + } + + public void addError(DataError dataError) { + errors.add(dataError); + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#getColumns() + */ + public String[] getColumns() { + ColumnMetaData column = null; + String[] array = null; + + if (columnMD != null) { + final List cmds = ParserUtils.getColumnMetaData(PZConstants.DETAIL_ID, columnMD); + + array = new String[cmds.size()]; + for (int i = 0; i < cmds.size(); i++) { + column = (ColumnMetaData) cmds.get(i); + array[i] = column.getColName(); + } + } + + return array; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#getColumns(java.lang.String) + */ + public String[] getColumns(String recordID) { + String[] array = null; + + if (columnMD != null) { + final List cmds = ParserUtils.getColumnMetaData(recordID, columnMD); + array = new String[cmds.size()]; + for (int i = 0; i < cmds.size(); i++) { + final ColumnMetaData column = (ColumnMetaData) cmds.get(i); + array[i] = column.getColName(); + } + } + + return array; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#getDate(java.lang.String) + */ + public Date getDate(String column) throws ParseException { + final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + final Row row = (Row) rows.get(pointer); + final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); + return sdf.parse(s); + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#getDate(java.lang.String, + * java.text.SimpleDateFormat) + */ + public Date getDate(String column, SimpleDateFormat sdf) throws ParseException { + final Row row = (Row) rows.get(pointer); + final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); + return sdf.parse(s); + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#getDouble(java.lang.String) + */ + public double getDouble(String column) { + final StringBuffer newString = new StringBuffer(); + final Row row = (Row) rows.get(pointer); + + final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); + + if (!strictNumericParse) { + if (s.trim().length() == 0) { + return 0; + } + for (int i = 0; i < s.length(); i++) { + final char c = s.charAt(i); + if (c >= '0' && c <= '9' || c == '.' || c == '-') { + newString.append(c); + } + } + if (newString.length() == 0 || (newString.length() == 1 && newString.toString().equals(".")) + || (newString.length() == 1 && newString.toString().equals("-"))) { + newString.append("0"); + } + } else { + newString.append(s); + } + + return Double.parseDouble(newString.toString()); + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#getErrorCount() + */ + public int getErrorCount() { + if (getErrors() != null) { + return getErrors().size(); + } + + return 0; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#getErrors() + */ + public List getErrors() { + return errors; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#getIndex() + */ + public int getIndex() { + return pointer; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#getInt(java.lang.String) + */ + public int getInt(String column) { + final StringBuffer newString = new StringBuffer(); + final Row row = (Row) rows.get(pointer); + final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); + + if (!strictNumericParse) { + if (s.trim().length() == 0) { + return 0; + } + for (int i = 0; i < s.length(); i++) { + final char c = s.charAt(i); + if (c >= '0' && c <= '9' || c == '-') { + newString.append(c); + } + } + // check to make sure we do not have a single length string with + // just a minus sign + if (newString.length() == 0 || (newString.length() == 1 && newString.toString().equals("-"))) { + newString.append("0"); + } + } else { + newString.append(s); + } + + return Integer.parseInt(newString.toString()); + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#getRowCount() + */ + public int getRowCount() { + return rows.size(); + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#getRowNo() + */ + public int getRowNo() { + return ((Row) rows.get(pointer)).getRowNumber(); + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#getRows() + */ + public List getRows() { + return rows; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#getString(java.lang.String) + */ + public String getString(String column) { + final Row row = (Row) rows.get(pointer); + final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); + + if (upperCase) { + // convert data to uppercase before returning + // return row.getValue(ParserUtils.findColumn(column, + // cmds)).toUpperCase(Locale.getDefault()); + return s.toUpperCase(Locale.getDefault()); + } + + if (lowerCase) { + // convert data to lowercase before returning + // return row.getValue(ParserUtils.findColumn(column, + // cmds)).toLowerCase(Locale.getDefault()); + return s.toLowerCase(Locale.getDefault()); + } + + // return value as how it is in the file + return s; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#goBottom() + */ + public void goBottom() { + pointer = rows.size() - 1; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#goTop() + */ + public void goTop() { + pointer = -1; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#isAnError(int) + */ + public boolean isAnError(int lineNo) { + for (int i = 0; i < errors.size(); i++) { + if (((DataError) errors.get(i)).getLineNo() == lineNo && ((DataError) errors.get(i)).getErrorLevel() > 1) { + return true; + } + } + return false; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#next() + */ + public boolean next() { + if (pointer < rows.size() && pointer + 1 != rows.size()) { + pointer++; + return true; + } + return false; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#orderRows(net.sf.pzfilereader.ordering.OrderBy) + */ + public void orderRows(OrderBy ob) throws Exception { + // PZ try to handle other <records> by sending them to + // the bottom of the sort + // if (columnMD.size() > 1) { + // throw new Exception("orderRows does not currently support ordering + // with <RECORD> mappings"); + // } + if (ob != null && rows != null) { + final List cmds = ParserUtils.getColumnMetaData(PZConstants.DETAIL_ID, columnMD); + ob.setColumnMD(cmds); + Collections.sort(rows, ob); + goTop(); + } + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#previous() + */ + public boolean previous() { + if (pointer <= 0) { + return false; + } + pointer--; + return true; + } + + /** + * Sets data in the DataSet to lowercase + */ + public void setLowerCase() { + upperCase = false; + lowerCase = true; + } + + /** + * Sets data in the DataSet to uppercase + */ + public void setUpperCase() { + upperCase = true; + lowerCase = false; + } + + /** + * Checks to see if the row has the given <RECORD> id + * + * @param recordID + * @return boolean + */ + public boolean isRecordID(final String recordID) { + String rowID = ((Row) rows.get(pointer)).getMdkey(); + if (rowID == null) { + rowID = PZConstants.DETAIL_ID; + } + + return rowID.equals(recordID); + } + + /** + * Sets the absolute position of the record pointer + * + * @param localPointer - + * int + * @exception IndexOutOfBoundsException + */ + public void absolute(final int localPointer) { + if (localPointer < 0 || localPointer > rows.size() - 1) { + throw new IndexOutOfBoundsException("INVALID POINTER LOCATION: " + localPointer); + } + + pointer = localPointer; + } + + /** + * Setting this to True will parse text as is and throw a + * NumberFormatException. Setting to false, which is the default, will + * remove any non numeric charcter from the field. The remaining numeric + * chars's will be returned. If it is an empty string,or there are no + * numeric chars, 0 will be returned for getInt() and getDouble() + * + * @param strictNumericParse + * The strictNumericParse to set. + */ + public void setStrictNumericParse(final boolean strictNumericParse) { + this.strictNumericParse = strictNumericParse; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.IDataSet#remove() + */ + public void remove() { + rows.remove(pointer); + pointer--; + } + + void setColumnMD(Map columnMD) { + this.columnMD = columnMD; + } + +} Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultPZParserFactory.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultPZParserFactory.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultPZParserFactory.java 2006-10-27 14:06:22 UTC (rev 142) @@ -0,0 +1,142 @@ +/* + * ObjectLab, http://www.objectlab.co.uk/open is supporting PZFileReader. + * + * Based in London, we are world leaders in the design and development + * of bespoke applications for the securities financing markets. + * + * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> + * ___ _ _ _ _ _ + * / _ \| |__ (_) ___ ___| |_| | __ _| |__ + * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ + * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | + * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ + * |__/ + * + * www.ObjectLab.co.uk + * + * $Id: ColorProvider.java 74 2006-10-24 22:19:05Z benoitx $ + * + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package net.sf.pzfilereader; + +import java.io.File; +import java.io.InputStream; +import java.sql.Connection; + +/** + * @author xhensevb + * + */ +public class DefaultPZParserFactory implements PZParserFactory { + private static final DefaultPZParserFactory INSTANCE = new DefaultPZParserFactory(); + + public static PZParserFactory getInstance() { + return INSTANCE; + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParserFactory#newFixedWidthParser(java.sql.Connection, + * java.io.File, java.lang.String) + */ + public PZParser newFixedLengthParser(Connection con, File dataSource, String dataDefinition) { + return new DBFixedLengthPZParser(con, dataSource, dataDefinition); + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParserFactory#newFixedWidthParser(java.sql.Connection, + * java.io.InputStream, java.lang.String) + */ + public PZParser newFixedLengthParser(Connection con, InputStream dataSourceStream, String dataDefinition) { + return new DBFixedLengthPZParser(con, dataSourceStream, dataDefinition); + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.File, + * java.io.File) + */ + public PZParser newFixedLengthParser(File pzmapXML, File dataSource) { + return new FixedLengthPZParser(pzmapXML, dataSource); + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.InputStream, + * java.io.InputStream) + */ + public PZParser newFixedLengthParser(InputStream pzmapXMLStream, InputStream dataSourceStream) { + return new FixedLengthPZParser(pzmapXMLStream, dataSourceStream); + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParserFactory#newParser(java.sql.Connection, + * java.io.InputStream, java.lang.String, char, char, boolean) + */ + public PZParser newDelimitedParser(Connection con, InputStream dataSourceStream, String dataDefinition, char delimiter, + char qualifier, boolean ignoreFirstRecord) { + return new DBDelimiterPZParser(con, dataSourceStream, dataDefinition, delimiter, qualifier, ignoreFirstRecord); + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.File, + * java.io.File, char, char, boolean) + */ + public PZParser newDelimitedParser(File pzmapXML, File dataSource, char delimiter, char qualifier, boolean ignoreFirstRecord) { + return new DelimiterPZParser(pzmapXML, dataSource, delimiter, qualifier, ignoreFirstRecord); + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.InputStream, + * java.io.InputStream, char, char, boolean) + */ + public PZParser newDelimitedParser(InputStream pzmapXMLStream, InputStream dataSourceStream, char delimiter, char qualifier, + boolean ignoreFirstRecord) { + return new DelimiterPZParser(pzmapXMLStream, dataSourceStream, delimiter, qualifier, ignoreFirstRecord); + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.File, char, + * char) + */ + public PZParser newDelimitedParser(File dataSource, char delimiter, char qualifier) { + return new DelimiterPZParser(dataSource, delimiter, qualifier, false); + } + + /* + * (non-Javadoc) + * + * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.InputStream, + * char, char) + */ + public PZParser newDelimitedParser(InputStream dataSourceStream, char delimiter, char qualifier) { + return new DelimiterPZParser(dataSourceStream, delimiter, qualifier, false); + } + +} Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java 2006-10-27 14:06:22 UTC (rev 142) @@ -0,0 +1,68 @@ +/** + * + */ +package net.sf.pzfilereader; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; + +import net.sf.pzfilereader.util.ParserUtils; +import net.sf.pzfilereader.xml.PZMapParser; + +import org.jdom.JDOMException; + +/** + * @author xhensevb + * + */ +public class DelimiterPZParser extends AbstractDelimiterPZParser { + private InputStream pzmapXMLStream = null; + + private File pzmapXML = null; + + public DelimiterPZParser(File pzmapXML, File dataSource, char delimiter, char qualifier, boolean ignoreFirstRecord) { + super(dataSource, delimiter, qualifier, ignoreFirstRecord); + this.pzmapXML = pzmapXML; + } + + public DelimiterPZParser(InputStream pzmapXMLStream, InputStream dataSourceStream, char delimiter, char qualifier, + boolean ignoreFirstRecord) { + super(dataSourceStream, delimiter, qualifier, ignoreFirstRecord); + this.pzmapXMLStream = pzmapXMLStream; + } + + public DelimiterPZParser(File dataSource, char delimiter, char qualifier, boolean ignoreFirstRecord) { + super(dataSource, delimiter, qualifier, ignoreFirstRecord); + } + + public DelimiterPZParser(InputStream dataSourceStream, char delimiter, char qualifier, boolean ignoreFirstRecord) { + super(dataSourceStream, delimiter, qualifier, ignoreFirstRecord); + } + + protected void init() throws InitialisationException { + try { + if (pzmapXMLStream != null) { + setColumnMD(PZMapParser.parse(pzmapXMLStream)); + } else if (pzmapXML != null) { + InputStream stream = ParserUtils.createInputStream(pzmapXML); + try { + setColumnMD(PZMapParser.parse(stream)); + } finally { + if (stream != null) { + stream.close(); + } + } + } + setInitialised(true); + } catch (JDOMException e) { + throw new InitialisationException(e); + } catch (IOException e) { + throw new InitialisationException(e); + } + } + + protected boolean shouldCreateMDFromFile() { + return pzmapXML == null && pzmapXMLStream == null; + } +} \ No newline at end of file Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java 2006-10-27 14:06:22 UTC (rev 142) @@ -0,0 +1,54 @@ +/** + * + */ +package net.sf.pzfilereader; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; + +import net.sf.pzfilereader.util.ParserUtils; +import net.sf.pzfilereader.xml.PZMapParser; + +import org.jdom.JDOMException; + +/** + * @author xhensevb + * + */ +public class FixedLengthPZParser extends AbstractFixedLengthPZParser { + private InputStream pzmapXMLStream; + + private File pzmapXML; + + public FixedLengthPZParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream) { + super(dataSourceStream); + this.pzmapXMLStream = pzmapXMLStream; + } + + public FixedLengthPZParser(File pzmapXML, File dataSource) { + super(dataSource); + this.pzmapXML = pzmapXML; + } + + protected void init() throws InitialisationException { + try { + if (pzmapXMLStream != null) { + setColumnMD(PZMapParser.parse(pzmapXMLStream)); + } else { + InputStream stream = ParserUtils.createInputStream(pzmapXML); + try { + setColumnMD(PZMapParser.parse(stream)); + } finally { + if (stream != null) { + stream.close(); + } + } + } + } catch (JDOMException e) { + throw new InitialisationException(e); + } catch (IOException e) { + throw new InitialisationException(e); + } + } +} Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/IDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/IDataSet.java 2006-10-27 11:55:43 UTC (rev 141) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/IDataSet.java 2006-10-27 14:06:22 UTC (rev 142) @@ -219,4 +219,42 @@ List getRows(); + /** + * Sets data in the DataSet to lowercase + */ + void setLowerCase(); + + /** + * Sets data in the DataSet to uppercase + */ + void setUpperCase(); + + /** + * Checks to see if the row has the given <RECORD> id + * + * @param recordID + * @return boolean + */ + boolean isRecordID(final String recordID); + + /** + * Sets the absolute position of the record pointer + * + * @param localPointer - + * int + * @exception IndexOutOfBoundsException + */ + void absolute(final int localPointer); + + /** + * Setting this to True will parse text as is and throw a + * NumberFormatException. Setting to false, which is the default, will + * remove any non numeric charcter from the field. The remaining numeric + * chars's will be returned. If it is an empty string,or there are no + * numeric chars, 0 will be returned for getInt() and getDouble() + * + * @param strictNumericParse + * The strictNumericParse to set. + */ + void setStrictNumericParse(final boolean strictNumericParse); } \ No newline at end of file Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/InitialisationException.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/InitialisationException.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/InitialisationException.java 2006-10-27 14:06:22 UTC (rev 142) @@ -0,0 +1,40 @@ +/** + * + */ +package net.sf.pzfilereader; + +/** + * @author xhensevb + * + */ +public class InitialisationException extends RuntimeException { + private static final long serialVersionUID = -4181701730609348676L; + + /** + * + */ + public InitialisationException() { + } + + /** + * @param message + */ + public InitialisationException(String message) { + super(message); + } + + /** + * @param cause + */ + public InitialisationException(Throwable cause) { + super(cause); + } + + /** + * @param message + * @param cause + */ + public InitialisationException(String message, Throwable cause) { + super(message, cause); + } +} Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java 2006-10-27 11:55:43 UTC (rev 141) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java 2006-10-27 14:06:22 UTC (rev 142) @@ -137,7 +137,7 @@ * @param ignoreFirstRecord - * skips the first line that contains data in the file */ - PZParser newParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition, + PZParser newDelimitedParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition, final char delimiter, final char qualifier, final boolean ignoreFirstRecord); /** @@ -160,7 +160,7 @@ * @param ignoreFirstRecord - * skips the first line that contains data in the file */ - PZParser newParser(final File pzmapXML, final File dataSource, final char delimiter, final char qualifier, + PZParser newDelimitedParser(final File pzmapXML, final File dataSource, final char delimiter, final char qualifier, ... [truncated message content] |
From: <be...@us...> - 2006-10-31 22:47:30
|
Revision: 165 http://svn.sourceforge.net/pzfilereader/?rev=165&view=rev Author: benoitx Date: 2006-10-31 14:47:08 -0800 (Tue, 31 Oct 2006) Log Message: ----------- Paul, some interesting new methods, the BX parser (sorry about the name) seems to be significantly faster than the current one when there are NO qualifiers, If there are qualifiers, it is reasonably faster. But the interesting bits start when I created a new method that uses a StringBuffer rather than using "chunks". The new method is flying when there are qualifiers all over the place... but is slower (albeit not slower than the current one) when there are no qualifier... and that is a bit of a mystery... anyway... getting too late... Have a look and let me know. Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/BXParser.java trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/BXParserTest.java trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/Examples.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/BXParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/BXParser.java 2006-10-31 20:47:02 UTC (rev 164) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/BXParser.java 2006-10-31 22:47:08 UTC (rev 165) @@ -12,8 +12,12 @@ */ public class BXParser { public static List splitLine(String line, final char delimiter, char qualifier) { - List list = new ArrayList(); + return splitLine(line, delimiter, qualifier, 10); + } + public static List splitLine(String line, final char delimiter, char qualifier, int initialSize) { + List list = new ArrayList(initialSize); + if (delimiter == 0) { list.add(line); return list; @@ -39,7 +43,6 @@ for (int i = 0; i < size; i++) { final char currentChar = trimmedLine.charAt(i); - if (currentChar != delimiter && currentChar != qualifier) { previousChar = currentChar; endBlock = i + 1; @@ -52,10 +55,9 @@ String trimmed = trimmedLine.substring(startBlock, endBlock > startBlock ? endBlock : startBlock + 1); if (!blockWasInQualifier) { trimmed = trimmed.trim(); + trimmed = trimmed.replaceAll(doubleQualifier, String.valueOf(qualifier)); } - trimmed = trimmed.replaceAll(doubleQualifier, String.valueOf(qualifier)); - if (trimmed.length() == 1 && (trimmed.charAt(0) == delimiter || trimmed.charAt(0) == qualifier)) { list.add(""); } else { @@ -83,7 +85,6 @@ } } } - // antepenultimateChar = previousChar; previousChar = currentChar; } @@ -105,4 +106,108 @@ return list; } + + public static List splitLineWithBuf(String line, final char delimiter, char qualifier, int initialSize) { + List list = new ArrayList(initialSize); + + if (delimiter == 0) { + list.add(line); + return list; + } else if (line == null) { + return list; + } + + final String trimmedLine = line.trim(); + int size = trimmedLine.length(); + + if (size == 0) { + list.add(""); + return list; + } + + boolean insideQualifier = false; + char previousChar = 0; + boolean blockWasInQualifier = false; + StringBuffer buf = new StringBuffer(32); + + // final String doubleQualifier = String.valueOf(qualifier) + + // String.valueOf(qualifier); + for (int i = 0; i < size; i++) { + final char currentChar = trimmedLine.charAt(i); + if (currentChar != delimiter && currentChar != qualifier) { + previousChar = currentChar; + if (' ' != currentChar || insideQualifier || buf.length() > 0) { + buf.append(currentChar); + } + continue; + } + + if (currentChar == delimiter) { + // we've found the delimiter (eg ,) + if (!insideQualifier) { + // String trimmed = trimmedLine.substring(startBlock, + // endBlock > startBlock ? endBlock : startBlock + 1); + String trimmed = buf.toString(); + if (!blockWasInQualifier) { + trimmed = trimmed.trim(); + // trimmed = trimmed.replaceAll(doubleQualifier, + // String.valueOf(qualifier)); + } + + if (trimmed.length() == 1 && (trimmed.charAt(0) == delimiter || trimmed.charAt(0) == qualifier)) { + list.add(""); + } else { + list.add(trimmed); + } + blockWasInQualifier = false; + buf.delete(0, buf.length()); + } else if (buf.length() != 1 || buf.charAt(0) != qualifier) { + buf.append(currentChar); + } else { + buf.delete(0, buf.length()); + insideQualifier = false; + list.add(""); + } + } else if (currentChar == qualifier) { + if (!insideQualifier && previousChar != qualifier) { + if (previousChar == delimiter || previousChar == 0 || previousChar == ' ') { + insideQualifier = true; + int l = buf.length(); + if (l > 0) { + buf.delete(0, l); // just entered a + // qualifier, remove + // whatever was + } + } else { + buf.append(currentChar); + } + } else { + insideQualifier = false; + blockWasInQualifier = true; + if (previousChar == qualifier) { + buf.append(qualifier); + insideQualifier = true; + previousChar = 0; + continue; + } + // last column (e.g. finishes with ") + if (i == size - 1) { + // list.add(trimmedLine.substring(startBlock, size - + // 1)); + list.add(buf.toString()); + buf.delete(0, buf.length()); + } + } + } + previousChar = currentChar; + } + + if (buf.length() > 0) { + list.add(buf.toString().trim()); + } else if (trimmedLine.charAt(size - 1) == delimiter) { + list.add(""); + } + + return list; + } } Modified: trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/BXParserTest.java =================================================================== --- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/BXParserTest.java 2006-10-31 20:47:02 UTC (rev 164) +++ trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/BXParserTest.java 2006-10-31 22:47:08 UTC (rev 165) @@ -44,7 +44,7 @@ final String txtToParse = UnitTestUtils.buildDelimString(DELIMITED_DATA_NO_BREAKS, d, q); - final List splitLineResults = BXParser.splitLine(txtToParse, d, q); + final List splitLineResults = BXParser.splitLineWithBuf(txtToParse, d, q, 10); // check to make sure we have the same amount of elements which were // expected @@ -64,7 +64,7 @@ * Test with any line breaks * */ - public void NOtestLineBreaks() { + public void testLineBreaks() { // loop down all delimiter qualifier pairs to test for (int i = 0; i < DELIM_QUAL_PAIR.length; i++) { final char d = DELIM_QUAL_PAIR[i][0]; @@ -72,7 +72,7 @@ final String txtToParse = UnitTestUtils.buildDelimString(DELIMITED_DATA_WITH_BREAKS, d, q); - final List splitLineResults = BXParser.splitLine(txtToParse, d, q); + final List splitLineResults = BXParser.splitLineWithBuf(txtToParse, d, q, 10); // check to make sure we have the same amount of elements which were // expected @@ -92,7 +92,7 @@ * data */ public void testMalformedData() { - final List splitLineResults = BXParser.splitLine(DELIMITED_BAD_DATA, ',', '\"'); + final List splitLineResults = BXParser.splitLineWithBuf(DELIMITED_BAD_DATA, ',', '\"', 10); assertEquals("Expecting 2 Data Elements From The Malformed Data", 2, splitLineResults.size()); } @@ -134,7 +134,7 @@ } private void check(final String txtToParse, final char delim, final char qualifier, final String[] expected) { - final List splitLineResults = BXParser.splitLine(txtToParse, delim, qualifier); + final List splitLineResults = BXParser.splitLineWithBuf(txtToParse, delim, qualifier, 10); assertEquals( "Did Not Get Amount Of Elements Expected (d = " + delim + " q = " + qualifier + ") txt [" + txtToParse + "]", 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-31 20:47:02 UTC (rev 164) +++ trunk/PZFileReaderSamples/src/main/java/net/sf/pzfilereader/examples/Examples.java 2006-10-31 22:47:08 UTC (rev 165) @@ -252,11 +252,11 @@ public void doTestParsers() { final int repeat = ConsoleMenu.getInt("How many times?", 1000); - final int characters = ConsoleMenu.getInt("How many columns?", 100); + final int numberOfCols = ConsoleMenu.getInt("How many columns?", 100); final boolean qualif = ConsoleMenu.getBoolean("With qualifier?", true); StringBuilder aRow = new StringBuilder(); - for (int i = 0; i < characters; i++) { + for (int i = 0; i < numberOfCols; i++) { if (qualif) { aRow.append("\""); } @@ -277,14 +277,21 @@ System.out.println("ParserUtil " + (stop - start) + " ms."); start = System.currentTimeMillis(); - StringBuffer sb = new StringBuffer(); for (int i = 0; i < repeat; i++) { - BXParser.splitLine(line, ',', '\"'); + BXParser.splitLine(line, ',', '\"', numberOfCols); } stop = System.currentTimeMillis(); System.out.println("BXParser " + (stop - start) + " ms."); + start = System.currentTimeMillis(); + for (int i = 0; i < repeat; i++) { + BXParser.splitLineWithBuf(line, ',', '\"', numberOfCols); + } + stop = System.currentTimeMillis(); + + System.out.println("BXParser with buf " + (stop - start) + " ms."); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2007-05-25 11:12:16
|
Revision: 312 http://svn.sourceforge.net/pzfilereader/?rev=312&view=rev Author: benoitx Date: 2007-05-25 04:12:17 -0700 (Fri, 25 May 2007) Log Message: ----------- Ooops, would be better if the new classes were checked in... Modified Paths: -------------- trunk/PZFileReader/qalab.xml trunk/PZFileReaderSamples/qalab.xml Added Paths: ----------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/PZStringUtils.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMetaData.java Modified: trunk/PZFileReader/qalab.xml =================================================================== --- trunk/PZFileReader/qalab.xml 2007-05-24 22:58:30 UTC (rev 311) +++ trunk/PZFileReader/qalab.xml 2007-05-25 11:12:17 UTC (rev 312) @@ -199,6 +199,18 @@ project="default" statvalue="36" type="cobertura-branch"/> <summaryresult date="2007-02-11" filecount="2" module="default" project="default" statvalue="2" type="pmd"/> + <summaryresult date="2007-05-24" filecount="44" module="default" + project="default" statvalue="17" type="checkstyle"/> + <summaryresult date="2007-05-24" filecount="1" module="default" + project="default" statvalue="1" type="findbugs"/> + <summaryresult date="2007-05-24" filecount="6" module="default" + project="default" statvalue="118" type="simian"/> + <summaryresult date="2007-05-24" filecount="37" module="default" + project="default" statvalue="29" type="cobertura-line"/> + <summaryresult date="2007-05-24" filecount="37" module="default" + project="default" statvalue="37" type="cobertura-branch"/> + <summaryresult date="2007-05-24" filecount="1" module="default" + project="default" statvalue="1" type="pmd"/> </summary> <file id="default-default-com_pz_reader_ordering_package.html" module="default" path="com/pz/reader/ordering/package.html" project="default"> @@ -522,6 +534,8 @@ <result date="2006-12-16" statvalue="100" type="cobertura-branch"/> <result date="2007-01-18" statvalue="100" type="cobertura-branch"/> <result date="2007-02-11" statvalue="100" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="62" type="cobertura-line"/> + <result date="2007-05-24" statvalue="100" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_DataSet.java" module="default" path="net/sf/pzfilereader/DataSet.java" project="default"> @@ -561,6 +575,10 @@ <result date="2007-01-18" statvalue="100" type="cobertura-branch"/> <result date="2007-02-11" statvalue="100" type="cobertura-line"/> <result date="2007-02-11" statvalue="100" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="1" type="checkstyle"/> + <result date="2007-05-24" statvalue="100" type="cobertura-line"/> + <result date="2007-05-24" statvalue="100" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="1" type="pmd"/> </file> <file id="default-default-net_sf_pzfilereader_LargeDataSet.java" module="default" path="net/sf/pzfilereader/LargeDataSet.java" project="default"> @@ -636,6 +654,9 @@ <result date="2007-02-11" statvalue="4" type="checkstyle"/> <result date="2007-02-11" statvalue="54" type="cobertura-line"/> <result date="2007-02-11" statvalue="64" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="6" type="checkstyle"/> + <result date="2007-05-24" statvalue="45" type="cobertura-line"/> + <result date="2007-05-24" statvalue="56" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_xml_PZMapParser.java" module="default" path="net/sf/pzfilereader/xml/PZMapParser.java" project="default"> @@ -693,6 +714,7 @@ <result date="2006-12-16" statvalue="33" type="cobertura-branch"/> <result date="2007-01-18" statvalue="45" type="cobertura-line"/> <result date="2007-02-11" statvalue="45" type="cobertura-line"/> + <result date="2007-05-24" statvalue="54" type="cobertura-line"/> </file> <file id="default-default-net_sf_pzfilereader_structure_ColumnMetaData.java" @@ -718,6 +740,8 @@ <result date="2007-01-18" statvalue="100" type="cobertura-branch"/> <result date="2007-02-11" statvalue="66" type="cobertura-line"/> <result date="2007-02-11" statvalue="100" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="66" type="cobertura-line"/> + <result date="2007-05-24" statvalue="100" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_Version.java" module="default" path="net/sf/pzfilereader/Version.java" project="default"> @@ -731,12 +755,14 @@ <result date="2006-12-16" statvalue="100" type="cobertura-branch"/> <result date="2007-01-18" statvalue="100" type="cobertura-branch"/> <result date="2007-02-11" statvalue="100" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="100" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_xml_XMLRecordElement.java" module="default" path="net/sf/pzfilereader/xml/XMLRecordElement.java" project="default"> <result date="2006-10-17" statvalue="100" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="1" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_util_PZConstants.java" module="default" @@ -750,6 +776,7 @@ <result date="2006-12-16" statvalue="100" type="cobertura-branch"/> <result date="2007-01-18" statvalue="100" type="cobertura-branch"/> <result date="2007-02-11" statvalue="100" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="100" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_AbstractDelimiterPZParser.java" @@ -777,6 +804,9 @@ <result date="2007-02-11" statvalue="3" type="checkstyle"/> <result date="2007-02-11" statvalue="56" type="cobertura-line"/> <result date="2007-02-11" statvalue="66" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="2" type="checkstyle"/> + <result date="2007-05-24" statvalue="59" type="cobertura-line"/> + <result date="2007-05-24" statvalue="68" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_DelimiterPZParser.java" @@ -797,6 +827,9 @@ <result date="2007-01-18" statvalue="75" type="cobertura-branch"/> <result date="2007-02-11" statvalue="37" type="cobertura-line"/> <result date="2007-02-11" statvalue="75" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="1" type="checkstyle"/> + <result date="2007-05-24" statvalue="42" type="cobertura-line"/> + <result date="2007-05-24" statvalue="71" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_FixedLengthPZParser.java" @@ -839,6 +872,7 @@ <result date="2007-01-18" statvalue="2" type="checkstyle"/> <result date="2007-01-18" statvalue="2" type="pmd"/> <result date="2007-02-11" statvalue="2" type="checkstyle"/> + <result date="2007-05-24" statvalue="2" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_util_FixedWidthParserUtils.java" @@ -861,6 +895,8 @@ <result date="2007-01-18" statvalue="16" type="cobertura-branch"/> <result date="2007-02-11" statvalue="30" type="cobertura-line"/> <result date="2007-02-11" statvalue="16" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="20" type="cobertura-line"/> + <result date="2007-05-24" statvalue="10" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_util_RegExParser.java" module="default" @@ -904,6 +940,8 @@ <result date="2007-01-18" statvalue="50" type="cobertura-branch"/> <result date="2007-02-11" statvalue="43" type="cobertura-line"/> <result date="2007-02-11" statvalue="50" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="76" type="cobertura-line"/> + <result date="2007-05-24" statvalue="83" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_DefaultDataSet.java" module="default" path="net/sf/pzfilereader/DefaultDataSet.java" project="default"> @@ -922,6 +960,9 @@ <result date="2007-01-18" statvalue="11" type="cobertura-branch"/> <result date="2007-02-11" statvalue="22" type="cobertura-line"/> <result date="2007-02-11" statvalue="11" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="1" type="checkstyle"/> + <result date="2007-05-24" statvalue="34" type="cobertura-line"/> + <result date="2007-05-24" statvalue="33" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_DefaultPZParserFactory.java" @@ -939,6 +980,8 @@ <result date="2007-01-18" statvalue="100" type="cobertura-branch"/> <result date="2007-02-11" statvalue="33" type="cobertura-line"/> <result date="2007-02-11" statvalue="100" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="29" type="cobertura-line"/> + <result date="2007-05-24" statvalue="100" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_PZParser.java" module="default" path="net/sf/pzfilereader/PZParser.java" project="default"> @@ -954,6 +997,8 @@ <result date="2007-01-18" statvalue="100" type="cobertura-branch"/> <result date="2007-02-11" statvalue="100" type="cobertura-line"/> <result date="2007-02-11" statvalue="100" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="100" type="cobertura-line"/> + <result date="2007-05-24" statvalue="100" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_PZParserFactory.java" module="default" path="net/sf/pzfilereader/PZParserFactory.java" project="default"> @@ -969,6 +1014,8 @@ <result date="2007-01-18" statvalue="100" type="cobertura-branch"/> <result date="2007-02-11" statvalue="100" type="cobertura-line"/> <result date="2007-02-11" statvalue="100" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="100" type="cobertura-line"/> + <result date="2007-05-24" statvalue="100" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_InitialisationException.java" @@ -980,6 +1027,7 @@ <result date="2006-12-16" statvalue="100" type="cobertura-branch"/> <result date="2007-01-18" statvalue="100" type="cobertura-branch"/> <result date="2007-02-11" statvalue="100" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="100" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_converter_package.html" @@ -1001,6 +1049,8 @@ <result date="2007-01-18" statvalue="100" type="cobertura-branch"/> <result date="2007-02-11" statvalue="100" type="cobertura-line"/> <result date="2007-02-11" statvalue="100" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="100" type="cobertura-line"/> + <result date="2007-05-24" statvalue="100" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_converter_ConvertBigDecimal.java" @@ -1015,6 +1065,8 @@ <result date="2007-01-18" statvalue="100" type="cobertura-branch"/> <result date="2007-02-11" statvalue="100" type="cobertura-line"/> <result date="2007-02-11" statvalue="100" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="100" type="cobertura-line"/> + <result date="2007-05-24" statvalue="100" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_converter_PZConvertException.java" @@ -1025,6 +1077,7 @@ <result date="2006-12-16" statvalue="100" type="cobertura-branch"/> <result date="2007-01-18" statvalue="100" type="cobertura-branch"/> <result date="2007-02-11" statvalue="100" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="100" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_brparse_package.html" module="default" path="net/sf/pzfilereader/brparse/package.html" project="default"> @@ -1066,6 +1119,8 @@ <result date="2007-01-18" statvalue="100" type="cobertura-branch"/> <result date="2007-02-11" statvalue="100" type="cobertura-line"/> <result date="2007-02-11" statvalue="100" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="100" type="cobertura-line"/> + <result date="2007-05-24" statvalue="100" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_converter_ConvertInteger.java" @@ -1079,6 +1134,8 @@ <result date="2007-01-18" statvalue="100" type="cobertura-branch"/> <result date="2007-02-11" statvalue="100" type="cobertura-line"/> <result date="2007-02-11" statvalue="100" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="100" type="cobertura-line"/> + <result date="2007-05-24" statvalue="100" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_brparse_BuffReaderPZParseFactory.java" @@ -1088,6 +1145,7 @@ <result date="2006-12-16" statvalue="100" type="cobertura-branch"/> <result date="2007-01-18" statvalue="100" type="cobertura-branch"/> <result date="2007-02-11" statvalue="100" type="cobertura-branch"/> + <result date="2007-05-24" statvalue="100" type="cobertura-branch"/> </file> <file id="default-default-net_sf_pzfilereader_brparse_BuffReaderPZDataSet.java" @@ -1101,4 +1159,18 @@ <result date="2007-01-18" statvalue="1" type="pmd"/> <result date="2007-02-11" statvalue="1" type="pmd"/> </file> + <file + id="default-default-net_sf_pzfilereader_util_PZStringUtils.java" + module="default" + path="net/sf/pzfilereader/util/PZStringUtils.java" project="default"> + <result date="2007-05-24" statvalue="3" type="checkstyle"/> + <result date="2007-05-24" statvalue="25" type="cobertura-line"/> + <result date="2007-05-24" statvalue="25" type="cobertura-branch"/> + </file> + <file id="default-default-net_sf_pzfilereader_xml_PZMetaData.java" + module="default" path="net/sf/pzfilereader/xml/PZMetaData.java" project="default"> + <result date="2007-05-24" statvalue="1" type="findbugs"/> + <result date="2007-05-24" statvalue="41" type="cobertura-line"/> + <result date="2007-05-24" statvalue="100" type="cobertura-branch"/> + </file> </qalab> Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/PZStringUtils.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/PZStringUtils.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/PZStringUtils.java 2007-05-25 11:12:17 UTC (rev 312) @@ -0,0 +1,57 @@ +package net.sf.pzfilereader.util; + +/** + * Thanks to the Apache Commons Contributors. + * + * @author Jakarta Commons + */ +public class PZStringUtils { + /** + * <p>Checks if a String is whitespace, empty ("") or null.</p> + * + * <pre> + * PZStringUtils.isBlank(null) = true + * PZStringUtils.isBlank("") = true + * PZStringUtils.isBlank(" ") = true + * PZStringUtils.isBlank("bob") = false + * PZStringUtils.isBlank(" bob ") = false + * </pre> + * + * @param str the String to check, may be null + * @return <code>true</code> if the String is null, empty or whitespace + * @since 2.0 + */ + public static boolean isBlank(final String str) { + int strLen; + if (str == null || (strLen = str.length()) == 0) { + return true; + } + for (int i = 0; i < strLen; i++) { + if ((Character.isWhitespace(str.charAt(i)) == false)) { + return false; + } + } + return true; + } + + /** + * <p>Checks if a String is not empty (""), not null and not whitespace only.</p> + * + * <pre> + * PZStringUtils.isNotBlank(null) = false + * PZStringUtils.isNotBlank("") = false + * PZStringUtils.isNotBlank(" ") = false + * PZStringUtils.isNotBlank("bob") = true + * PZStringUtils.isNotBlank(" bob ") = true + * </pre> + * + * @param str the String to check, may be null + * @return <code>true</code> if the String is + * not empty and not null and not whitespace + * @since 2.0 + */ + public static boolean isNotBlank(final String str) { + return !PZStringUtils.isBlank(str); + } + +} Added: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMetaData.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMetaData.java (rev 0) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMetaData.java 2007-05-25 11:12:17 UTC (rev 312) @@ -0,0 +1,79 @@ +/** + * + */ +package net.sf.pzfilereader.xml; + +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import net.sf.pzfilereader.util.PZConstants; + +/** + * @author Benoit Xhenseval + * + */ +public class PZMetaData { + private List columnsNames; + private Map columnIndexMap; + private Map xmlRecordElements; + + public PZMetaData(final Map fullMapFromPZParser) { + columnsNames = (List) fullMapFromPZParser.get(PZConstants.DETAIL_ID); + columnIndexMap = (Map) fullMapFromPZParser.get(PZConstants.COL_IDX); + xmlRecordElements = fullMapFromPZParser; + } + + public PZMetaData(final List columnNames, final Map columnIndexMap) { + this.columnsNames = Collections.unmodifiableList(columnNames); + this.columnIndexMap = Collections.unmodifiableMap(columnIndexMap); + } + + PZMetaData(final List columnNames, final Map columnIndexMap, final Map xmlRecordElements) { + this.columnsNames = Collections.unmodifiableList(columnNames); + this.columnIndexMap = columnIndexMap; + this.xmlRecordElements = xmlRecordElements; + } + + public List getColumnsNames() { + return columnsNames; + } + + public Map getColumnIndexMap() { + return columnIndexMap; + } + + public void setColumnIndexMap(final Map columnIndexMap) { + this.columnIndexMap = columnIndexMap; + } + + public void setColumnsNames(final List columnsNames) { + this.columnsNames = Collections.unmodifiableList(columnsNames); + } + + public boolean isAnyRecordFormatSpecified() { + return xmlRecordElements != null && !xmlRecordElements.isEmpty(); + } + + public Iterator xmlRecordIterator() { + return xmlRecordElements.entrySet().iterator(); + } + + public List getListColumnsForRecord(final String key) { + return ((XMLRecordElement) xmlRecordElements.get(key)).getColumns(); + } + + public int getColumnIndex(final String key, final String columnName) { + int idx = -1; + if (key != null && !key.equals(PZConstants.DETAIL_ID) && !key.equals(PZConstants.COL_IDX)) { + idx = ((XMLRecordElement) getListColumnsForRecord(key)).getColumnIndex(columnName); + } else if (key == null || key.equals(PZConstants.DETAIL_ID)) { + final Integer i = (Integer) columnIndexMap.get(columnName); + if (i != null) { //happens when the col name does not exist in the mapping + idx = i.intValue(); + } + } + return idx; + } +} Modified: trunk/PZFileReaderSamples/qalab.xml =================================================================== --- trunk/PZFileReaderSamples/qalab.xml 2007-05-24 22:58:30 UTC (rev 311) +++ trunk/PZFileReaderSamples/qalab.xml 2007-05-25 11:12:17 UTC (rev 312) @@ -101,6 +101,14 @@ project="default" statvalue="92" type="simian"/> <summaryresult date="2007-02-11" filecount="10" module="default" project="default" statvalue="10" type="pmd"/> + <summaryresult date="2007-05-25" filecount="34" module="default" + project="default" statvalue="163" type="checkstyle"/> + <summaryresult date="2007-05-25" filecount="8" module="default" + project="default" statvalue="12" type="findbugs"/> + <summaryresult date="2007-05-25" filecount="6" module="default" + project="default" statvalue="92" type="simian"/> + <summaryresult date="2007-05-25" filecount="10" module="default" + project="default" statvalue="10" type="pmd"/> </summary> <file id="default-default-com_pz_reader_examples_numericsanddates_package.html" @@ -314,6 +322,7 @@ <result date="2006-12-16" statvalue="1" type="checkstyle"/> <result date="2007-01-18" statvalue="1" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_examples_largedataset_largecsvperformancetest_package.html" @@ -328,6 +337,7 @@ <result date="2006-12-16" statvalue="1" type="checkstyle"/> <result date="2007-01-18" statvalue="1" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_examples_multilinedelimitedrecord_package.html" @@ -342,6 +352,7 @@ <result date="2006-12-16" statvalue="1" type="checkstyle"/> <result date="2007-01-18" statvalue="1" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_examples_numericsanddates_package.html" @@ -356,6 +367,7 @@ <result date="2006-12-16" statvalue="1" type="checkstyle"/> <result date="2007-01-18" statvalue="1" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_examples_delimitedcolumnnamesinfile_package.html" @@ -370,6 +382,7 @@ <result date="2006-12-16" statvalue="1" type="checkstyle"/> <result date="2007-01-18" statvalue="1" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_examples_delimiteddynamiccolumns_package.html" @@ -384,6 +397,7 @@ <result date="2006-12-16" statvalue="1" type="checkstyle"/> <result date="2007-01-18" statvalue="1" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_examples_exporttoexcel_package.html" @@ -398,6 +412,7 @@ <result date="2006-12-16" statvalue="1" type="checkstyle"/> <result date="2007-01-18" statvalue="1" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_examples_largedataset_fixedlengthdynamiccolumns_package.html" @@ -412,6 +427,7 @@ <result date="2006-12-16" statvalue="1" type="checkstyle"/> <result date="2007-01-18" statvalue="1" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_examples_createsamplecsv_package.html" @@ -426,6 +442,7 @@ <result date="2006-12-16" statvalue="1" type="checkstyle"/> <result date="2007-01-18" statvalue="1" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_examples_fixedlengthdynamiccolumns_package.html" @@ -440,6 +457,7 @@ <result date="2006-12-16" statvalue="1" type="checkstyle"/> <result date="2007-01-18" statvalue="1" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_examples_largedataset_delimiteddynamiccolumns_package.html" @@ -454,6 +472,7 @@ <result date="2006-12-16" statvalue="1" type="checkstyle"/> <result date="2007-01-18" statvalue="1" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_examples_csvperformancetest_package.html" @@ -468,6 +487,7 @@ <result date="2006-12-16" statvalue="1" type="checkstyle"/> <result date="2007-01-18" statvalue="1" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_examples_lowlevelparse_package.html" @@ -482,6 +502,7 @@ <result date="2006-12-16" statvalue="1" type="checkstyle"/> <result date="2007-01-18" statvalue="1" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_examples_delimiteddynamiccolumnswitherrors_package.html" @@ -496,6 +517,7 @@ <result date="2006-12-16" statvalue="1" type="checkstyle"/> <result date="2007-01-18" statvalue="1" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_examples_fixedlengthheaderandtrailer_package.html" @@ -510,6 +532,7 @@ <result date="2006-12-16" statvalue="1" type="checkstyle"/> <result date="2007-01-18" statvalue="1" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_examples_csvheaderandtrailer_package.html" @@ -524,6 +547,7 @@ <result date="2006-12-16" statvalue="1" type="checkstyle"/> <result date="2007-01-18" statvalue="1" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_examples_Examples.java" @@ -546,6 +570,8 @@ <result date="2007-01-18" statvalue="1" type="findbugs"/> <result date="2007-02-11" statvalue="14" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="findbugs"/> + <result date="2007-05-25" statvalue="14" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="findbugs"/> </file> <file id="default-default-net_sf_pzfilereader_examples_createsamplecsv_CSVTestFileCreator.java" @@ -578,6 +604,9 @@ <result date="2007-02-11" statvalue="7" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="findbugs"/> <result date="2007-02-11" statvalue="1" type="pmd"/> + <result date="2007-05-25" statvalue="7" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="findbugs"/> + <result date="2007-05-25" statvalue="1" type="pmd"/> </file> <file id="default-default-net_sf_pzfilereader_examples_csvheaderandtrailer_CSVHeaderAndTrailer.java" @@ -592,6 +621,7 @@ <result date="2006-12-16" statvalue="17" type="checkstyle"/> <result date="2007-01-18" statvalue="17" type="checkstyle"/> <result date="2007-02-11" statvalue="17" type="checkstyle"/> + <result date="2007-05-25" statvalue="17" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_examples_csvperformancetest_CSVPerformanceTest.java" @@ -620,6 +650,9 @@ <result date="2007-02-11" statvalue="17" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="findbugs"/> <result date="2007-02-11" statvalue="1" type="pmd"/> + <result date="2007-05-25" statvalue="17" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="findbugs"/> + <result date="2007-05-25" statvalue="1" type="pmd"/> </file> <file id="default-default-net_sf_pzfilereader_examples_delimitedcolumnnamesinfile_DelimitedColumnNamesInFile.java" @@ -639,6 +672,7 @@ <result date="2006-12-16" statvalue="2" type="pmd"/> <result date="2007-01-18" statvalue="5" type="checkstyle"/> <result date="2007-02-11" statvalue="5" type="checkstyle"/> + <result date="2007-05-25" statvalue="5" type="checkstyle"/> </file> <file id="default-default-net_sf_pzfilereader_examples_delimiteddynamiccolumns_DelimitedWithPZMap.java" @@ -658,6 +692,8 @@ <result date="2007-01-18" statvalue="1" type="pmd"/> <result date="2007-02-11" statvalue="14" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="pmd"/> + <result date="2007-05-25" statvalue="14" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="pmd"/> </file> <file id="default-default-net_sf_pzfilereader_examples_delimiteddynamiccolumnswitherrors_DelimitedWithPZMapErrors.java" @@ -677,6 +713,8 @@ <result date="2007-01-18" statvalue="1" type="pmd"/> <result date="2007-02-11" statvalue="14" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="pmd"/> + <result date="2007-05-25" statvalue="14" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="pmd"/> </file> <file id="default-default-net_sf_pzfilereader_examples_exporttoexcel_DelimitedFileExportToExcel.java" @@ -696,6 +734,8 @@ <result date="2007-01-18" statvalue="1" type="pmd"/> <result date="2007-02-11" statvalue="4" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="pmd"/> + <result date="2007-05-25" statvalue="4" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="pmd"/> </file> <file id="default-default-net_sf_pzfilereader_examples_fixedlengthdynamiccolumns_FixedLengthWithPZMap.java" @@ -715,6 +755,8 @@ <result date="2007-01-18" statvalue="1" type="pmd"/> <result date="2007-02-11" statvalue="4" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="pmd"/> + <result date="2007-05-25" statvalue="4" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="pmd"/> </file> <file id="default-default-net_sf_pzfilereader_examples_fixedlengthheaderandtrailer_FixedLengthHeaderAndTrailer.java" @@ -734,6 +776,8 @@ <result date="2007-01-18" statvalue="1" type="pmd"/> <result date="2007-02-11" statvalue="18" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="pmd"/> + <result date="2007-05-25" statvalue="18" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="pmd"/> </file> <file id="default-default-net_sf_pzfilereader_examples_largedataset_delimiteddynamiccolumns_LargeDelimitedWithPZMap.java" @@ -753,6 +797,8 @@ <result date="2007-01-18" statvalue="1" type="findbugs"/> <result date="2007-02-11" statvalue="4" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="findbugs"/> + <result date="2007-05-25" statvalue="4" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="findbugs"/> </file> <file id="default-default-net_sf_pzfilereader_examples_largedataset_fixedlengthdynamiccolumns_LargeFixedLengthWithPZMap.java" @@ -772,6 +818,8 @@ <result date="2007-01-18" statvalue="1" type="findbugs"/> <result date="2007-02-11" statvalue="3" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="findbugs"/> + <result date="2007-05-25" statvalue="3" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="findbugs"/> </file> <file id="default-default-net_sf_pzfilereader_examples_largedataset_largecsvperformancetest_CSVLarge.java" @@ -795,6 +843,8 @@ <result date="2007-01-18" statvalue="3" type="findbugs"/> <result date="2007-02-11" statvalue="9" type="checkstyle"/> <result date="2007-02-11" statvalue="3" type="findbugs"/> + <result date="2007-05-25" statvalue="9" type="checkstyle"/> + <result date="2007-05-25" statvalue="3" type="findbugs"/> </file> <file id="default-default-net_sf_pzfilereader_examples_lowlevelparse_LowLevelParse.java" @@ -827,6 +877,9 @@ <result date="2007-02-11" statvalue="5" type="checkstyle"/> <result date="2007-02-11" statvalue="2" type="findbugs"/> <result date="2007-02-11" statvalue="1" type="pmd"/> + <result date="2007-05-25" statvalue="5" type="checkstyle"/> + <result date="2007-05-25" statvalue="2" type="findbugs"/> + <result date="2007-05-25" statvalue="1" type="pmd"/> </file> <file id="default-default-net_sf_pzfilereader_examples_multilinedelimitedrecord_DelimitedMultiLine.java" @@ -846,6 +899,8 @@ <result date="2007-01-18" statvalue="1" type="pmd"/> <result date="2007-02-11" statvalue="5" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="pmd"/> + <result date="2007-05-25" statvalue="5" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="pmd"/> </file> <file id="default-default-net_sf_pzfilereader_examples_numericsanddates_NumericsAndDates.java" @@ -865,6 +920,8 @@ <result date="2007-01-18" statvalue="1" type="pmd"/> <result date="2007-02-11" statvalue="7" type="checkstyle"/> <result date="2007-02-11" statvalue="1" type="pmd"/> + <result date="2007-05-25" statvalue="7" type="checkstyle"/> + <result date="2007-05-25" statvalue="1" type="pmd"/> </file> <file id="default-default-net_sf_pzfilereader_examples_ConsoleMenu.java" @@ -879,5 +936,6 @@ <result date="2006-12-16" statvalue="2" type="findbugs"/> <result date="2007-01-18" statvalue="2" type="findbugs"/> <result date="2007-02-11" statvalue="2" type="findbugs"/> + <result date="2007-05-25" statvalue="2" type="findbugs"/> </file> </qalab> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |