| 
     
      
      
      From: <be...@us...> - 2007-05-24 22:51:50
      
     
   | 
Revision: 310
          http://svn.sourceforge.net/pzfilereader/?rev=310&view=rev
Author:   benoitx
Date:     2007-05-24 15:51:48 -0700 (Thu, 24 May 2007)
Log Message:
-----------
Created PZMetaData that removes the use of some magic keys in a map
This also provides a bit more semantic in the use of meta data.
The old code is simply commented out or deprecated for now.
Modified Paths:
--------------
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultPZParserFactory.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderFixedPZParser.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZDataSet.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderPZParseFactory.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/converter/ConvertBigDecimal.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/converter/ConvertDouble.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/converter/ConvertInteger.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/converter/PZConvertException.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/converter/PZConverter.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/ordering/OrderBy.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/structure/Row.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ExcelTransformer.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/FixedWidthParserUtils.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/PZConstants.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/util/ParserUtils.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/PZMapParser.java
    trunk/PZFileReader/src/main/java/net/sf/pzfilereader/xml/XMLRecordElement.java
    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/FixedWidthParserUtilsTest.java
    trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/ParserUtilsLTrimTest.java
    trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/ParserUtilsSplitLineTest.java
    trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/ParserUtilsTest.java
    trunk/PZFileReader/src/test/java/net/sf/pzfilereader/pzparser/PZParserOptsTest.java
Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java
===================================================================
--- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java	2007-05-01 09:13:20 UTC (rev 309)
+++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractDelimiterPZParser.java	2007-05-24 22:51:48 UTC (rev 310)
@@ -33,20 +33,17 @@
 package net.sf.pzfilereader;
 
 import java.io.BufferedReader;
-import java.io.File;
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.io.Reader;
 import java.util.List;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import net.sf.pzfilereader.structure.Row;
 import net.sf.pzfilereader.util.PZConstants;
 import net.sf.pzfilereader.util.ParserUtils;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  * @author xhensevb
  * @author zepernick
@@ -54,50 +51,45 @@
  */
 public abstract class AbstractDelimiterPZParser extends AbstractPZParser {
     private char delimiter = 0;
-
     private char qualifier = 0;
-
     private boolean ignoreFirstRecord = false;
-    
     private int lineCount = 0;
-   
+
     private final Logger logger = LoggerFactory.getLogger(AbstractDelimiterPZParser.class);
-    
+
     /*public AbstractDelimiterPZParser(final InputStream dataSourceStream, final String dataDefinition, final char delimiter,
-            final char qualifier, final boolean ignoreFirstRecord) {
-        super(dataSourceStream, dataDefinition);
-        this.delimiter = delimiter;
-        this.qualifier = qualifier;
-        this.ignoreFirstRecord = ignoreFirstRecord;
-    }
+     final char qualifier, final boolean ignoreFirstRecord) {
+     super(dataSourceStream, dataDefinition);
+     this.delimiter = delimiter;
+     this.qualifier = qualifier;
+     this.ignoreFirstRecord = ignoreFirstRecord;
+     }
 
-    public AbstractDelimiterPZParser(final File dataSource, final char delimiter, final char qualifier,
-            final boolean ignoreFirstRecord) {
-        super(dataSource);
-        this.delimiter = delimiter;
-        this.qualifier = qualifier;
-        this.ignoreFirstRecord = ignoreFirstRecord;
-    }
+     public AbstractDelimiterPZParser(final File dataSource, final char delimiter, final char qualifier,
+     final boolean ignoreFirstRecord) {
+     super(dataSource);
+     this.delimiter = delimiter;
+     this.qualifier = qualifier;
+     this.ignoreFirstRecord = ignoreFirstRecord;
+     }
 
-    public AbstractDelimiterPZParser(final InputStream dataSourceStream, final char delimiter, final char qualifier,
+     public AbstractDelimiterPZParser(final InputStream dataSourceStream, final char delimiter, final char qualifier,
+     final boolean ignoreFirstRecord) {
+     super(dataSourceStream);
+     this.delimiter = delimiter;
+     this.qualifier = qualifier;
+     this.ignoreFirstRecord = ignoreFirstRecord;
+     }*/
+
+    public AbstractDelimiterPZParser(final Reader dataSourceReader, final String dataDefinition, final char delimiter, final char qualifier,
             final boolean ignoreFirstRecord) {
-        super(dataSourceStream);
-        this.delimiter = delimiter;
-        this.qualifier = qualifier;
-        this.ignoreFirstRecord = ignoreFirstRecord;
-    }*/
-    
-    public AbstractDelimiterPZParser(final Reader dataSourceReader, final String dataDefinition, final char delimiter,
-            final char qualifier, final boolean ignoreFirstRecord) {
         super(dataSourceReader, dataDefinition);
         this.delimiter = delimiter;
         this.qualifier = qualifier;
         this.ignoreFirstRecord = ignoreFirstRecord;
     }
-    
-    
-    public AbstractDelimiterPZParser(final Reader dataSourceReader, final char delimiter, final char qualifier,
-            final boolean ignoreFirstRecord) {
+
+    public AbstractDelimiterPZParser(final Reader dataSourceReader, final char delimiter, final char qualifier, final boolean ignoreFirstRecord) {
         super(dataSourceReader);
         this.delimiter = delimiter;
         this.qualifier = qualifier;
@@ -108,22 +100,22 @@
         try {
             lineCount = 0;
             return doDelimitedFile(getDataSourceReader(), shouldCreateMDFromFile());
-          /*  if (getDataSourceStream() != null) {
-                return doDelimitedFile(getDataSourceStream(),  shouldCreateMDFromFile());
-            } else {
-                InputStream stream = null;
-                try {
-                    stream = ParserUtils.createInputStream(getDataSource());
-                    return doDelimitedFile(stream, shouldCreateMDFromFile());
-                } finally {
-                    if (stream != null) {
-                        stream.close();
-                    }
-                }
-            }*/
+            /*  if (getDataSourceStream() != null) {
+             return doDelimitedFile(getDataSourceStream(),  shouldCreateMDFromFile());
+             } else {
+             InputStream stream = null;
+             try {
+             stream = ParserUtils.createInputStream(getDataSource());
+             return doDelimitedFile(stream, shouldCreateMDFromFile());
+             } finally {
+             if (stream != null) {
+             stream.close();
+             }
+             }
+             }*/
         } catch (final IOException e) {
             logger.error("error accessing/creating inputstream", e);
-        } 
+        }
         return null;
     }
 
@@ -156,7 +148,7 @@
     protected int getLineCount() {
         return lineCount;
     }
-    
+
     /*
      * This is the new version of doDelimitedFile using InputStrem instead of
      * File. This is more flexible especially it is working with WebStart.
@@ -169,11 +161,12 @@
             throw new NullPointerException("dataSource is null");
         }
         BufferedReader br = null;
-        final DefaultDataSet ds = new DefaultDataSet(getColumnMD(), this);
+        //        final DefaultDataSet ds = new DefaultDataSet(getColumnMD(), this);
+        final DefaultDataSet ds = new DefaultDataSet(getPzMetaData(), this);
         try {
             //gather the conversion properties
             ds.setPZConvertProps(ParserUtils.loadConvertProperties());
-            
+
             // get the total column count
             // columnCount = columnMD.size();
 
@@ -189,17 +182,21 @@
                     continue;
                 } else if (!processedFirst && createMDFromFile) {
                     processedFirst = true;
-                    setColumnMD(ParserUtils.getColumnMDFromFile(line, delimiter, qualifier, this));
-                    ds.setColumnMD(getColumnMD());
+                    //                    setColumnMD(ParserUtils.getColumnMDFromFile(line, delimiter, qualifier, this));
+                    setPzMetaData(ParserUtils.getPZMetaDataFromFile(line, delimiter, qualifier, this));
+                    //                    ds.setColumnMD(getColumnMD());
+                    ds.setPzMetaData(getPzMetaData());
                     continue;
                 }
 
                 // column values
                 List columns = ParserUtils.splitLine(line, getDelimiter(), getQualifier(), PZConstants.SPLITLINE_SIZE_INIT);
-                final String mdkey = ParserUtils.getCMDKeyForDelimitedFile(getColumnMD(), columns);
-                final List cmds = ParserUtils.getColumnMetaData(mdkey, getColumnMD());
+                final String mdkey = ParserUtils.getCMDKeyForDelimitedFile(getPzMetaData(), columns);
+                //                final String mdkey = ParserUtils.getCMDKeyForDelimitedFile(getColumnMD(), columns);
+                //                final List cmds = ParserUtils.getColumnMetaData(mdkey, getColumnMD());
+                final List cmds = ParserUtils.getColumnMetaData(mdkey, getPzMetaData());
                 final int columnCount = cmds.size();
-                                
+
                 if (columns.size() > columnCount) {
                     // Incorrect record length on line log the error. Line
                     // will not be included in the dataset log the error
@@ -244,7 +241,7 @@
         }
         return ds;
     }
-    
+
     /**
      * Reads a record from a delimited file.  This will account for records which
      * could span multiple lines.  
@@ -260,12 +257,11 @@
      *          Record from delimited file
      *          
      */
-    protected String fetchNextRecord(final BufferedReader br, final char qual,
-            final char delim) throws IOException{
+    protected String fetchNextRecord(final BufferedReader br, final char qual, final char delim) throws IOException {
         String line = null;
-        StringBuffer lineData = new StringBuffer();
+        final StringBuffer lineData = new StringBuffer();
         boolean processingMultiLine = false;
-        
+
         while ((line = br.readLine()) != null) {
             lineCount++;
             final String trimmed = line.trim();
@@ -344,15 +340,15 @@
                     // the data on the next line
                 }
             }
-            
+
             break;
         }
-        
+
         if (line == null && lineData.length() == 0) {
             //eof
             return null;
         }
-        
+
         return lineData.toString();
     }
 }
Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java
===================================================================
--- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java	2007-05-01 09:13:20 UTC (rev 309)
+++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractFixedLengthPZParser.java	2007-05-24 22:51:48 UTC (rev 310)
@@ -38,37 +38,37 @@
 import java.util.List;
 import java.util.Map;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import net.sf.pzfilereader.structure.Row;
 import net.sf.pzfilereader.util.FixedWidthParserUtils;
 import net.sf.pzfilereader.util.PZConstants;
 import net.sf.pzfilereader.util.ParserUtils;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  * @author xhensevb
  * 
  */
 public abstract class AbstractFixedLengthPZParser extends AbstractPZParser {
     private final Logger logger = LoggerFactory.getLogger(AbstractFixedLengthPZParser.class);
-    
-   /* protected AbstractFixedLengthPZParser(final File dataSource, final String dataDefinition) {
-        super(dataSource, dataDefinition);
-    }
 
-    protected AbstractFixedLengthPZParser(final File dataSource) {
-        super(dataSource);
-    }
+    /* protected AbstractFixedLengthPZParser(final File dataSource, final String dataDefinition) {
+     super(dataSource, dataDefinition);
+     }
 
-    protected AbstractFixedLengthPZParser(final InputStream dataSourceStream, final String dataDefinition) {
-        super(dataSourceStream, dataDefinition);
-    }
+     protected AbstractFixedLengthPZParser(final File dataSource) {
+     super(dataSource);
+     }
 
-    protected AbstractFixedLengthPZParser(final InputStream dataSourceStream) {
-        super(dataSourceStream);
-    }*/
-    
+     protected AbstractFixedLengthPZParser(final InputStream dataSourceStream, final String dataDefinition) {
+     super(dataSourceStream, dataDefinition);
+     }
+
+     protected AbstractFixedLengthPZParser(final InputStream dataSourceStream) {
+     super(dataSourceStream);
+     }*/
+
     protected AbstractFixedLengthPZParser(final Reader dataSourceReader, final String dataDefinition) {
         super(dataSourceReader, dataDefinition);
     }
@@ -79,19 +79,19 @@
 
     public DataSet doParse() {
         try {
-           /* if (getDataSourceStream() != null) {
-                return doFixedLengthFile(getDataSourceStream());
-            } else {
-                InputStream stream;
-                stream = ParserUtils.createInputStream(getDataSource());
-                try {
-                    return doFixedLengthFile(stream);
-                } finally {
-                    if (stream != null) {
-                        stream.close();
-                    }
-                }
-            }*/
+            /* if (getDataSourceStream() != null) {
+             return doFixedLengthFile(getDataSourceStream());
+             } else {
+             InputStream stream;
+             stream = ParserUtils.createInputStream(getDataSource());
+             try {
+             return doFixedLengthFile(stream);
+             } finally {
+             if (stream != null) {
+             stream.close();
+             }
+             }
+             }*/
             return doFixedLengthFile(getDataSourceReader());
         } catch (final IOException e) {
             logger.error("error accessing/reading data", e);
@@ -109,13 +109,15 @@
     private DataSet doFixedLengthFile(final Reader dataSource) throws IOException {
         BufferedReader br = null;
 
-        final DefaultDataSet ds = new DefaultDataSet(getColumnMD(), this);
+        //        final DefaultDataSet ds = new DefaultDataSet(getColumnMD(), this);
+        final DefaultDataSet ds = new DefaultDataSet(getPzMetaData(), this);
 
         try {
             //gather the conversion properties
             ds.setPZConvertProps(ParserUtils.loadConvertProperties());
 
-            final Map recordLengths = ParserUtils.calculateRecordLengths(getColumnMD());
+            //            final Map recordLengths = ParserUtils.calculateRecordLengths(getColumnMD());
+            final Map recordLengths = ParserUtils.calculateRecordLengths(getPzMetaData());
 
             // Read in the flat file
             br = new BufferedReader(dataSource);
@@ -131,7 +133,8 @@
                     continue;
                 }
 
-                final String mdkey = FixedWidthParserUtils.getCMDKey(getColumnMD(), line);
+                final String mdkey = FixedWidthParserUtils.getCMDKey(getPzMetaData(), line);
+                //                final String mdkey = FixedWidthParserUtils.getCMDKey(getColumnMD(), line);
                 final int recordLength = ((Integer) recordLengths.get(mdkey)).intValue();
 
                 if (line.length() > recordLength) {
@@ -156,8 +159,7 @@
                         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);
+                        addError(ds, "LINE TOO SHORT. LINE IS " + line.length() + " LONG. SHOULD BE " + recordLength, lineCount, 2);
                         continue;
                     }
                 }
@@ -166,7 +168,8 @@
                 final Row row = new Row();
                 row.setMdkey(mdkey.equals(PZConstants.DETAIL_ID) ? null : mdkey); // try
 
-                final List cmds = ParserUtils.getColumnMetaData(mdkey, getColumnMD());
+                //                final List cmds = ParserUtils.getColumnMetaData(mdkey, getColumnMD());
+                final List cmds = ParserUtils.getColumnMetaData(mdkey, getPzMetaData());
                 row.addColumn(FixedWidthParserUtils.splitFixedText(cmds, line));
                 // to limit the memory use
                 // Build the columns for the row
Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java
===================================================================
--- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java	2007-05-01 09:13:20 UTC (rev 309)
+++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/AbstractPZParser.java	2007-05-24 22:51:48 UTC (rev 310)
@@ -36,10 +36,11 @@
 import java.io.Reader;
 import java.util.ArrayList;
 import java.util.Iterator;
-import java.util.LinkedHashMap;
 import java.util.List;
-import java.util.Map;
 
+import net.sf.pzfilereader.util.ParserUtils;
+import net.sf.pzfilereader.xml.PZMetaData;
+
 /**
  * @author xhensevb 
  * @author zepernick
@@ -48,52 +49,23 @@
 public abstract class AbstractPZParser implements PZParser {
 
     private boolean handlingShortLines = false;
-    
     private boolean ignoreExtraColumns = false;
-    
     private boolean columnNamesCaseSensitive = false;
-
     private boolean initialised = false;
-    
     private boolean ignoreParseWarnings = false;
-    
     private boolean nullEmptyStrings = false;
 
     /** Map of column metadata's */
-    private Map columnMD = null;
-
+    //    private Map columnMD = null;
+    private PZMetaData pzMetaData = null;
     private String dataDefinition = null;
-
-   // private InputStream dataSourceStream = null;
-
-   // private File dataSource = null;
-    
     private Reader dataSourceReader = null;
-    
-    private List readersToClose = null; 
+    private List readersToClose = null;
 
-    /*protected AbstractPZParser(final File dataSource) {
-        this.dataSourceReader = new FileReader(dataSource);
-    }
-
-    protected AbstractPZParser(final InputStream dataSourceStream) {
-        this.dataSourceStream = dataSourceStream;
-    }
-
-    protected AbstractPZParser(final File dataSource, final String dataDefinition) {
-        this.dataSource = dataSource;
-        this.dataDefinition = dataDefinition;
-    }
-
-    protected AbstractPZParser(final InputStream dataSourceStream, final String dataDefinition) {
-        this.dataSourceStream = dataSourceStream;
-        this.dataDefinition = dataDefinition;
-    }*/
-
     protected AbstractPZParser(final Reader dataSourceReader) {
         this.dataSourceReader = dataSourceReader;
     }
-    
+
     protected AbstractPZParser(final Reader dataSourceReader, final String dataDefinition) {
         this.dataSourceReader = dataSourceReader;
         this.dataDefinition = dataDefinition;
@@ -116,13 +88,13 @@
     public void setHandlingShortLines(final boolean handleShortLines) {
         this.handlingShortLines = handleShortLines;
     }
-    
+
     public boolean isIgnoreExtraColumns() {
         return ignoreExtraColumns;
     }
-    
-    public void setIgnoreExtraColumns(boolean ignoreExtraColumns) {
-        this.ignoreExtraColumns = ignoreExtraColumns;        
+
+    public void setIgnoreExtraColumns(final boolean ignoreExtraColumns) {
+        this.ignoreExtraColumns = ignoreExtraColumns;
     }
 
     public final DataSet parse() {
@@ -136,23 +108,25 @@
 
     protected abstract void init();
 
-    protected void setColumnMD(final Map map) {
-        columnMD = map;
-    }
-    
+    /**
+     * @deprecated
+     */
+    //    protected void setColumnMD(final Map map) {
+    //        columnMD = map;
+    //    }
     //this is used for backward compatability.  We are instantiating Readers from
     //InputStream and File from previous versions. Close out any Readers in the
     //readersToClose list.  This can be removed after we remove the deprecated methods
-    protected void closeReaders() throws IOException{
+    protected void closeReaders() throws IOException {
         if (readersToClose != null) {
             final Iterator readersToCloseIt = readersToClose.iterator();
             while (readersToCloseIt.hasNext()) {
-                final Reader r = (Reader)readersToCloseIt.next();
+                final Reader r = (Reader) readersToCloseIt.next();
                 r.close();
             }
         }
     }
-    
+
     //adds a reader to the close list.  the list will be processed after parsing is
     //completed.
     protected void addToCloseReaderList(final Reader r) {
@@ -162,13 +136,22 @@
         readersToClose.add(r);
     }
 
-    protected void addToColumnMD(final Object key, final Object value) {
-        if (columnMD == null) {
-            columnMD = new LinkedHashMap();
+    protected void addToMetaData(final List columns) {
+        if (pzMetaData == null) {
+            pzMetaData = new PZMetaData(columns, ParserUtils.buidColumnIndexMap(columns, this));
+        } else {
+            pzMetaData.setColumnsNames(columns);
+            pzMetaData.setColumnIndexMap(ParserUtils.buidColumnIndexMap(columns, this));
         }
-        columnMD.put(key, value);
     }
 
+    //    protected void addToColumnMD(final Object key, final Object value) {
+    //        if (columnMD == null) {
+    //            columnMD = new LinkedHashMap();
+    //        }
+    //        columnMD.put(key, value);
+    //    }
+
     protected boolean isInitialised() {
         return initialised;
     }
@@ -185,26 +168,25 @@
         this.dataDefinition = dataDefinition;
     }
 
-  /*  protected File getDataSource() {
-        return dataSource;
-    }
+    /*  protected File getDataSource() {
+     return dataSource;
+     }
 
-    protected void setDataSource(final File dataSource) {
-        this.dataSource = dataSource;
-    }
+     protected void setDataSource(final File dataSource) {
+     this.dataSource = dataSource;
+     }
 
-    protected InputStream getDataSourceStream() {
-        return dataSourceStream;
-    }
+     protected InputStream getDataSourceStream() {
+     return dataSourceStream;
+     }
 
-    protected void setDataSourceStream(final InputStream dataSourceStream) {
-        this.dataSourceStream = dataSourceStream;
-    }*/
+     protected void setDataSourceStream(final InputStream dataSourceStream) {
+     this.dataSourceStream = dataSourceStream;
+     }*/
 
-    protected Map getColumnMD() {
-        return columnMD;
-    }
-
+    //    protected Map getColumnMD() {
+    //        return columnMD;
+    //    }
     /**
      * Adds a new error to this DataSet. These can be collected, and retreived
      * after processing
@@ -235,32 +217,40 @@
     /**
      * @param dataSourceReader the dataSourceReader to set
      */
-    protected void setDataSourceReader(Reader dataSourceReader) {
+    protected void setDataSourceReader(final Reader dataSourceReader) {
         this.dataSourceReader = dataSourceReader;
     }
-    
+
     public boolean isColumnNamesCaseSensitive() {
         return columnNamesCaseSensitive;
     }
-    
-    public void setColumnNamesCaseSensitive(boolean columnNamesCaseSensitive) {
-       this.columnNamesCaseSensitive = columnNamesCaseSensitive;
+
+    public void setColumnNamesCaseSensitive(final boolean columnNamesCaseSensitive) {
+        this.columnNamesCaseSensitive = columnNamesCaseSensitive;
     }
-    
+
     public boolean isIgnoreParseWarnings() {
         return ignoreParseWarnings;
     }
-    
-    public void setIgnoreParseWarnings(boolean ignoreParseWarnings) {
-        this.ignoreParseWarnings = ignoreParseWarnings;        
+
+    public void setIgnoreParseWarnings(final boolean ignoreParseWarnings) {
+        this.ignoreParseWarnings = ignoreParseWarnings;
     }
-    
+
     public boolean isNullEmptyStrings() {
         return nullEmptyStrings;
     }
-    
-    public void setNullEmptyStrings(boolean nullEmptyStrings) {
-        this.nullEmptyStrings = nullEmptyStrings;        
+
+    public void setNullEmptyStrings(final boolean nullEmptyStrings) {
+        this.nullEmptyStrings = nullEmptyStrings;
     }
 
+    public PZMetaData getPzMetaData() {
+        return pzMetaData;
+    }
+
+    public void setPzMetaData(final PZMetaData pzMap) {
+        this.pzMetaData = pzMap;
+    }
+
 }
Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java
===================================================================
--- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java	2007-05-01 09:13:20 UTC (rev 309)
+++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBDelimiterPZParser.java	2007-05-24 22:51:48 UTC (rev 310)
@@ -40,7 +40,6 @@
 import java.sql.SQLException;
 import java.util.List;
 
-import net.sf.pzfilereader.util.PZConstants;
 import net.sf.pzfilereader.util.ParserUtils;
 
 /**
@@ -50,18 +49,18 @@
  */
 public class DBDelimiterPZParser extends AbstractDelimiterPZParser {
     private Connection con;
-    
+
     private InputStream dataSourceStream;
 
-    public DBDelimiterPZParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition,
-            final char delimiter, final char qualifier, final boolean ignoreFirstRecord) {
+    public DBDelimiterPZParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition, final char delimiter,
+            final char qualifier, final boolean ignoreFirstRecord) {
         super(null, dataDefinition, delimiter, qualifier, ignoreFirstRecord);
         this.con = con;
         this.dataSourceStream = dataSourceStream;
     }
-    
-    public DBDelimiterPZParser(final Connection con, final Reader dataSourceReader, final String dataDefinition,
-            final char delimiter, final char qualifier, final boolean ignoreFirstRecord) {
+
+    public DBDelimiterPZParser(final Connection con, final Reader dataSourceReader, final String dataDefinition, final char delimiter,
+            final char qualifier, final boolean ignoreFirstRecord) {
         super(dataSourceReader, dataDefinition, delimiter, qualifier, ignoreFirstRecord);
         this.con = con;
     }
@@ -74,11 +73,12 @@
                 final Reader r = new InputStreamReader(dataSourceStream);
                 setDataSourceReader(r);
                 addToCloseReaderList(r);
-            }            
-            
+            }
+
             final List cmds = ParserUtils.buildMDFromSQLTable(con, getDataDefinition());
-            addToColumnMD(PZConstants.DETAIL_ID, cmds);
-            addToColumnMD(PZConstants.COL_IDX, ParserUtils.buidColumnIndexMap(cmds, this));
+            addToMetaData(cmds);
+            //            addToColumnMD(PZConstants.DETAIL_ID, cmds);
+            //            addToColumnMD(PZConstants.COL_IDX, ParserUtils.buidColumnIndexMap(cmds, this));
 
             if (cmds.isEmpty()) {
                 throw new FileNotFoundException("DATA DEFINITION CAN NOT BE FOUND IN THE DATABASE " + getDataDefinition());
@@ -88,7 +88,7 @@
             throw new InitialisationException(e);
         } catch (final FileNotFoundException e) {
             throw new InitialisationException(e);
-        } 
+        }
     }
 
     protected boolean shouldCreateMDFromFile() {
Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java
===================================================================
--- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java	2007-05-01 09:13:20 UTC (rev 309)
+++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DBFixedLengthPZParser.java	2007-05-24 22:51:48 UTC (rev 310)
@@ -42,8 +42,6 @@
 import java.sql.SQLException;
 import java.util.List;
 
-
-import net.sf.pzfilereader.util.PZConstants;
 import net.sf.pzfilereader.util.ParserUtils;
 
 /**
@@ -53,12 +51,12 @@
  */
 public class DBFixedLengthPZParser extends AbstractFixedLengthPZParser {
     private Connection con;
-        
+
     //this InputStream and file can be removed after support for 
     //file and inputstream is removed from the parserfactory.  The
     //methods have been deprecated..pz
     private InputStream dataSourceStream = null;
-    
+
     private File dataSource = null;
 
     public DBFixedLengthPZParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition) {
@@ -79,7 +77,7 @@
         super(dataSourceReader, dataDefinition);
         this.con = con;
     }
-    
+
     protected void init() {
         try {
             //check to see if the user is using a File or InputStream.  This is 
@@ -88,16 +86,17 @@
                 final Reader r = new InputStreamReader(dataSourceStream);
                 setDataSourceReader(r);
                 addToCloseReaderList(r);
-            } else if (dataSource != null){
+            } else if (dataSource != null) {
                 final Reader r = new FileReader(dataSource);
                 setDataSourceReader(r);
                 addToCloseReaderList(r);
             }
-            
+
             final List cmds = ParserUtils.buildMDFromSQLTable(con, getDataDefinition());
+            addToMetaData(cmds);
 
-            addToColumnMD(PZConstants.DETAIL_ID, cmds);
-            addToColumnMD(PZConstants.COL_IDX, ParserUtils.buidColumnIndexMap(cmds, this));
+            //            addToColumnMD(PZConstants.DETAIL_ID, cmds);
+            //            addToColumnMD(PZConstants.COL_IDX, ParserUtils.buidColumnIndexMap(cmds, this));
 
             if (cmds.isEmpty()) {
                 throw new FileNotFoundException("DATA DEFINITION CAN NOT BE FOUND IN THE DATABASE " + getDataDefinition());
@@ -108,7 +107,7 @@
             throw new InitialisationException(e);
         } catch (final FileNotFoundException e) {
             throw new InitialisationException(e);
-        } 
+        }
     }
 
     public DataSet doParse() {
Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java
===================================================================
--- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java	2007-05-01 09:13:20 UTC (rev 309)
+++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DataSet.java	2007-05-24 22:51:48 UTC (rev 310)
@@ -36,6 +36,7 @@
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
+import java.util.NoSuchElementException;
 import java.util.Properties;
 
 import net.sf.pzfilereader.ordering.OrderBy;
@@ -132,8 +133,7 @@
      * @return Date
      */
     Date getDate(final String column, final SimpleDateFormat sdf) throws ParseException;
-    
-    
+
     /**
      *  Returns the value of the column with the type of object
      *  specified
@@ -145,7 +145,7 @@
      * @return Object
      *             Value of the column in the specified object
      */
-    Object getObject(final String column, final Class classToConvertTo); 
+    Object getObject(final String column, final Class classToConvertTo);
 
     /**
      * Returns a String array of column names in the DataSet. This will assume
@@ -235,7 +235,6 @@
      */
     void orderRows(final OrderBy ob) throws Exception;
 
-
     /**
      * Sets data in the DataSet to lowercase
      */
@@ -274,7 +273,7 @@
      *            The strictNumericParse to set.
      */
     void setStrictNumericParse(final boolean strictNumericParse);
-    
+
     /**
      * Sets the properties from the pzconvert.properties file.
      * This file specifies the PZConverter implementation to use
@@ -284,7 +283,7 @@
      *          Property mapping for String to Object conversion
      */
     void setPZConvertProps(Properties props);
-    
+
     /**
      * Changes the value of the given column only for the 
      * given row which the pointer is currently sitting on. 
Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java
===================================================================
--- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java	2007-05-01 09:13:20 UTC (rev 309)
+++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultDataSet.java	2007-05-24 22:51:48 UTC (rev 310)
@@ -39,14 +39,15 @@
 import java.util.Date;
 import java.util.List;
 import java.util.Locale;
-import java.util.Map;
 import java.util.Properties;
 
 import net.sf.pzfilereader.ordering.OrderBy;
 import net.sf.pzfilereader.structure.ColumnMetaData;
 import net.sf.pzfilereader.structure.Row;
 import net.sf.pzfilereader.util.PZConstants;
+import net.sf.pzfilereader.util.PZStringUtils;
 import net.sf.pzfilereader.util.ParserUtils;
+import net.sf.pzfilereader.xml.PZMetaData;
 
 /**
  * @author xhensevb
@@ -56,7 +57,7 @@
     private final List rows = new ArrayList();
 
     private final List errors = new ArrayList();
-    
+
     private Properties pzConvertProps = null;
 
     /** Pointer for the current row in the array we are on */
@@ -74,12 +75,22 @@
      */
     private boolean strictNumericParse = false;
 
-    private Map columnMD;
-    
+    //    private Map columnMD;
+
+    private PZMetaData pzMetaData;
+
     private PZParser pzparser;
 
-    public DefaultDataSet(final Map columnMD2, final PZParser pzparser) {
-        this.columnMD = columnMD2;
+    //    /**
+    //     * @deprecated use the constructor with PZMetaData 
+    //     */
+    //    public DefaultDataSet(final Map columnMD2, final PZParser pzparser) {
+    //        this.columnMD = columnMD2;
+    //        this.pzparser = pzparser;
+    //    }
+
+    public DefaultDataSet(final PZMetaData pzMetaData, final PZParser pzparser) {
+        this.pzMetaData = pzMetaData;
         this.pzparser = pzparser;
     }
 
@@ -100,8 +111,8 @@
         ColumnMetaData column = null;
         String[] array = null;
 
-        if (columnMD != null) {
-            final List cmds = ParserUtils.getColumnMetaData(PZConstants.DETAIL_ID, columnMD);
+        if (/*columnMD != null || */pzMetaData != null) {
+            final List cmds = pzMetaData.getColumnsNames();// ParserUtils.getColumnMetaData(PZConstants.DETAIL_ID, columnMD);
 
             array = new String[cmds.size()];
             for (int i = 0; i < cmds.size(); i++) {
@@ -121,8 +132,8 @@
     public String[] getColumns(final String recordID) {
         String[] array = null;
 
-        if (columnMD != null) {
-            final List cmds = ParserUtils.getColumnMetaData(recordID, columnMD);
+        if (pzMetaData != null) {
+            final List cmds = ParserUtils.getColumnMetaData(recordID, pzMetaData);
             array = new String[cmds.size()];
             for (int i = 0; i < cmds.size(); i++) {
                 final ColumnMetaData column = (ColumnMetaData) cmds.get(i);
@@ -149,9 +160,8 @@
      *      java.text.SimpleDateFormat)
      */
     public Date getDate(final String column, final SimpleDateFormat sdf) throws ParseException {
-        final Row row = (Row) rows.get(pointer);
-        final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column, pzparser));
-        if (s.trim().equals("")) {
+        final String s = getStringValue(column);
+        if (PZStringUtils.isBlank(s)) {
             //don't do the parse on empties
             return null;
         }
@@ -165,10 +175,9 @@
      */
     public double getDouble(final String column) {
         final StringBuffer newString = new StringBuffer();
-        final Row row = (Row) rows.get(pointer);
+        final String s = getStringValue(column);
+        //        final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column, pzparser));
 
-        final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column, pzparser));
-
         if (!strictNumericParse) {
             newString.append(ParserUtils.stripNonDoubleChars(s));
         } else {
@@ -177,11 +186,14 @@
 
         return Double.parseDouble(newString.toString());
     }
-    
-    
-    public Object getObject(String column, Class classToConvertTo) {
+
+    private String getStringValue(final String column) {
         final Row row = (Row) rows.get(pointer);
-        final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column, pzparser));
+        return row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), pzMetaData, column, pzparser));
+    }
+
+    public Object getObject(final String column, final Class classToConvertTo) {
+        final String s = getStringValue(column);
         return ParserUtils.runPzConverter(pzConvertProps, s, classToConvertTo);
     }
 
@@ -222,17 +234,13 @@
      * @see net.sf.pzfilereader.IDataSet#getInt(java.lang.String)
      */
     public int getInt(final String column) {
-        final StringBuffer newString = new StringBuffer();
-        final Row row = (Row) rows.get(pointer);
-        final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column, pzparser));
+        final String s = getStringValue(column);
 
         if (!strictNumericParse) {
-            newString.append(ParserUtils.stripNonLongChars(s));
-        } else {
-            newString.append(s);
+            return Integer.parseInt(ParserUtils.stripNonLongChars(s));
         }
 
-        return Integer.parseInt(newString.toString());
+        return Integer.parseInt(s);
     }
 
     /*
@@ -259,13 +267,12 @@
      * @see net.sf.pzfilereader.IDataSet#getString(java.lang.String)
      */
     public String getString(final String column) {
-        final Row row = (Row) rows.get(pointer);
-        final String s = row.getValue(ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column, pzparser));
-        
-        if (pzparser.isNullEmptyStrings() && s.trim().equals("")) {
+        final String s = getStringValue(column);
+
+        if (pzparser.isNullEmptyStrings() && PZStringUtils.isBlank(s)) {
             return null;
-        }   
-        
+        }
+
         if (upperCase) {
             // convert data to uppercase before returning
             // return row.getValue(ParserUtils.findColumn(column,
@@ -283,12 +290,11 @@
         // return value as how it is in the file
         return s;
     }
-    
-    
-    public void setValue(String column, String value) {
+
+    public void setValue(final String column, final String value) {
         final Row row = (Row) rows.get(pointer);
-        final int colIndex = ParserUtils.getColumnIndex(row.getMdkey(), columnMD, column, pzparser);
-        
+        final int colIndex = ParserUtils.getColumnIndex(row.getMdkey(), pzMetaData, column, pzparser);
+
         row.setValue(colIndex, value);
     }
 
@@ -350,7 +356,8 @@
         // with <RECORD> mappings");
         // }
         if (ob != null && rows != null) {
-            final List cmds = ParserUtils.getColumnMetaData(PZConstants.DETAIL_ID, columnMD);
+            final List cmds = pzMetaData.getColumnsNames();
+            //            final List cmds = ParserUtils.getColumnMetaData(PZConstants.DETAIL_ID, columnMD);
             ob.setColumnMD(cmds);
             Collections.sort(rows, ob);
             goTop();
@@ -439,32 +446,18 @@
         rows.remove(pointer);
         pointer--;
     }
-    
-    public void setPZConvertProps(Properties props) {
+
+    public void setPZConvertProps(final Properties props) {
         this.pzConvertProps = props;
     }
 
-    protected void setColumnMD(final Map columnMD) {
-        this.columnMD = columnMD;
-    }
-    
     /**
-     * Returns the column meta data assoicated with 
-     * this DataSet
-     * 
-     * @return Map
-     */
-    protected Map getColumnMD() {
-        return this.columnMD;
-    }
-
-    /**
      * @param pointer the pointer to set
      */
-    protected void setPointer(int pointer) {
+    protected void setPointer(final int pointer) {
         this.pointer = pointer;
     }
-    
+
     /**
      * Clears all of the in memory rows of the DataSet
      *
@@ -473,4 +466,12 @@
         rows.clear();
     }
 
+    public PZMetaData getPzMetaData() {
+        return pzMetaData;
+    }
+
+    public void setPzMetaData(final PZMetaData pzMetaData) {
+        this.pzMetaData = pzMetaData;
+    }
+
 }
Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultPZParserFactory.java
===================================================================
--- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultPZParserFactory.java	2007-05-01 09:13:20 UTC (rev 309)
+++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DefaultPZParserFactory.java	2007-05-24 22:51:48 UTC (rev 310)
@@ -87,11 +87,11 @@
     public PZParser newFixedLengthParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream) {
         return new FixedLengthPZParser(pzmapXMLStream, dataSourceStream);
     }
-    
+
     public PZParser newFixedLengthParser(final Connection con, final Reader dataSource, final String dataDefinition) {
         return new DBFixedLengthPZParser(con, dataSource, dataDefinition);
     }
-    
+
     public PZParser newFixedLengthParser(final Reader pzmapXMLStream, final Reader dataSource) {
         return new FixedLengthPZParser(pzmapXMLStream, dataSource);
     }
@@ -102,8 +102,8 @@
      * @see net.sf.pzfilereader.PZParserFactory#newParser(java.sql.Connection,
      *      java.io.InputStream, java.lang.String, char, char, boolean)
      */
-    public PZParser newDelimitedParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition,
-            final char delimiter, final char qualifier, final boolean ignoreFirstRecord) {
+    public PZParser newDelimitedParser(final Connection con, final InputStream dataSourceStream, final String dataDefinition, final char delimiter,
+            final char qualifier, final boolean ignoreFirstRecord) {
         return new DBDelimiterPZParser(con, dataSourceStream, dataDefinition, delimiter, qualifier, ignoreFirstRecord);
     }
 
@@ -124,8 +124,8 @@
      * @see net.sf.pzfilereader.PZParserFactory#newParser(java.io.InputStream,
      *      java.io.InputStream, char, char, boolean)
      */
-    public PZParser newDelimitedParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream,
-            final char delimiter, final char qualifier, final boolean ignoreFirstRecord) {
+    public PZParser newDelimitedParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream, final char delimiter,
+            final char qualifier, final boolean ignoreFirstRecord) {
         return new DelimiterPZParser(pzmapXMLStream, dataSourceStream, delimiter, qualifier, ignoreFirstRecord);
     }
 
@@ -148,16 +148,18 @@
     public PZParser newDelimitedParser(final InputStream dataSourceStream, final char delimiter, final char qualifier) {
         return new DelimiterPZParser(dataSourceStream, delimiter, qualifier, false);
     }
-    
-    public PZParser newDelimitedParser(Connection con, Reader dataSource, String dataDefinition, char delimiter, char qualifier, boolean ignoreFirstRecord) {
+
+    public PZParser newDelimitedParser(final Connection con, final Reader dataSource, final String dataDefinition, final char delimiter,
+            final char qualifier, final boolean ignoreFirstRecord) {
         return new DBDelimiterPZParser(con, dataSource, dataDefinition, delimiter, qualifier, ignoreFirstRecord);
     }
-    
-    public PZParser newDelimitedParser(Reader dataSource, char delimiter, char qualifier) {
+
+    public PZParser newDelimitedParser(final Reader dataSource, final char delimiter, final char qualifier) {
         return new DelimiterPZParser(dataSource, delimiter, qualifier, false);
     }
-    
-    public PZParser newDelimitedParser(Reader pzmapXML, Reader dataSource, char delimiter, char qualifier, boolean ignoreFirstRecord) {
+
+    public PZParser newDelimitedParser(final Reader pzmapXML, final Reader dataSource, final char delimiter, final char qualifier,
+            final boolean ignoreFirstRecord) {
         return new DelimiterPZParser(pzmapXML, dataSource, delimiter, qualifier, ignoreFirstRecord);
     }
 
Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java
===================================================================
--- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java	2007-05-01 09:13:20 UTC (rev 309)
+++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/DelimiterPZParser.java	2007-05-24 22:51:48 UTC (rev 310)
@@ -49,28 +49,23 @@
  */
 public class DelimiterPZParser extends AbstractDelimiterPZParser {
     private InputStream pzmapXMLStream = null;
-
     private File pzmapXML = null;
-   
     private Reader pzmapReader;
-    
+
     //this InputStream and file can be removed after support for 
     //file and inputstream is removed from the parserfactory.  The
     //methods have been deprecated..pz
     private InputStream dataSourceStream = null;
-    
     private File dataSource = null;
-   
 
-    public DelimiterPZParser(final File pzmapXML, final File dataSource, final char delimiter, final char qualifier,
-            final boolean ignoreFirstRecord) {
+    public DelimiterPZParser(final File pzmapXML, final File dataSource, final char delimiter, final char qualifier, final boolean ignoreFirstRecord) {
         super(null, delimiter, qualifier, ignoreFirstRecord);
         this.pzmapXML = pzmapXML;
         this.dataSource = dataSource;
     }
 
-    public DelimiterPZParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream, final char delimiter,
-            final char qualifier, final boolean ignoreFirstRecord) {
+    public DelimiterPZParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream, final char delimiter, final char qualifier,
+            final boolean ignoreFirstRecord) {
         super(null, delimiter, qualifier, ignoreFirstRecord);
         this.pzmapXMLStream = pzmapXMLStream;
         this.dataSourceStream = dataSourceStream;
@@ -81,17 +76,15 @@
         this.dataSource = dataSource;
     }
 
-    public DelimiterPZParser(final InputStream dataSourceStream, final char delimiter, final char qualifier,
-            final boolean ignoreFirstRecord) {
+    public DelimiterPZParser(final InputStream dataSourceStream, final char delimiter, final char qualifier, final boolean ignoreFirstRecord) {
         super(null, delimiter, qualifier, ignoreFirstRecord);
         this.dataSourceStream = dataSourceStream;
     }
-    
-    public DelimiterPZParser(final Reader dataSourceReader, final char delimiter, final char qualifier,
-            final boolean ignoreFirstRecord) {
+
+    public DelimiterPZParser(final Reader dataSourceReader, final char delimiter, final char qualifier, final boolean ignoreFirstRecord) {
         super(dataSourceReader, delimiter, qualifier, ignoreFirstRecord);
     }
-    
+
     public DelimiterPZParser(final Reader dataSourceReader, final Reader pzmapReader, final char delimiter, final char qualifier,
             final boolean ignoreFirstRecord) {
         super(dataSourceReader, delimiter, qualifier, ignoreFirstRecord);
@@ -106,13 +99,12 @@
                 final Reader r = new InputStreamReader(dataSourceStream);
                 setDataSourceReader(r);
                 addToCloseReaderList(r);
-            } else if (dataSource != null){
+            } else if (dataSource != null) {
                 final Reader r = new FileReader(dataSource);
                 setDataSourceReader(r);
                 addToCloseReaderList(r);
             }
-            
-            
+
             boolean closeMapReader = false;
             if (pzmapXML != null) {
                 this.pzmapReader = new FileReader(pzmapXML);
@@ -121,10 +113,11 @@
                 this.pzmapReader = new InputStreamReader(pzmapXMLStream);
                 closeMapReader = true;
             }
-            
+
             if (this.pzmapReader != null) {
                 try {
-                    setColumnMD(PZMapParser.parse(this.pzmapReader, this));
+                    //                    setColumnMD(PZMapParser.parse(this.pzmapReader, this));
+                    setPzMetaData(PZMapParser.parseMap(this.pzmapReader, this));
                 } finally {
                     if (closeMapReader) {
                         //only close the reader if it is one we created
@@ -133,7 +126,7 @@
                     }
                 }
             }
-            
+
             setInitialised(true);
         } catch (final JDOMException e) {
             throw new InitialisationException(e);
Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java
===================================================================
--- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java	2007-05-01 09:13:20 UTC (rev 309)
+++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/FixedLengthPZParser.java	2007-05-24 22:51:48 UTC (rev 310)
@@ -52,14 +52,14 @@
     private InputStream pzmapXMLStream;
 
     private File pzmapXML;
-    
+
     private Reader pzmapReader;
-    
+
     //this InputStream and file can be removed after support for 
     //file and inputstream is removed from the parserfactory.  The
     //methods have been deprecated..pz
     private InputStream dataSourceStream = null;
-    
+
     private File dataSource = null;
 
     public FixedLengthPZParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream) {
@@ -73,9 +73,9 @@
         this.pzmapXML = pzmapXML;
         this.dataSource = dataSource;
     }
-    
+
     public FixedLengthPZParser(final Reader pzmapReader, final Reader dataSourceReader) {
-        super (dataSourceReader);
+        super(dataSourceReader);
         this.pzmapReader = pzmapReader;
     }
 
@@ -87,13 +87,12 @@
                 final Reader r = new InputStreamReader(dataSourceStream);
                 setDataSourceReader(r);
                 addToCloseReaderList(r);
-            } else if (dataSource != null){
+            } else if (dataSource != null) {
                 final Reader r = new FileReader(dataSource);
                 setDataSourceReader(r);
                 addToCloseReaderList(r);
             }
-            
-            
+
             boolean closeMapReader = false;
             if (pzmapXML != null) {
                 this.pzmapReader = new FileReader(pzmapXML);
@@ -102,9 +101,10 @@
                 this.pzmapReader = new InputStreamReader(pzmapXMLStream);
                 closeMapReader = true;
             }
-            
+
             try {
-                setColumnMD(PZMapParser.parse(this.pzmapReader, this));
+                //                setColumnMD(PZMapParser.parse(this.pzmapReader, this));
+                setPzMetaData(PZMapParser.parseMap(this.pzmapReader, this));
             } finally {
                 if (closeMapReader) {
                     //only close the reader if it is one we created
@@ -112,8 +112,8 @@
                     this.pzmapReader.close();
                 }
             }
-            
-          //  setInitialised(true);
+
+            //  setInitialised(true);
         } catch (final JDOMException e) {
             throw new InitialisationException(e);
         } catch (final IOException e) {
Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java
===================================================================
--- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java	2007-05-01 09:13:20 UTC (rev 309)
+++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParser.java	2007-05-24 22:51:48 UTC (rev 310)
@@ -62,7 +62,7 @@
      *            producing an error
      */
     void setHandlingShortLines(final boolean handleShortLines);
-    
+
     /**
      * 
      * @return true, detail lines with a length or column count > the mapping
@@ -70,7 +70,7 @@
      *         lines as erros in the DataError collection.
      */
     boolean isIgnoreExtraColumns();
-    
+
     /**
      * 
      * @param ignoreExtraColumns when true, detail lines with a length or column 
@@ -78,7 +78,7 @@
      *         will NOT register these lines as erros in the DataError collection.
      */
     void setIgnoreExtraColumns(final boolean ignoreExtraColumns);
-    
+
     /**
      * Default is false
      * 
@@ -87,7 +87,7 @@
      *         Example when false: Column name = AColumnName ; getString("acolumnname") would pass
      */
     boolean isColumnNamesCaseSensitive();
-    
+
     /**
      * Default is false
      * 
@@ -97,28 +97,27 @@
      *         Example when false: Column name = AColumnName ; getString("acolumnname") would pass
      */
     void setColumnNamesCaseSensitive(final boolean columnNamesCaseSensitive);
-    
+
     /**
      * Default is false
      * 
      * @return true, warnings encountered durring parsing will not be included in the DataSet errors
      */
     boolean isIgnoreParseWarnings();
-    
-    
+
     /**
      * 
      * @param ignoreParseWarnings when true, warnings encountered durring parsing will not be included 
      *                            in the DataSet errors
      */
     void setIgnoreParseWarnings(final boolean ignoreParseWarnings);
-    
+
     /**
      * 
      * @return true, empty Strings will get returned as NULL when calling DataSet.getString()
      */
     boolean isNullEmptyStrings();
-    
+
     /**
      * 
      * @param nullEmptyStrings when true, empty Strings will get returned as NULL when calling DataSet.getString()
Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java
===================================================================
--- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java	2007-05-01 09:13:20 UTC (rev 309)
+++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/PZParserFactory.java	2007-05-24 22:51:48 UTC (rev 310)
@@ -116,7 +116,7 @@
      * @return PZParser
      */
     PZParser newFixedLengthParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream);
-    
+
     /**
      * Constructs a new DataSet using the database table file layout method.
      * This is used for a FIXED LENGTH text file.
@@ -134,7 +134,7 @@
      * @return PZParser
      */
     PZParser newFixedLengthParser(final Connection con, final Reader dataSource, final String dataDefinition);
-    
+
     /**
      * New constructor based on Reader. Constructs a new DataSet using the
      * PZMAP XML file layout method. This is used for a FIXED LENGTH text file.
@@ -187,9 +187,9 @@
      *            The InputStream can be wrapped in a "new InputStreamReader(InputStream)"
      * @return PZParser
      */
-    PZParser newDelimitedParser(final Connection con, final InputStream dataSource, final String dataDefinition,
-            final char delimiter, final char qualifier, final boolean ignoreFirstRecord);
-    
+    PZParser newDelimitedParser(final Connection con, final InputStream dataSource, final String dataDefinition, final char delimiter,
+            final char qualifier, final boolean ignoreFirstRecord);
+
     /**
      * New constructor based on Reader. Constructs a new DataSet using the
      * database table file layout method. This is used for a DELIMITED text
@@ -218,8 +218,8 @@
      *            skips the first line that contains data in the file
      * @return PZParser
      */
-    PZParser newDelimitedParser(final Connection con, final Reader dataSource, final String dataDefinition,
-            final char delimiter, final char qualifier, final boolean ignoreFirstRecord);
+    PZParser newDelimitedParser(final Connection con, final Reader dataSource, final String dataDefinition, final char delimiter,
+            final char qualifier, final boolean ignoreFirstRecord);
 
     /**
      * Constructs a new DataSet using the PZMAP XML file layout method. This is
@@ -270,8 +270,7 @@
      */
     PZParser newDelimitedParser(final Reader pzmapXML, final Reader dataSource, final char delimiter, final char qualifier,
             final boolean ignoreFirstRecord);
-    
-    
+
     /**
      * New constructor based on InputStream. Constructs a new DataSet using the
      * PZMAP XML file layout method. This is used for a DELIMITED text file.
@@ -299,8 +298,8 @@
      *            The InputStream can be wrapped in a "new InputStreamReader(InputStream)"
      * @return PZParser
      */
-    PZParser newDelimitedParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream, final char delimiter,
-            final char qualifier, final boolean ignoreFirstRecord);
+    PZParser newDelimitedParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream, final char delimiter, final char qualifier,
+            final boolean ignoreFirstRecord);
 
     /**
      * Constructs a new DataSet using the first line of data found in the text
@@ -322,7 +321,7 @@
      * @return PZParser
      */
     PZParser newDelimitedParser(final File dataSource, final char delimiter, final char qualifier);
-    
+
     /**
      * Constructs a new DataSet using the first line of data found in the text
      * file as the column names. This is used for a DELIMITED text file. esacpe
Modified: trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java
===================================================================
--- trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java	2007-05-01 09:13:20 UTC (rev 309)
+++ trunk/PZFileReader/src/main/java/net/sf/pzfilereader/brparse/BuffReaderDelimPZParser.java	2007-05-24 22:51:48 UTC (rev 310)
@@ -38,11 +38,7 @@
 import java.io.InputStream;
 import java.io.Reader;
 import java.util.List;
-import java.util.Map;
 
-import org.slf4j.Logger;
-import org.slf4j.Logg...
 
[truncated message content] |