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. > > >
