svn commit: r923829 - in /ofbiz/branches/release09.04: ./ framework/datafile/src/org/ofbiz/datafile/Record.java framework/datafile/src/org/ofbiz/datafile/RecordIterator.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r923829 - in /ofbiz/branches/release09.04: ./ framework/datafile/src/org/ofbiz/datafile/Record.java framework/datafile/src/org/ofbiz/datafile/RecordIterator.java

jleroux@apache.org
Author: jleroux
Date: Tue Mar 16 16:03:37 2010
New Revision: 923829

URL: http://svn.apache.org/viewvc?rev=923829&view=rev
Log:
"Applied fix from trunk for revision: 923828"
------------------------------------------------------------------------
r923828 | jleroux | 2010-03-16 17:00:32 +0100 (mar. 16 mars 2010) | 3 lignes

A patch from BJ Freeman "Datafile does not catch lack of delimiter if at end of line." (https://issues.apache.org/jira/browse/OFBIZ-3026) - OFBIZ-3026

There was an issue if the datafile did not have the last delimiter before the CRLF.  This fixes it when there are not data for a field and also fixes the EOL.
------------------------------------------------------------------------


Modified:
    ofbiz/branches/release09.04/   (props changed)
    ofbiz/branches/release09.04/framework/datafile/src/org/ofbiz/datafile/Record.java
    ofbiz/branches/release09.04/framework/datafile/src/org/ofbiz/datafile/RecordIterator.java

Propchange: ofbiz/branches/release09.04/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Mar 16 16:03:37 2010
@@ -1 +1 @@
-/ofbiz/trunk:765933,766011,766015,766293,766307,766316,766325,766462,766522,766800,767060,767072,767093,767098-767099,767102,767123,767125,767127,767279,767287,767671,767688,767694,767822,767845,768358,768490,768550,768675,768686,768705,768811,768815,768960,769030,769500,770272,770308,770997,771073,771477,772401,772464-772465,773076,773557,773628,773659,773697,774014,774632,774661,774995,775292,775667,776227,776594,776620,776922,777004,777020,777768,777792,777893,777947,778078,778094,778107,778273,778278,778280,778364,778374,778402,778576,778594,778628,779020,779477,779496,779639,779834,779856,779866,779873,780111,780138,780180,780199,780203,780906,780945,781201,781534,781549,781669,781680,781694,782663,783257,783266,783833,783913,783917,785123,785764,785967,786778,787126,787435-787436,787442,787520,788965,788983,788987,789329,789337,789506,789548,796769,799185,800461,800846,801023,802346,804364,805307,806127,806377,806914,808786-808787,808792,809141,810370,810438,810465,810
 807,810809,810814,810832,810836,810878,810917,811020,811280,811297,811419,811528,811708,811714,811716,811793,811838,811860,811865,811870,812159,812182,812192,812456,812540,813126,813131,813283,813672,813702,814168,814205,814251,814349,814531,814576,814681,814731,815158,815165,815350,815687,815977,816255,816863,818030,818049,818150,818494,818500,818716,818976,819275-819276,819282,819337,821263,821270,822659,823877-823878,823883,823888,823892,824511,825181-825182,826253,827730,828971,829085,829376,829412,829416,829527,830091,830112,830366,830528,830677,830874,830880,831238,831801,832361,832698,832776,832908,833324,833686,833703,834825,835161,835357,835585,836015,881194,881713,882072,882326,882918,883933,884023,884529,884546,884758,885122,885702,887916,888111,888559,888587,889666,890050,890107,890245,891378,891620,896649,899188,899833,900024,900026,900050,900217,900273,901628,907342-907343,910460,912587,915332,916252,916703,916925,917435,922042
+/ofbiz/trunk:765933,766011,766015,766293,766307,766316,766325,766462,766522,766800,767060,767072,767093,767098-767099,767102,767123,767125,767127,767279,767287,767671,767688,767694,767822,767845,768358,768490,768550,768675,768686,768705,768811,768815,768960,769030,769500,770272,770308,770997,771073,771477,772401,772464-772465,773076,773557,773628,773659,773697,774014,774632,774661,774995,775292,775667,776227,776594,776620,776922,777004,777020,777768,777792,777893,777947,778078,778094,778107,778273,778278,778280,778364,778374,778402,778576,778594,778628,779020,779477,779496,779639,779834,779856,779866,779873,780111,780138,780180,780199,780203,780906,780945,781201,781534,781549,781669,781680,781694,782663,783257,783266,783833,783913,783917,785123,785764,785967,786778,787126,787435-787436,787442,787520,788965,788983,788987,789329,789337,789506,789548,796769,799185,800461,800846,801023,802346,804364,805307,806127,806377,806914,808786-808787,808792,809141,810370,810438,810465,810
 807,810809,810814,810832,810836,810878,810917,811020,811280,811297,811419,811528,811708,811714,811716,811793,811838,811860,811865,811870,812159,812182,812192,812456,812540,813126,813131,813283,813672,813702,814168,814205,814251,814349,814531,814576,814681,814731,815158,815165,815350,815687,815977,816255,816863,818030,818049,818150,818494,818500,818716,818976,819275-819276,819282,819337,821263,821270,822659,823877-823878,823883,823888,823892,824511,825181-825182,826253,827730,828971,829085,829376,829412,829416,829527,830091,830112,830366,830528,830677,830874,830880,831238,831801,832361,832698,832776,832908,833324,833686,833703,834825,835161,835357,835585,836015,881194,881713,882072,882326,882918,883933,884023,884529,884546,884758,885122,885702,887916,888111,888559,888587,889666,890050,890107,890245,891378,891620,896649,899188,899833,900024,900026,900050,900217,900273,901628,907342-907343,910460,912587,915332,916252,916703,916925,917435,922042,923828

Modified: ofbiz/branches/release09.04/framework/datafile/src/org/ofbiz/datafile/Record.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release09.04/framework/datafile/src/org/ofbiz/datafile/Record.java?rev=923829&r1=923828&r2=923829&view=diff
==============================================================================
--- ofbiz/branches/release09.04/framework/datafile/src/org/ofbiz/datafile/Record.java (original)
+++ ofbiz/branches/release09.04/framework/datafile/src/org/ofbiz/datafile/Record.java Tue Mar 16 16:03:37 2010
@@ -551,18 +551,24 @@ public class Record implements Serializa
                     strVal = (String)modelField.defaultValue;
                 }
             } else {
-                try {
-                    strVal = st.nextToken();
-                    if (strVal.equals("" + delimiter)) {
-                        strVal = null;
-                    } else {
-                        if (st.hasMoreTokens()) {
-                            st.nextToken();
+                //some input lines may be less than the header model.
+                if (st.hasMoreTokens()) {
+                    try {
+                        strVal = st.nextToken();
+                        if (strVal.equals("" + delimiter)) {
+                            strVal = null;
+                        } else {
+                            if (st.hasMoreTokens()) {
+                                st.nextToken();
+                            }
                         }
-                    }
-                } catch (NoSuchElementException nsee) {
-                    throw new DataFileException("Field " + modelField.name + " could not be read from a line (" + lineNum + ") with only " +
-                            line.length() + " chars.", nsee);
+                    } catch (NoSuchElementException nsee) {
+                        throw new DataFileException("Field " + modelField.name + " could not be read from a line (" + lineNum + ") with only " +
+                                line.length() + " chars.", nsee);
+                    }                
+                }
+                else { //if input line is less than the header model then pad with null
+                    strVal = null;
                 }
             }
             try {

Modified: ofbiz/branches/release09.04/framework/datafile/src/org/ofbiz/datafile/RecordIterator.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release09.04/framework/datafile/src/org/ofbiz/datafile/RecordIterator.java?rev=923829&r1=923828&r2=923829&view=diff
==============================================================================
--- ofbiz/branches/release09.04/framework/datafile/src/org/ofbiz/datafile/RecordIterator.java (original)
+++ ofbiz/branches/release09.04/framework/datafile/src/org/ofbiz/datafile/RecordIterator.java Tue Mar 16 16:03:37 2010
@@ -26,6 +26,8 @@ import java.io.InputStreamReader;
 import java.net.URL;
 import java.util.Stack;
 
+import org.ofbiz.base.util.Debug;
+
 
 /**
  *  Record Iterator for reading large files
@@ -84,7 +86,6 @@ public class RecordIterator {
         this.nextRecord = null;
 
         boolean isFixedRecord = ModelDataFile.SEP_FIXED_RECORD.equals(modelDataFile.separatorStyle);
-        boolean isFixedLength = ModelDataFile.SEP_FIXED_LENGTH.equals(modelDataFile.separatorStyle);
         boolean isDelimited = ModelDataFile.SEP_DELIMITED.equals(modelDataFile.separatorStyle);
         // if (Debug.infoOn()) Debug.logInfo("[DataFile.readDataFile] separatorStyle is " + modelDataFile.separatorStyle + ", isFixedRecord: " + isFixedRecord, module);
 
@@ -111,12 +112,14 @@ public class RecordIterator {
         } else {
             try {
                 nextLine = br.readLine();
-            } catch (IOException e) {
+                Debug.logInfo("br.readLine()=\"" + nextLine + "\"", module);
+                } catch (IOException e) {
                 throw new DataFileException("Error reading line #" + nextLineNum + " from location: " + locationInfo, e);
             }
         }
 
-        if (nextLine != null && !(eof.equals(nextLine.substring(0,1)) && 1 == nextLine.length())) {
+        //if (nextLine != null && !(eof.equals(nextLine.substring(0,1)) && 1 == nextLine.length())) {
+        if (nextLine != null && !((nextLine.contains(eof) ) )) {
             nextLineNum++;
             ModelRecord modelRecord = findModelForLine(nextLine, nextLineNum, modelDataFile);
             if (isDelimited) {
@@ -136,7 +139,8 @@ public class RecordIterator {
     }
 
     public boolean hasNext() {
-        return nextLine != null && !(eof.equals(nextLine.substring(0,1)) && 1 == nextLine.length());
+        //return nextLine != null && !(eof.equals(nextLine.substring(0,1)) && 1 == nextLine.length());
+        return nextLine != null && !((nextLine.contains(eof) ) );
 
     }