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); } |
Free forum by Nabble | Edit this page |