From: <zep...@us...> - 2006-11-25 15:53:52
|
Revision: 190 http://svn.sourceforge.net/pzfilereader/?rev=190&view=rev Author: zepernick Date: 2006-11-25 07:53:52 -0800 (Sat, 25 Nov 2006) Log Message: ----------- moved helper methods into ParserUtils for Object conversion. This removed some duplicate code and will be easier to unit test Modified Paths: -------------- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2006-11-25 15:52:23 UTC (rev 189) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java 2006-11-25 15:53:52 UTC (rev 190) @@ -155,12 +155,8 @@ final DefaultDataSet ds = new DefaultDataSet(getColumnMD()); try { //gather the conversion properties - final Properties pzConvertProps = new Properties(); - final URL url = getClass().getClassLoader().getResource("pzconvert.properties"); - pzConvertProps.load(url.openStream()); - ds.setPZConvertProps(pzConvertProps); + ds.setPZConvertProps(ParserUtils.loadConvertProperties()); - // get the total column count // columnCount = columnMD.size(); Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java 2006-11-25 15:52:23 UTC (rev 189) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java 2006-11-25 15:53:52 UTC (rev 190) @@ -113,12 +113,8 @@ try { //gather the conversion properties - final Properties pzConvertProps = new Properties(); - final URL url = getClass().getClassLoader().getResource("pzconvert.properties"); - pzConvertProps.load(url.openStream()); - ds.setPZConvertProps(pzConvertProps); - - + ds.setPZConvertProps(ParserUtils.loadConvertProperties()); + final Map recordLengths = ParserUtils.calculateRecordLengths(getColumnMD()); // Read in the flat file Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java 2006-11-25 15:52:23 UTC (rev 189) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java 2006-11-25 15:53:52 UTC (rev 190) @@ -178,20 +178,9 @@ public Object getObject(String column, Class classToConvertTo) { - final String sConverter = pzConvertProps.getProperty(classToConvertTo.getName()); - if (sConverter == null) { - throw new PZConvertException (classToConvertTo.getName() + " is not registered in pzconvert.properties"); - } - try{ - final Row row = (Row) rows.get(pointer); - final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); - final PZConverter pzconverter = (PZConverter)Class.forName(sConverter).newInstance(); - - return pzconverter.convertValue(s); - - } catch (Exception ex) { - throw new PZConvertException (ex); - } + final Row row = (Row) rows.get(pointer); + final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column)); + return ParserUtils.runPzConverter(pzConvertProps, s, classToConvertTo); } /* Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java =================================================================== --- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2006-11-25 15:52:23 UTC (rev 189) +++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java 2006-11-25 15:53:52 UTC (rev 190) @@ -19,9 +19,11 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; +import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; +import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; @@ -29,7 +31,10 @@ import java.util.List; import java.util.Map; import java.util.NoSuchElementException; +import java.util.Properties; +import net.sf.pzfilereader.converter.PZConvertException; +import net.sf.pzfilereader.converter.PZConverter; import net.sf.pzfilereader.structure.ColumnMetaData; import net.sf.pzfilereader.xml.XMLRecordElement; @@ -879,4 +884,50 @@ return newString.toString(); } + + /** + * Retrieves the conversion table for use with the getObject() + * method in IDataSet + * + * @throws IOException + * @return Properties + * Properties contained in the pzconvert.properties file + */ + public static Properties loadConvertProperties() throws IOException{ + final Properties pzConvertProps = new Properties(); + final URL url = ParserUtils.class.getClassLoader().getResource("pzconvert.properties"); + pzConvertProps.load(url.openStream()); + + return pzConvertProps; + } + + /** + * Converts a String value to the appropriate Object via + * the correct net.sf.pzfilereader.converter.PZConverter implementation + * + * @param classXref + * Properties holding class cross reference + * @param value + * Value to be converted to the Object + * @param typeToReturn + * Type of object to be returned + * @throws PZConvertExeption + * @return Object + */ + public static Object runPzConverter(final Properties classXref, final String value, final Class typeToReturn) { + final String sConverter = classXref.getProperty(typeToReturn.getName()); + if (sConverter == null) { + throw new PZConvertException (typeToReturn.getName() + " is not registered in pzconvert.properties"); + } + try { + final PZConverter pzconverter = (PZConverter)Class.forName(sConverter).newInstance(); + return pzconverter.convertValue(value); + } catch(IllegalAccessException ex) { + throw new PZConvertException(ex); + } catch(InstantiationException ex) { + throw new PZConvertException(ex); + } catch(ClassNotFoundException ex) { + throw new PZConvertException(ex); + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |