BJ, Adam,

I prefer top keep these lines for the moment. It's quicker if we need them 
later and harmless for the moment.
The Debug.logInfo line could be commented out also, maybe useful later, without 
almost any handlings
For the remaining I agree it's a good exercice

Jacques

From: "BJ Freeman" <[email protected]>
thanks for the comments.
how does the history shows lines removed?
How can I keep those lines I commented out in my code but not in the patch?

=========================
BJ Freeman
http://bjfreeman.elance.com
Strategic Power Office with Supplier Automation 
<http://www.businessesnetwork.com/automation/viewforum.php?f=93>
Specialtymarket.com <http://www.specialtymarket.com/>

Systems Integrator-- Glad to Assist

Chat  Y! messenger: bjfr33man
Linkedin
<http://www.linkedin.com/profile?viewProfile=&key=1237480&locale=en_US&trk=tab_pro>


Adam Heath sent the following on 3/16/2010 9:06 AM:
[email protected] wrote:
Author: jleroux
Date: Tue Mar 16 16:00:32 2010
New Revision: 923828

URL: http://svn.apache.org/viewvc?rev=923828&view=rev
Log:
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/trunk/framework/datafile/src/org/ofbiz/datafile/Record.java
    ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/RecordIterator.java

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=923828&r1=923827&r2=923828&view=diff
==============================================================================
--- ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/Record.java (original)
+++ ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/Record.java Tue Mar 
16 16:00:32 2010
@@ -561,18 +561,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;
                 }

} else {

             }
             try {

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=923828&r1=923827&r2=923828&view=diff
==============================================================================
--- ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/RecordIterator.java 
(original)
+++ ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/RecordIterator.java 
Tue Mar 16 16:00:32 2010
@@ -26,6 +26,8 @@ import java.io.InputStreamReader;
 import java.net.URL;
 import java.util.Stack;

+import org.ofbiz.base.util.Debug;
+

Extra blank line.

 /**
  *  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) {

Remove this logInfo.

The catch line has bad indentation.

                 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) ) )) {

Don't leave commented out lines like this; it is generally bad form,
esp. for simple lines.  That's what revision history is for.

Bad spacing around parentheses.

             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) ) );

Same as last paragraph.







Reply via email to