You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2008/10/29 21:30:16 UTC

svn commit: r709002 - in /ofbiz/trunk/framework/datafile: dtd/datafiles.xsd src/org/ofbiz/datafile/ModelDataFile.java src/org/ofbiz/datafile/ModelDataFileReader.java src/org/ofbiz/datafile/Record.java src/org/ofbiz/datafile/RecordIterator.java

Author: jleroux
Date: Wed Oct 29 13:30:15 2008
New Revision: 709002

URL: http://svn.apache.org/viewvc?rev=709002&view=rev
Log:
A patch from Ray Barlow " Import CSV file using specify text delimiter" (https://issues.apache.org/jira/browse/OFBIZ-2031) - OFBIZ-2031


Modified:
    ofbiz/trunk/framework/datafile/dtd/datafiles.xsd
    ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/ModelDataFile.java
    ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/ModelDataFileReader.java
    ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/Record.java
    ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/RecordIterator.java

Modified: ofbiz/trunk/framework/datafile/dtd/datafiles.xsd
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/datafile/dtd/datafiles.xsd?rev=709002&r1=709001&r2=709002&view=diff
==============================================================================
--- ofbiz/trunk/framework/datafile/dtd/datafiles.xsd (original)
+++ ofbiz/trunk/framework/datafile/dtd/datafiles.xsd Wed Oct 29 13:30:15 2008
@@ -39,6 +39,7 @@
         <xs:attribute name="sender"/>
         <xs:attribute name="receiver"/>
         <xs:attribute name="delimiter"/>
+        <xs:attribute name="text-delimiter"/>
         <xs:attribute name="record-length"/>
         <xs:attribute name="separator-style" use="required">
             <xs:simpleType>

Modified: ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/ModelDataFile.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/ModelDataFile.java?rev=709002&r1=709001&r2=709002&view=diff
==============================================================================
--- ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/ModelDataFile.java (original)
+++ ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/ModelDataFile.java Wed Oct 29 13:30:15 2008
@@ -50,6 +50,9 @@
     /** The delimiter used in the file, if delimiter separated fields are used */
     public char delimiter = '|';
 
+    /** The text delimiter, like quots, used in the file, if delimiter separated fields are used */
+    public String textDelimiter = null;
+
     /** The field serparator style, either fixed-length, or delimited */
     public String separatorStyle = "";
 

Modified: ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/ModelDataFileReader.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/ModelDataFileReader.java?rev=709002&r1=709001&r2=709002&view=diff
==============================================================================
--- ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/ModelDataFileReader.java (original)
+++ ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/ModelDataFileReader.java Wed Oct 29 13:30:15 2008
@@ -202,6 +202,11 @@
             dataFile.delimiter = tempStr.charAt(0);
         }
 
+        tempStr = UtilXml.checkEmpty(dataFileElement.getAttribute("text-delimiter"));
+        if (tempStr != null && tempStr.length() > 0) {
+            dataFile.textDelimiter = tempStr;
+        }
+
         dataFile.separatorStyle = UtilXml.checkEmpty(dataFileElement.getAttribute("separator-style"));
         dataFile.description = UtilXml.checkEmpty(dataFileElement.getAttribute("description"));
 

Modified: ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/Record.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/Record.java?rev=709002&r1=709001&r2=709002&view=diff
==============================================================================
--- ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/Record.java (original)
+++ ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/Record.java Wed Oct 29 13:30:15 2008
@@ -516,7 +516,7 @@
      * @throws DataFileException Exception thown for various errors, generally has a nested exception
      * @return
      */
-    public static Record createDelimitedRecord(String line, int lineNum, ModelRecord modelRecord, char delimiter) throws DataFileException {
+    public static Record createDelimitedRecord(String line, int lineNum, ModelRecord modelRecord, char delimiter, String textDelimiter) throws DataFileException {
         Record record = new Record(modelRecord);
 
         StringTokenizer st = null;
@@ -552,6 +552,9 @@
                 }
             }
             try {
+                if (textDelimiter != null && (strVal.startsWith(textDelimiter) && strVal.endsWith(textDelimiter))) {
+                    strVal = strVal.substring(textDelimiter.length(), strVal.length() - textDelimiter.length());
+                }
                 record.setString(modelField.name, strVal);
             } catch (java.text.ParseException e) {
                 throw new DataFileException("Could not parse field " + modelField.name + ", format string \"" + modelField.format + "\" with value " + strVal +

Modified: ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/RecordIterator.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/RecordIterator.java?rev=709002&r1=709001&r2=709002&view=diff
==============================================================================
--- ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/RecordIterator.java (original)
+++ ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/RecordIterator.java Wed Oct 29 13:30:15 2008
@@ -120,7 +120,7 @@
             nextLineNum++;
             ModelRecord modelRecord = findModelForLine(nextLine, nextLineNum, modelDataFile);
             if (isDelimited) {
-                this.nextRecord = Record.createDelimitedRecord(nextLine, nextLineNum, modelRecord, modelDataFile.delimiter);
+                this.nextRecord = Record.createDelimitedRecord(nextLine, nextLineNum, modelRecord, modelDataFile.delimiter, modelDataFile.textDelimiter);
             } else {
                 this.nextRecord = Record.createRecord(nextLine, nextLineNum, modelRecord);
             }