You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by mb...@apache.org on 2017/10/28 14:45:17 UTC

svn commit: r1813637 - in /ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile: DataFile.java DataFile2EntityXml.java ModelDataFileReader.java Record.java RecordIterator.java

Author: mbrohl
Date: Sat Oct 28 14:45:17 2017
New Revision: 1813637

URL: http://svn.apache.org/viewvc?rev=1813637&view=rev
Log:
Improved: Fixing defects reported by FindBugs, package 
org.apache.ofbiz.datafile.
(OFBIZ-9715)

I modified the patch slightly and did some additional code cleanup by 
removing commented out code and some formatting.

Thanks Julian Leichert for reporting and providing the patch.

Modified:
    ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/DataFile.java
    ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/DataFile2EntityXml.java
    ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/ModelDataFileReader.java
    ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/Record.java
    ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/RecordIterator.java

Modified: ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/DataFile.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/DataFile.java?rev=1813637&r1=1813636&r2=1813637&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/DataFile.java (original)
+++ ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/DataFile.java Sat Oct 28 14:45:17 2017
@@ -18,11 +18,9 @@
  *******************************************************************************/
 package org.apache.ofbiz.datafile;
 
-
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -32,9 +30,9 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.ofbiz.base.util.Debug;
+import org.apache.ofbiz.base.util.UtilIO;
 import org.apache.ofbiz.base.util.UtilValidate;
 
-
 /**
  *  DataFile main class
  *
@@ -93,7 +91,8 @@ public class DataFile {
         this.modelDataFile = modelDataFile;
     }
 
-    protected DataFile() {}
+    protected DataFile() {
+    }
 
     public ModelDataFile getModelDataFile() {
         return modelDataFile;
@@ -136,7 +135,7 @@ public class DataFile {
         if (UtilValidate.isEmpty(content))
             throw new IllegalStateException("Content is empty, can't read file");
 
-        ByteArrayInputStream bis = new ByteArrayInputStream(content.getBytes());
+        ByteArrayInputStream bis = new ByteArrayInputStream(content.getBytes(UtilIO.getUtf8()));
 
         readDataFile(bis, null);
     }
@@ -169,29 +168,23 @@ public class DataFile {
         return new RecordIterator(dataFileStream, this.modelDataFile, locationInfo);
     }
 
-    /** Writes the records in this DataFile object to a text data file
-     * @param filename The filename to put the data into
-     * @throws DataFileException Exception thown for various errors, generally has a nested exception
+    /**
+     * Writes the records in this DataFile object to a text data file
+     * 
+     * @param filename
+     *            The filename to put the data into
+     * @throws DataFileException
+     *             Exception thrown for various errors, generally has a nested
+     *             exception
      */
     public void writeDataFile(String filename) throws DataFileException {
         File outFile = new File(filename);
-        FileOutputStream fos = null;
 
-        try {
-            fos = new FileOutputStream(outFile);
-        } catch (FileNotFoundException e) {
-            throw new DataFileException("Could not open file " + filename, e);
-        }
-
-        try {
+        try (FileOutputStream fos = new FileOutputStream(outFile);) {
             writeDataFile(fos);
-        } finally {
-            try {
-                if (fos != null)
-                    fos.close();
-            } catch (IOException e) {
-                throw new DataFileException("Could not close file " + filename + ", may not have written correctly;", e);
-            }
+        }
+        catch (IOException e) {
+            throw new DataFileException("Error occured while writing data to file" + filename, e);
         }
     }
 
@@ -200,15 +193,13 @@ public class DataFile {
      * @return A String containing what would go into a data file as plain text
      */
     public String writeDataFile() throws DataFileException {
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
-
-        writeDataFile(bos);
-        String outString = bos.toString();
+        String outString = "";
+        try (ByteArrayOutputStream bos = new ByteArrayOutputStream();) {
+            writeDataFile(bos);
+            outString = bos.toString("UTF-8");
 
-        try {
-            if (bos != null)
-                bos.close();
-        } catch (IOException e) {
+        }
+        catch (IOException e) {
             Debug.logWarning(e, module);
         }
         return outString;
@@ -223,12 +214,13 @@ public class DataFile {
     }
 
     protected void writeRecords(OutputStream outStream, List<Record> records) throws DataFileException {
-        for (Record record: records) {
+        for (Record record : records) {
             String line = record.writeLineString(modelDataFile);
 
             try {
-                outStream.write(line.getBytes());
-            } catch (IOException e) {
+                outStream.write(line.getBytes(UtilIO.getUtf8()));
+            }
+            catch (IOException e) {
                 throw new DataFileException("Could not write to stream;", e);
             }
 
@@ -238,4 +230,3 @@ public class DataFile {
         }
     }
 }
-

Modified: ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/DataFile2EntityXml.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/DataFile2EntityXml.java?rev=1813637&r1=1813636&r2=1813637&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/DataFile2EntityXml.java (original)
+++ ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/DataFile2EntityXml.java Sat Oct 28 14:45:17 2017
@@ -22,17 +22,20 @@ package org.apache.ofbiz.datafile;
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileOutputStream;
-import java.io.FileWriter;
 import java.io.IOException;
 import java.io.OutputStreamWriter;
 import java.net.URL;
 
+import org.apache.ofbiz.base.util.Debug;
 import org.apache.ofbiz.base.util.UtilFormatOut;
+import org.apache.ofbiz.base.util.UtilIO;
 import org.apache.ofbiz.base.util.UtilURL;
 import org.apache.ofbiz.base.util.UtilValidate;
 
 public class DataFile2EntityXml {
 
+    public static final String module = DataFile2EntityXml.class.getName();
+
     /** Creates a new instance of DataFile2EntityXml */
     public DataFile2EntityXml() {
     }
@@ -44,39 +47,32 @@ public class DataFile2EntityXml {
      */
     public static void writeToEntityXml(String fileName, DataFile dataFile) throws DataFileException {
         File file = new File(fileName);
-        BufferedWriter outFile = null;
 
-        try {
+        try (BufferedWriter outFile = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), UtilIO.getUtf8()));) {
 
-            //outFile = new BufferedWriter(new FileWriter(file));
-            outFile = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
-        } catch (Exception e) {
-            throw new DataFileException("Could not open file " + fileName, e);
-        }
-        //----------------------------------------------------
-        try {
             outFile.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
             outFile.newLine();
             outFile.write("<entity-engine-xml>");
             outFile.newLine();
-            for (Record record: dataFile.getRecords()) {
+            for (Record record : dataFile.getRecords()) {
                 ModelRecord modelRecord = record.getModelRecord();
                 outFile.write("<" + modelRecord.name + " ");
-                for (ModelField modelField: modelRecord.fields) {
-                    if (modelField.ignored) continue;
+                for (ModelField modelField : modelRecord.fields) {
+                    if (modelField.ignored)
+                        continue;
                     Object value = record.get(modelField.name);
                     if (value == null) {
                         value = modelField.defaultValue;
                     }
                     if (value instanceof String) {
-                        value = ((String)value).trim();
-                        if (((String)value).length() == 0) {
+                        value = ((String) value).trim();
+                        if (((String) value).length() == 0) {
                             value = modelField.defaultValue;
                         }
                     }
                     if (value != null) {
                         if (value instanceof String) {
-                            outFile.write(modelField.name + "=\"" + UtilFormatOut.encodeXmlValue((String)value) + "\" ");
+                            outFile.write(modelField.name + "=\"" + UtilFormatOut.encodeXmlValue((String) value) + "\" ");
                         } else {
                             outFile.write(modelField.name + "=\"" + value + "\" ");
                         }
@@ -86,8 +82,8 @@ public class DataFile2EntityXml {
                 outFile.newLine();
             }
             outFile.write("</entity-engine-xml>");
-            outFile.close();
-        } catch (IOException e) {
+        }
+        catch (IOException e) {
             throw new DataFileException("Error writing to file " + fileName, e);
         }
 
@@ -99,49 +95,41 @@ public class DataFile2EntityXml {
         String definitionLoc = args[1];
         String definitionName = args[2];
 
-        BufferedWriter outFile = new BufferedWriter(new FileWriter(dataFileLoc + ".xml"));
-
-        URL dataFileUrl = null;
-        //try {
-            dataFileUrl = UtilURL.fromFilename(dataFileLoc);
-        //} catch (java.net.MalformedURLException e) {
-            //messages.add(e.getMessage());
-        //}
-        URL definitionUrl = null;
-        //try {
-            definitionUrl = UtilURL.fromFilename(definitionLoc);
-        //} catch (java.net.MalformedURLException e) {
-            //messages.add(e.getMessage());
-        //}
-
-        DataFile dataFile = null;
-        if (dataFileUrl != null && definitionUrl != null && UtilValidate.isNotEmpty(definitionName)) {
-            try {
-                dataFile = DataFile.readFile(dataFileUrl, definitionUrl, definitionName);
-            } catch (Exception e) {
-                //messages.add(e.toString());
-                //Debug.logInfo(e);
+        try (BufferedWriter outFile = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dataFileLoc + ".xml"), UtilIO.getUtf8()));) {
+            URL dataFileUrl = UtilURL.fromFilename(dataFileLoc);
+            URL definitionUrl = UtilURL.fromFilename(definitionLoc);
+
+            DataFile dataFile = null;
+            if (dataFileUrl != null && definitionUrl != null && UtilValidate.isNotEmpty(definitionName)) {
+                try {
+                    dataFile = DataFile.readFile(dataFileUrl, definitionUrl, definitionName);
+                }
+                catch (DataFileException e) {
+                    Debug.logError("Error Occurred while reading Datafile, Exception: " + e, module);
+                }
             }
-        }
 
-        // -----------------------------------------
-        for (Record record: dataFile.getRecords()) {
-            ModelRecord modelRecord = record.getModelRecord();
-            outFile.write("<" + modelRecord.name + " ");
-            for (ModelField modelField: modelRecord.fields) {
-                Object value = record.get(modelField.name);
-                if (value instanceof String) {
-                    value = ((String)value).trim();
-                    outFile.write(modelField.name + "=\"" + UtilFormatOut.encodeXmlValue((String)value) + "\" ");
-                } else {
-                    outFile.write(modelField.name + "=\"" + value + "\" ");
+            if (dataFile != null) {
+                for (Record record : dataFile.getRecords()) {
+                    ModelRecord modelRecord = record.getModelRecord();
+                    outFile.write("<" + modelRecord.name + " ");
+                    for (ModelField modelField : modelRecord.fields) {
+                        Object value = record.get(modelField.name);
+                        if (value instanceof String) {
+                            value = ((String) value).trim();
+                            outFile.write(modelField.name + "=\"" + UtilFormatOut.encodeXmlValue((String) value) + "\" ");
+                        } else {
+                            outFile.write(modelField.name + "=\"" + value + "\" ");
+                        }
+                    }
+                    outFile.write("/>");
+                    outFile.newLine();
                 }
             }
-            outFile.write("/>");
-            outFile.newLine();
         }
-        outFile.close();
-
+        catch (IOException e) {
+            Debug.logError(e, module);
+        }
     }
 
 }

Modified: ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/ModelDataFileReader.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/ModelDataFileReader.java?rev=1813637&r1=1813636&r2=1813637&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/ModelDataFileReader.java (original)
+++ ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/ModelDataFileReader.java Sat Oct 28 14:45:17 2017
@@ -95,12 +95,7 @@ public final class ModelDataFileReader {
         for (int i = 0; i < rList.getLength(); i++) {
             Element recordElement = (Element) rList.item(i);
             ModelRecord modelRecord = createModelRecord(recordElement);
-
-            if (modelRecord != null) {
-                dataFile.records.add(modelRecord);
-            } else {
-                Debug.logWarning("[ModelDataFileReader.createModelDataFile] Weird, modelRecord was null", module);
-            }
+            dataFile.records.add(modelRecord);
         }
 
         for (ModelRecord modelRecord : dataFile.records) {
@@ -149,14 +144,9 @@ public final class ModelDataFileReader {
                 Debug.logWarning("DataFile " + dataFileName + " is defined more than once, most recent will over-write previous definition(s)", module);
             }
             ModelDataFile dataFile = createModelDataFile(curDataFile);
-            if (dataFile != null) {
-                result.put(dataFileName, dataFile);
-                if (Debug.verboseOn()) {
-                    Debug.logVerbose("Loaded dataFile: " + dataFileName, module);
-                }
-            } else {
-                Debug.logWarning("Could not create dataFile for dataFileName " + dataFileName, module);
-                throw new DataFileException("Could not create dataFile for " + dataFileName + " defined in " + this.readerURL);
+            result.put(dataFileName, dataFile);
+            if (Debug.verboseOn()) {
+                Debug.logVerbose("Loaded dataFile: " + dataFileName, module);
             }
         }
         return result;

Modified: ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/Record.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/Record.java?rev=1813637&r1=1813636&r2=1813637&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/Record.java (original)
+++ ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/Record.java Sat Oct 28 14:45:17 2017
@@ -31,6 +31,7 @@ import java.util.NoSuchElementException;
 import java.util.StringTokenizer;
 
 import org.apache.ofbiz.base.crypto.HashCrypt;
+import org.apache.ofbiz.base.util.UtilIO;
 import org.apache.ofbiz.base.util.UtilValidate;
 import org.apache.ofbiz.common.login.LoginServices;
 
@@ -54,89 +55,88 @@ public class Record implements Serializa
 
     /** Creates new Record */
     protected Record(ModelRecord modelRecord) {
-    if (modelRecord == null)
-        throw new IllegalArgumentException("Cannont create a Record with a null modelRecord parameter");
-    this.recordName = modelRecord.name;
-    this.modelRecord = modelRecord;
-    this.fields = new HashMap<String, Object>();
+        if (modelRecord == null)
+            throw new IllegalArgumentException("Cannont create a Record with a null modelRecord parameter");
+        this.recordName = modelRecord.name;
+        this.modelRecord = modelRecord;
+        this.fields = new HashMap<String, Object>();
     }
 
     /** Creates new Record from existing Map */
     protected Record(ModelRecord modelRecord, Map<String, Object> fields) {
-    if (modelRecord == null)
-        throw new IllegalArgumentException("Cannont create a Record with a null modelRecord parameter");
-    this.recordName = modelRecord.name;
-    this.modelRecord = modelRecord;
-    this.fields = (fields == null ? new HashMap<String, Object>() : new HashMap<String, Object>(fields));
+        if (modelRecord == null)
+            throw new IllegalArgumentException("Cannont create a Record with a null modelRecord parameter");
+        this.recordName = modelRecord.name;
+        this.modelRecord = modelRecord;
+        this.fields = (fields == null ? new HashMap<String, Object>() : new HashMap<String, Object>(fields));
     }
 
     public String getRecordName() {
-    return recordName;
+        return recordName;
     }
 
     public ModelRecord getModelRecord() {
-    if (modelRecord == null) {
-        throw new IllegalStateException("[Record.getModelRecord] could not find modelRecord for recordName " + recordName);
-    }
-    return modelRecord;
+        if (modelRecord == null) {
+            throw new IllegalStateException("[Record.getModelRecord] could not find modelRecord for recordName " + recordName);
+        }
+        return modelRecord;
     }
 
-    public Object get(String name) {
-    if (getModelRecord().getModelField(name) == null) {
-        throw new IllegalArgumentException("[Record.get] \"" + name + "\" is not a field of " + recordName);
-        // Debug.logWarning("[GenericRecord.get] \"" + name + "\" is not a field of " + recordName + ", but getting anyway...", module);
-    }
-    return fields.get(name);
+    public synchronized Object get(String name) {
+        if (getModelRecord().getModelField(name) == null) {
+            throw new IllegalArgumentException("[Record.get] \"" + name + "\" is not a field of " + recordName);
+        }
+        return fields.get(name);
     }
 
     public String getString(String name) {
-    Object object = get(name);
+        Object object = get(name);
 
-    if (object == null)
-        return null;
-    if (object instanceof java.lang.String)
-        return (String) object;
-    else
-        return object.toString();
+        if (object == null)
+            return null;
+        if (object instanceof java.lang.String)
+            return (String) object;
+        else
+            return object.toString();
     }
 
     public String getStringAndEmpty(String name) {
-    Object object = get(name);
+        Object object = get(name);
 
-    if (object == null)
-        return "";
-    if (object instanceof java.lang.String)
-        return (String) object;
-    else
-        return object.toString();
+        if (object == null)
+            return "";
+        if (object instanceof java.lang.String)
+            return (String) object;
+        else
+            return object.toString();
     }
 
     public java.sql.Timestamp getTimestamp(String name) {
-    return (java.sql.Timestamp) get(name);
+        return (java.sql.Timestamp) get(name);
     }
 
     public java.sql.Time getTime(String name) {
-    return (java.sql.Time) get(name);
+        return (java.sql.Time) get(name);
     }
 
     public java.sql.Date getDate(String name) {
-    return (java.sql.Date) get(name);
+        return (java.sql.Date) get(name);
     }
 
     public Integer getInteger(String name) {
-    return (Integer) get(name);
+        return (Integer) get(name);
     }
 
     public Long getLong(String name) {
-    return (Long) get(name);
+        return (Long) get(name);
     }
 
     public Float getFloat(String name) {
-    return (Float) get(name);
+        return (Float) get(name);
     }
 
     public Double getDouble(String name) {
-    return (Double) get(name);
+        return (Double) get(name);
     }
 
     /** Sets the named field to the passed value, even if the value is null
@@ -144,7 +144,7 @@ public class Record implements Serializa
      * @param value The value to set
      */
     public void set(String name, Object value) {
-    set(name, value, true);
+        set(name, value, true);
     }
 
     /** Sets the named field to the passed value. If value is null, it is only
@@ -154,52 +154,39 @@ public class Record implements Serializa
      * @param setIfNull Specifies whether or not to set the value if it is null
      */
     public synchronized void set(String name, Object value, boolean setIfNull) {
-    if (getModelRecord().getModelField(name) == null) {
-        throw new IllegalArgumentException("[Record.set] \"" + name + "\" is not a field of " + recordName);
-        // Debug.logWarning("[GenericRecord.set] \"" + name + "\" is not a field of " + recordName + ", but setting anyway...", module);
-    }
-    if (value != null || setIfNull) {
-        if (value instanceof Boolean) {
-        value = ((Boolean) value).booleanValue() ? "Y" : "N";
+        if (getModelRecord().getModelField(name) == null) {
+            throw new IllegalArgumentException("[Record.set] \"" + name + "\" is not a field of " + recordName);
+        }
+        if (value != null || setIfNull) {
+            if (value instanceof Boolean) {
+                value = ((Boolean) value).booleanValue() ? "Y" : "N";
+            }
+            fields.put(name, value);
         }
-        fields.put(name, value);
-    }
     }
 
     /**
      * little endian reader for 2 byte short.
      */
     public final short readLEShort(byte[] byteArray) {
-    return  (short)(
-        (byteArray[1]&0xff) << 8 |
-        (byteArray[0]&0xff));
+        return (short) ((byteArray[1] & 0xff) << 8 | (byteArray[0] & 0xff));
 
     }
 
     /**
      * little endian reader for 4 byte int.
      */
-    public final int readLEInt(byte []byteArray) {
-    return
-    (byteArray[3])      << 24 |
-    (byteArray[2]&0xff) << 16 |
-    (byteArray[1]&0xff) <<  8 |
-    (byteArray[0]&0xff);
+    public final int readLEInt(byte[] byteArray) {
+        return (byteArray[3]) << 24 | (byteArray[2] & 0xff) << 16 | (byteArray[1] & 0xff) << 8 | (byteArray[0] & 0xff);
     }
 
     /**
      * little endian reader for 8 byte long.
      */
-    public final long readLELong(byte []byteArray) {
-    return
-    (long)(byteArray[7])      << 56 |  /* long cast needed or shift done modulo 32 */
-    (long)(byteArray[6]&0xff) << 48 |
-    (long)(byteArray[5]&0xff) << 40 |
-    (long)(byteArray[4]&0xff) << 32 |
-    (long)(byteArray[3]&0xff) << 24 |
-    (long)(byteArray[2]&0xff) << 16 |
-    (long)(byteArray[1]&0xff) <<  8 |
-    (byteArray[0]&0xff);
+    public final long readLELong(byte[] byteArray) {
+        return (long) (byteArray[7]) << 56 | /* long cast needed or shift done modulo 32 */
+               (long) (byteArray[6] & 0xff) << 48 | (long) (byteArray[5] & 0xff) << 40 | (long) (byteArray[4] & 0xff) << 32 | (long) (byteArray[3] & 0xff) << 24
+               | (long) (byteArray[2] & 0xff) << 16 | (long) (byteArray[1] & 0xff) << 8 | (byteArray[0] & 0xff);
     }
 
     /** Sets the named field to the passed value, converting the value from a String to the current type using <code>Type.valueOf()</code>
@@ -207,272 +194,264 @@ public class Record implements Serializa
      * @param value The String value to convert and set
      */
     public void setString(String name, String value) throws ParseException {
-    if (name == null || value == null || value.equals(""))
-        return;
-    ModelField field = getModelRecord().getModelField(name);
-
-    if (field == null)
-        set(name, value); // this will get an error in the set() method...
-
-    // if the string is all spaces ignore
-    boolean nonSpace = false;
-
-    for (int i = 0; i < value.length(); i++) {
-        if (value.charAt(i) != ' ') {
-        nonSpace = true;
-        break;
-        }
-    }
-    if (!nonSpace)
-        return;
-
-    // if (Debug.verboseOn()) Debug.logVerbose("Value: " + value, module);
-
-    String fieldType = field.type;
-
-    // first the custom types that need to be parsed
-    if (fieldType.equals("CustomTimestamp")) {
-        // this custom type will take a string a parse according to date formatting
-        // string then put the result in a java.sql.Timestamp
-        // a common timestamp format for flat files is with no separators: yyyyMMddHHmmss
-        SimpleDateFormat sdf = new SimpleDateFormat(field.format);
-        java.util.Date tempDate = sdf.parse(value);
-        java.sql.Timestamp timestamp = new java.sql.Timestamp(tempDate.getTime());
-
-        set(name, timestamp);
-    } else if (fieldType.equals("CustomDate")) {
-        // a common date only format for flat files is with no separators: yyyyMMdd or MMddyyyy
-        SimpleDateFormat sdf = new SimpleDateFormat(field.format);
-        java.util.Date tempDate = sdf.parse(value);
-        java.sql.Date date = new java.sql.Date(tempDate.getTime());
-
-        set(name, date);
-    } else if (fieldType.equals("CustomTime")) {
-        // a common time only format for flat files is with no separators: HHmmss
-        SimpleDateFormat sdf = new SimpleDateFormat(field.format);
-        java.util.Date tempDate = sdf.parse(value);
-        java.sql.Time time = new java.sql.Time(tempDate.getTime());
-
-        set(name, time);
-    } else if (fieldType.equals("FixedPointDouble")) {
-        // this custom type will parse a fixed point number according to the number
-        // of decimal places in the formatting string then place it in a Double
-        NumberFormat nf = NumberFormat.getNumberInstance();
-        Number tempNum = nf.parse(value);
-        double number = tempNum.doubleValue();
-        double decimalPlaces = Double.parseDouble(field.format);
-        double divisor = Math.pow(10.0, decimalPlaces);
-
-        number = number / divisor;
-        set(name, Double.valueOf(number));
-    } // standard types
-    else if (fieldType.equals("java.lang.String") || fieldType.equals("String"))
-        if (field.format.equals("EncryptedString")) {
-        String hashType = LoginServices.getHashType();
-        set(name, HashCrypt.digestHash(hashType, value.getBytes()));
-        } else {
-        set(name, value);
+        if (name == null || value == null || value.equals(""))
+            return;
+        ModelField field = getModelRecord().getModelField(name);
+
+        if (field == null)
+            set(name, value); // this will get an error in the set() method...
+
+        // if the string is all spaces ignore
+        boolean nonSpace = false;
+
+        for (int i = 0; i < value.length(); i++) {
+            if (value.charAt(i) != ' ') {
+                nonSpace = true;
+                break;
+            }
+        }
+        if (!nonSpace)
+            return;
+
+        String fieldType = field.type;
+
+        // first the custom types that need to be parsed
+        if (fieldType.equals("CustomTimestamp")) {
+            // this custom type will take a string a parse according to date formatting
+            // string then put the result in a java.sql.Timestamp
+            // a common timestamp format for flat files is with no separators: yyyyMMddHHmmss
+            SimpleDateFormat sdf = new SimpleDateFormat(field.format);
+            java.util.Date tempDate = sdf.parse(value);
+            java.sql.Timestamp timestamp = new java.sql.Timestamp(tempDate.getTime());
+
+            set(name, timestamp);
+        } else if (fieldType.equals("CustomDate")) {
+            // a common date only format for flat files is with no separators: yyyyMMdd or MMddyyyy
+            SimpleDateFormat sdf = new SimpleDateFormat(field.format);
+            java.util.Date tempDate = sdf.parse(value);
+            java.sql.Date date = new java.sql.Date(tempDate.getTime());
+
+            set(name, date);
+        } else if (fieldType.equals("CustomTime")) {
+            // a common time only format for flat files is with no separators: HHmmss
+            SimpleDateFormat sdf = new SimpleDateFormat(field.format);
+            java.util.Date tempDate = sdf.parse(value);
+            java.sql.Time time = new java.sql.Time(tempDate.getTime());
+
+            set(name, time);
+        } else if (fieldType.equals("FixedPointDouble")) {
+            // this custom type will parse a fixed point number according to the number
+            // of decimal places in the formatting string then place it in a Double
+            NumberFormat nf = NumberFormat.getNumberInstance();
+            Number tempNum = nf.parse(value);
+            double number = tempNum.doubleValue();
+            double decimalPlaces = Double.parseDouble(field.format);
+            double divisor = Math.pow(10.0, decimalPlaces);
+
+            number = number / divisor;
+            set(name, Double.valueOf(number));
+        } // standard types
+        else if (fieldType.equals("java.lang.String") || fieldType.equals("String"))
+            if (field.format.equals("EncryptedString")) {
+                String hashType = LoginServices.getHashType();
+                set(name, HashCrypt.digestHash(hashType, value.getBytes(UtilIO.getUtf8())));
+            } else {
+                set(name, value);
+            }
+        else if (fieldType.equals("NullTerminatedString")) {
+            int terminate = value.indexOf(0x0);
+            set(name, terminate > 0 ? value.substring(0, terminate) : value);
+        } else if (fieldType.equals("java.sql.Timestamp") || fieldType.equals("Timestamp"))
+            set(name, java.sql.Timestamp.valueOf(value));
+        else if (fieldType.equals("java.sql.Time") || fieldType.equals("Time"))
+            set(name, java.sql.Time.valueOf(value));
+        else if (fieldType.equals("java.sql.Date") || fieldType.equals("Date"))
+            set(name, java.sql.Date.valueOf(value));
+        else if (fieldType.equals("java.lang.Integer") || fieldType.equals("Integer"))
+            set(name, Integer.valueOf(value));
+        else if (fieldType.equals("java.lang.Long") || fieldType.equals("Long"))
+            set(name, Long.valueOf(value));
+        else if (fieldType.equals("java.lang.Float") || fieldType.equals("Float"))
+            set(name, Float.valueOf(value));
+        else if (fieldType.equals("java.lang.Double") || fieldType.equals("Double"))
+            set(name, Double.valueOf(value));
+        else if (fieldType.equals("LEShort"))
+            set(name, Short.valueOf(readLEShort(value.getBytes(UtilIO.getUtf8()))));
+        else if (fieldType.equals("LEInteger"))
+            set(name, Integer.valueOf(readLEInt(value.getBytes(UtilIO.getUtf8()))));
+        else if (fieldType.equals("LELong"))
+            set(name, Long.valueOf(readLELong(value.getBytes(UtilIO.getUtf8()))));
+        else {
+            throw new IllegalArgumentException("Field type " + fieldType + " not currently supported. Sorry.");
         }
-    else if (fieldType.equals("NullTerminatedString")) {
-        int terminate = value.indexOf(0x0);
-        set(name, terminate>0?value.substring(0,terminate):value);
-    } else if (fieldType.equals("java.sql.Timestamp") || fieldType.equals("Timestamp"))
-        set(name, java.sql.Timestamp.valueOf(value));
-    else if (fieldType.equals("java.sql.Time") || fieldType.equals("Time"))
-        set(name, java.sql.Time.valueOf(value));
-    else if (fieldType.equals("java.sql.Date") || fieldType.equals("Date"))
-        set(name, java.sql.Date.valueOf(value));
-    else if (fieldType.equals("java.lang.Integer") || fieldType.equals("Integer"))
-        set(name, Integer.valueOf(value));
-    else if (fieldType.equals("java.lang.Long") || fieldType.equals("Long"))
-        set(name, Long.valueOf(value));
-    else if (fieldType.equals("java.lang.Float") || fieldType.equals("Float"))
-        set(name, Float.valueOf(value));
-    else if (fieldType.equals("java.lang.Double") || fieldType.equals("Double"))
-        set(name, Double.valueOf(value));
-    else if (fieldType.equals("LEShort"))
-        set(name, Short.valueOf(readLEShort(value.getBytes())));
-    else if (fieldType.equals("LEInteger"))
-        set(name, Integer.valueOf(readLEInt(value.getBytes())));
-    else if (fieldType.equals("LELong"))
-        set(name, Long.valueOf(readLELong(value.getBytes())));
-    else {
-        throw new IllegalArgumentException("Field type " + fieldType + " not currently supported. Sorry.");
-    }
     }
 
     public String getFixedString(String name) {
-    if (name == null)
-        return null;
-    if (getModelRecord() == null)
-        throw new IllegalArgumentException("Could not find modelrecord for field named \"" + name + "\"");
-    ModelField field = getModelRecord().getModelField(name);
-
-    if (field == null)
-        throw new IllegalArgumentException("Could not find model for field named \"" + name + "\"");
-
-    Object value = get(name);
-
-    if (value == null) {
-        return null;
-    }
-
-    String fieldType = field.type;
-    String str = null;
-
-    // first the custom types that need to be parsed
-    if (fieldType.equals("CustomTimestamp")) {
-        // a common timestamp format for flat files is with no separators: yyyyMMddHHmmss
-        SimpleDateFormat sdf = new SimpleDateFormat(field.format);
-        java.sql.Timestamp timestamp = (java.sql.Timestamp) value;
-
-        str = sdf.format(new Date(timestamp.getTime()));
-    } else if (fieldType.equals("CustomDate")) {
-        // a common date only format for flat files is with no separators: yyyyMMdd or MMddyyyy
-        SimpleDateFormat sdf = new SimpleDateFormat(field.format);
-        java.sql.Date date = (java.sql.Date) value;
-
-        str = sdf.format(new Date(date.getTime()));
-    } else if (fieldType.equals("CustomTime")) {
-        // a common time only format for flat files is with no separators: HHmmss
-        SimpleDateFormat sdf = new SimpleDateFormat(field.format);
-        java.sql.Time time = (java.sql.Time) value;
-
-        str = sdf.format(new Date(time.getTime()));
-    } else if (fieldType.equals("FixedPointDouble")) {
-        // this custom type will parse a fixed point number according to the number
-        // of decimal places in the formatting string then place it in a Double
-        double decimalPlaces = Double.parseDouble(field.format);
-        double multiplier = Math.pow(10.0, decimalPlaces);
-        double dnum = multiplier * ((Double) value).doubleValue();
-        long number = Math.round(dnum);
-
-        str = padFrontZeros(Long.toString(number), field.length);
-        // if (Debug.infoOn()) Debug.logInfo("[Record.getFixedString] FixedPointDouble: multiplier=" + multiplier + ", value=" + value + ", dnum=" + dnum + ", number=" + number + ", str=" + str, module);
-    } // standard types
-    else if (fieldType.equals("java.lang.String") || fieldType.equals("String"))
-        str = value.toString();
-    else if (fieldType.equals("java.sql.Timestamp") || fieldType.equals("Timestamp"))
-        str = value.toString();
-    else if (fieldType.equals("java.sql.Time") || fieldType.equals("Time"))
-        str = value.toString();
-    else if (fieldType.equals("java.sql.Date") || fieldType.equals("Date"))
-        str = value.toString();
-    // for all numbers, pad front with zeros if field length is specified
-    else if (fieldType.equals("java.lang.Integer") || fieldType.equals("Integer"))
-        str = padFrontZeros(value.toString(), field.length);
-    else if (fieldType.equals("java.lang.Long") || fieldType.equals("Long"))
-        str = padFrontZeros(value.toString(), field.length);
-    else if (fieldType.equals("java.lang.Float") || fieldType.equals("Float"))
-        str = padFrontZeros(value.toString(), field.length);
-    else if (fieldType.equals("java.lang.Double") || fieldType.equals("Double"))
-        str = padFrontZeros(value.toString(), field.length);
-    else {
-        throw new IllegalArgumentException("Field type " + fieldType + " not currently supported. Sorry.");
-    }
-
-    if (str != null && field.length > 0 && str.length() < field.length) {
-        // pad the end with spaces
-        StringBuilder strBuf = new StringBuilder(str);
-
-        while (strBuf.length() < field.length)
-        strBuf.append(' ');
-        str = strBuf.toString();
-    }
-    return str;
+        if (name == null)
+            return null;
+        ModelField field = getModelRecord().getModelField(name);
+
+        if (field == null)
+            throw new IllegalArgumentException("Could not find model for field named \"" + name + "\"");
+
+        Object value = get(name);
+
+        if (value == null) {
+            return null;
+        }
+
+        String fieldType = field.type;
+        String str = null;
+
+        // first the custom types that need to be parsed
+        if (fieldType.equals("CustomTimestamp")) {
+            // a common timestamp format for flat files is with no separators: yyyyMMddHHmmss
+            SimpleDateFormat sdf = new SimpleDateFormat(field.format);
+            java.sql.Timestamp timestamp = (java.sql.Timestamp) value;
+
+            str = sdf.format(new Date(timestamp.getTime()));
+        } else if (fieldType.equals("CustomDate")) {
+            // a common date only format for flat files is with no separators: yyyyMMdd or MMddyyyy
+            SimpleDateFormat sdf = new SimpleDateFormat(field.format);
+            java.sql.Date date = (java.sql.Date) value;
+
+            str = sdf.format(new Date(date.getTime()));
+        } else if (fieldType.equals("CustomTime")) {
+            // a common time only format for flat files is with no separators: HHmmss
+            SimpleDateFormat sdf = new SimpleDateFormat(field.format);
+            java.sql.Time time = (java.sql.Time) value;
+
+            str = sdf.format(new Date(time.getTime()));
+        } else if (fieldType.equals("FixedPointDouble")) {
+            // this custom type will parse a fixed point number according to the number
+            // of decimal places in the formatting string then place it in a Double
+            double decimalPlaces = Double.parseDouble(field.format);
+            double multiplier = Math.pow(10.0, decimalPlaces);
+            double dnum = multiplier * ((Double) value).doubleValue();
+            long number = Math.round(dnum);
+
+            str = padFrontZeros(Long.toString(number), field.length);
+        } // standard types
+        else if (fieldType.equals("java.lang.String") || fieldType.equals("String"))
+            str = value.toString();
+        else if (fieldType.equals("java.sql.Timestamp") || fieldType.equals("Timestamp"))
+            str = value.toString();
+        else if (fieldType.equals("java.sql.Time") || fieldType.equals("Time"))
+            str = value.toString();
+        else if (fieldType.equals("java.sql.Date") || fieldType.equals("Date"))
+            str = value.toString();
+        // for all numbers, pad front with zeros if field length is specified
+        else if (fieldType.equals("java.lang.Integer") || fieldType.equals("Integer"))
+            str = padFrontZeros(value.toString(), field.length);
+        else if (fieldType.equals("java.lang.Long") || fieldType.equals("Long"))
+            str = padFrontZeros(value.toString(), field.length);
+        else if (fieldType.equals("java.lang.Float") || fieldType.equals("Float"))
+            str = padFrontZeros(value.toString(), field.length);
+        else if (fieldType.equals("java.lang.Double") || fieldType.equals("Double"))
+            str = padFrontZeros(value.toString(), field.length);
+        else {
+            throw new IllegalArgumentException("Field type " + fieldType + " not currently supported. Sorry.");
+        }
+
+        if (str != null && field.length > 0 && str.length() < field.length) {
+            // pad the end with spaces
+            StringBuilder strBuf = new StringBuilder(str);
+
+            while (strBuf.length() < field.length)
+                strBuf.append(' ');
+            str = strBuf.toString();
+        }
+        return str;
     }
 
     public String writeLineString(ModelDataFile modelDataFile) throws DataFileException {
-    ModelRecord modelRecord = getModelRecord();
-    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);
+        ModelRecord modelRecord = getModelRecord();
+        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);
 
-    StringBuilder lineBuf = new StringBuilder();
+        StringBuilder lineBuf = new StringBuilder();
 
-    for (ModelField modelField: modelRecord.fields) {
-        String data = this.getFixedString(modelField.name);
+        for (ModelField modelField : modelRecord.fields) {
+            String data = this.getFixedString(modelField.name);
 
-        if (isDelimited && null != modelDataFile.textDelimiter) {
-        lineBuf.append(modelDataFile.textDelimiter);
-        }
+            if (isDelimited && null != modelDataFile.textDelimiter) {
+                lineBuf.append(modelDataFile.textDelimiter);
+            }
 
-        // if field is null (not set) then assume we want to pad the field
-        char PAD_CHAR = ' ';
+            // if field is null (not set) then assume we want to pad the field
+            char PAD_CHAR = ' ';
 
-        if (data == null) {
-        StringBuilder sb = new StringBuilder("");
+            if (data == null) {
+                StringBuilder sb = new StringBuilder("");
 
-        for (int i = 0; i < modelField.length; i++)
-            sb.append(PAD_CHAR);
-        data = sb.toString();
-        }
+                for (int i = 0; i < modelField.length; i++)
+                    sb.append(PAD_CHAR);
+                data = sb.toString();
+            }
 
-        // Pad the record
-        if (isFixedRecord) {
-        while (modelField.position > lineBuf.length())
-            lineBuf.append(" ");
+            // Pad the record
+            if (isFixedRecord) {
+                while (modelField.position > lineBuf.length())
+                    lineBuf.append(" ");
+            }
+            if (modelField.length > 0 && data.length() != modelField.length)
+                throw new DataFileException("Got field length " + data.length() + " but expected field length is " + modelField.length + " for field \"" + modelField.name
+                                            + "\" of record \"" + modelRecord.name + "\" data is: \"" + data + "\"");
+
+            lineBuf.append(data);
+            if (isDelimited) {
+                if (null != modelDataFile.textDelimiter) {
+                    lineBuf.append(modelDataFile.textDelimiter);
+                }
+                lineBuf.append(modelDataFile.delimiter);
+            }
         }
-        // if (Debug.infoOn()) Debug.logInfo("Field: " + modelField.name + " Position: " + modelField.position + " BufLen: " + lineBuf.length(), module);
-
-        // if (Debug.infoOn()) Debug.logInfo("Got data \"" + data + "\" for field " + modelField.name + " in record " + modelRecord.name, module);
-        if (modelField.length > 0 && data.length() != modelField.length)
-        throw new DataFileException("Got field length " + data.length() + " but expected field length is " + modelField.length + " for field \"" +
-            modelField.name + "\" of record \"" + modelRecord.name + "\" data is: \"" + data + "\"");
 
-        lineBuf.append(data);
         if (isDelimited) {
-        if (null != modelDataFile.textDelimiter) {
-            lineBuf.append(modelDataFile.textDelimiter);
+            // just remove the last delimiter to finish clean, otherwise shows as extra column
+            lineBuf.setLength(lineBuf.length() - 1);
         }
-        lineBuf.append(modelDataFile.delimiter);
-        }
-    }
 
-    if (isDelimited) {
-        // just remove the last delimiter to finish clean, otherwise shows as extra column
-        lineBuf.setLength(lineBuf.length() - 1);
-    }
+        if ((isFixedRecord || isFixedLength) && modelDataFile.recordLength > 0 && lineBuf.length() != modelDataFile.recordLength)
+            throw new DataFileException("Got record length " + lineBuf.length() + " but expected record length is " + modelDataFile.recordLength + " for record \""
+                                        + modelRecord.name + "\" data line is: \"" + lineBuf + "\"");
 
-    if ((isFixedRecord || isFixedLength) && modelDataFile.recordLength > 0 && lineBuf.length() != modelDataFile.recordLength)
-        throw new DataFileException("Got record length " + lineBuf.length() + " but expected record length is " + modelDataFile.recordLength +
-            " for record \"" + modelRecord.name + "\" data line is: \"" + lineBuf + "\"");
-
-    // for convenience, insert the type-code in where it is looked for, if exists
-    if (modelRecord.tcPosition > 0 && modelRecord.typeCode.length() > 0) {
-        lineBuf.replace(modelRecord.tcPosition, modelRecord.tcPosition + modelRecord.tcLength, modelRecord.typeCode);
-    }
+        // for convenience, insert the type-code in where it is looked for, if exists
+        if (modelRecord.tcPosition > 0 && modelRecord.typeCode.length() > 0) {
+            lineBuf.replace(modelRecord.tcPosition, modelRecord.tcPosition + modelRecord.tcLength, modelRecord.typeCode);
+        }
 
-    if (isFixedLength || isDelimited)
-        lineBuf.append('\n');
+        if (isFixedLength || isDelimited)
+            lineBuf.append('\n');
 
-    return lineBuf.toString();
+        return lineBuf.toString();
     }
 
     String padFrontZeros(String str, int totalLength) {
-    if (totalLength > 0 && str.length() < totalLength) {
-        // pad the front with zeros
-        StringBuilder zeros = new StringBuilder();
-        int numZeros = totalLength - str.length();
-
-        for (int i = 0; i < numZeros; i++)
-        zeros.append('0');
-        zeros.append(str);
-        return zeros.toString();
-    } else
-        return str;
+        if (totalLength > 0 && str.length() < totalLength) {
+            // pad the front with zeros
+            StringBuilder zeros = new StringBuilder();
+            int numZeros = totalLength - str.length();
+
+            for (int i = 0; i < numZeros; i++)
+                zeros.append('0');
+            zeros.append(str);
+            return zeros.toString();
+        } else
+            return str;
     }
 
     public Record getParentRecord() {
-    return parentRecord;
+        return parentRecord;
     }
 
     public List<Record> getChildRecords() {
-    return childRecords;
+        return childRecords;
     }
 
     public void addChildRecord(Record record) {
-    childRecords.add(record);
+        childRecords.add(record);
     }
 
     /** Creates new Record
@@ -481,9 +460,9 @@ public class Record implements Serializa
      * @return return the Record Object created
      */
     public static Record createRecord(ModelRecord modelRecord) throws DataFileException {
-    Record record = new Record(modelRecord);
+        Record record = new Record(modelRecord);
 
-    return record;
+        return record;
     }
 
     /** Creates new Record from existing fields Map
@@ -493,9 +472,9 @@ public class Record implements Serializa
      * @return return the Record Object created
      */
     public static Record createRecord(ModelRecord modelRecord, Map<String, Object> fields) throws DataFileException {
-    Record record = new Record(modelRecord, fields);
+        Record record = new Record(modelRecord, fields);
 
-    return record;
+        return record;
     }
 
     /**
@@ -506,30 +485,32 @@ public class Record implements Serializa
      * @return return the Record Object created
      */
     public static Record createRecord(String line, int lineNum, ModelRecord modelRecord) throws DataFileException {
-    Record record = new Record(modelRecord);
+        Record record = new Record(modelRecord);
 
-    for (ModelField modelField: modelRecord.fields) {
-        String strVal = null;
+        for (ModelField modelField : modelRecord.fields) {
+            String strVal = null;
 
-
-        try {
-        strVal = line.substring(modelField.position, modelField.position + modelField.length);
-        } catch (IndexOutOfBoundsException ioobe) {
-        throw new DataFileException("Field " + modelField.name + " from " + modelField.position +
-            " for " + modelField.length + " chars could not be read from a line (" + lineNum + ") with only " +
-            line.length() + " chars.", ioobe);
-        }
-        try {
-        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 +
-            " on line " + lineNum, e);
-        } catch (java.lang.NumberFormatException e) {
-        throw new DataFileException("Number not valid for field " + modelField.name + ", format string \"" + modelField.format + "\" with value " +
-            strVal + " on line " + lineNum, e);
+            try {
+                strVal = line.substring(modelField.position, modelField.position + modelField.length);
+            }
+            catch (IndexOutOfBoundsException ioobe) {
+                throw new DataFileException("Field " + modelField.name + " from " + modelField.position + " for " + modelField.length + " chars could not be read from a line ("
+                                            + lineNum + ") with only " + line.length() + " chars.",
+                        ioobe);
+            }
+            try {
+                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 + " on line " + lineNum, e);
+            }
+            catch (java.lang.NumberFormatException e) {
+                throw new DataFileException(
+                        "Number not valid for field " + modelField.name + ", format string \"" + modelField.format + "\" with value " + strVal + " on line " + lineNum, e);
+            }
         }
-    }
-    return record;
+        return record;
     }
 
     /**
@@ -541,66 +522,65 @@ public class Record implements Serializa
      * @return return a Record Object
      */
     public static Record createDelimitedRecord(String line, int lineNum, ModelRecord modelRecord, char delimiter, String textDelimiter) throws DataFileException {
-    Record record = new Record(modelRecord);
+        Record record = new Record(modelRecord);
 
-    StringTokenizer st = null;
-    if (line.endsWith(String.valueOf(delimiter))) {
-        st = new StringTokenizer(line + " ", "" + delimiter, true);
-    }
-    else {
-        st = new StringTokenizer(line, "" + delimiter, true);
-    }
-    for (ModelField modelField: modelRecord.fields) {
-        String strVal = null;
-
-        if (modelField.expression) {
-        if (UtilValidate.isNotEmpty(modelField.refField)) {
-            strVal = record.getString(modelField.refField);
-        }
-        if (strVal == null) {
-            strVal = (String)modelField.defaultValue;
-        }
+        StringTokenizer st = null;
+        if (line.endsWith(String.valueOf(delimiter))) {
+            st = new StringTokenizer(line + " ", "" + delimiter, true);
         } else {
-        //some input lines may be less than the header model.
-        if (st.hasMoreTokens()) {
+            st = new StringTokenizer(line, "" + delimiter, true);
+        }
+        for (ModelField modelField : modelRecord.fields) {
+            String strVal = null;
+
+            if (modelField.expression) {
+                if (UtilValidate.isNotEmpty(modelField.refField)) {
+                    strVal = record.getString(modelField.refField);
+                }
+                if (strVal == null) {
+                    strVal = (String) modelField.defaultValue;
+                }
+            } else {
+                //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);
+                    }
+                } else { //if input line is less than the header model then pad with null
+                    strVal = null;
+                }
+            }
             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);
-            }                
-        }
-        else { //if input line is less than the header model then pad with null
-            strVal = null;
-        }
-        }
-        try {
-        if (textDelimiter != null && strVal != null && (strVal.startsWith(textDelimiter) && (!strVal.endsWith(textDelimiter) || strVal.length()==1))) {
-            strVal = strVal.concat(""+delimiter);
-            while (!strVal.endsWith(textDelimiter)) {
-                strVal = strVal.concat(st.nextToken());
-            }
-            st.nextToken();
-        }
-        if (textDelimiter != null && strVal != 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 +
-            " on line " + lineNum, e);
-        } catch (java.lang.NumberFormatException e) {
-        throw new DataFileException("Number not valid for field " + modelField.name + ", format string \"" + modelField.format + "\" with value " +
-            strVal + " on line " + lineNum, e);
+                if (textDelimiter != null && strVal != null && (strVal.startsWith(textDelimiter) && (!strVal.endsWith(textDelimiter) || strVal.length() == 1))) {
+                    strVal = strVal.concat("" + delimiter);
+                    while (!strVal.endsWith(textDelimiter)) {
+                        strVal = strVal.concat(st.nextToken());
+                    }
+                    st.nextToken();
+                }
+                if (textDelimiter != null && strVal != 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 + " on line " + lineNum, e);
+            }
+            catch (java.lang.NumberFormatException e) {
+                throw new DataFileException(
+                        "Number not valid for field " + modelField.name + ", format string \"" + modelField.format + "\" with value " + strVal + " on line " + lineNum, e);
+            }
         }
-    }
-    return record;
+        return record;
     }
 
 }
-

Modified: ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/RecordIterator.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/RecordIterator.java?rev=1813637&r1=1813636&r2=1813637&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/RecordIterator.java (original)
+++ ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/ofbiz/datafile/RecordIterator.java Sat Oct 28 14:45:17 2017
@@ -18,7 +18,6 @@
  *******************************************************************************/
 package org.apache.ofbiz.datafile;
 
-
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
@@ -31,7 +30,6 @@ import java.util.Stack;
  *  Note: this is a memory intensive and will not handle files that exceed memory.
  *
  */
-
 public class RecordIterator {
 
     public static final String module = RecordIterator.class.getName();
@@ -55,7 +53,8 @@ public class RecordIterator {
         InputStream urlStream = null;
         try {
             urlStream = fileUrl.openStream();
-        } catch (IOException e) {
+        }
+        catch (IOException e) {
             throw new DataFileException("Error open URL: " + fileUrl.toString(), e);
         }
         this.setupStream(urlStream, fileUrl.toString());
@@ -71,7 +70,8 @@ public class RecordIterator {
         this.dataFileStream = dataFileStream;
         try {
             this.br = new BufferedReader(new InputStreamReader(dataFileStream, "UTF-8"));
-        } catch (Exception e) {
+        }
+        catch (Exception e) {
             throw new DataFileException("UTF-8 is not supported");
         }
         // get the line seeded
@@ -84,7 +84,6 @@ public class RecordIterator {
 
         boolean isFixedRecord = ModelDataFile.SEP_FIXED_RECORD.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);
 
         if (isFixedRecord) {
             if (modelDataFile.recordLength <= 0) {
@@ -93,29 +92,27 @@ public class RecordIterator {
             try {
                 char[] charData = new char[modelDataFile.recordLength + 1];
 
-                // if (Debug.infoOn()) Debug.logInfo("[DataFile.readDataFile] reading line " + lineNum + " from position " + (lineNum-1)*modelDataFile.recordLength + ", length is " + modelDataFile.recordLength, module);
                 if (br.read(charData, 0, modelDataFile.recordLength) == -1) {
                     nextLine = null;
-                    // Debug.logInfo("[DataFile.readDataFile] found end of file, got -1", module);
                 } else {
                     nextLine = new String(charData);
-                    // if (Debug.infoOn()) Debug.logInfo("[DataFile.readDataFile] read line " + lineNum + " line is: \"" + line + "\"", module);
                 }
-            } catch (IOException e) {
-                throw new DataFileException("Error reading line #" + nextLineNum + " (index " + (nextLineNum - 1) * modelDataFile.recordLength + " length " +
-                        modelDataFile.recordLength + ") from location: " + locationInfo, e);
+            }
+            catch (IOException e) {
+                throw new DataFileException("Error reading line #" + nextLineNum + " (index " + (nextLineNum - 1) * modelDataFile.recordLength + " length "
+                                            + modelDataFile.recordLength + ") from location: " + locationInfo,
+                        e);
             }
         } else {
             try {
                 nextLine = br.readLine();
-                //Debug.logInfo("br.readLine()=\"" + nextLine + "\"", module);
-            } catch (IOException e) {
+            }
+            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 && !((nextLine.contains(eof) ) )) {
+        if (nextLine != null && !((nextLine.contains(eof)))) {
             nextLineNum++;
             ModelRecord modelRecord = findModelForLine(nextLine, nextLineNum, modelDataFile);
             if (isDelimited) {
@@ -135,8 +132,7 @@ public class RecordIterator {
     }
 
     public boolean hasNext() {
-        //return nextLine != null && !(eof.equals(nextLine.substring(0,1)) && 1 == nextLine.length());
-        return nextLine != null && !((nextLine.contains(eof) ) );
+        return nextLine != null && !((nextLine.contains(eof)));
     }
 
     public Record next() throws DataFileException {
@@ -144,9 +140,9 @@ public class RecordIterator {
             return null;
         }
 
-        if (ModelDataFile.SEP_DELIMITED.equals(modelDataFile.separatorStyle) || ModelDataFile.SEP_FIXED_RECORD.equals(modelDataFile.separatorStyle) || ModelDataFile.SEP_FIXED_LENGTH.equals(modelDataFile.separatorStyle)) {
+        if (ModelDataFile.SEP_DELIMITED.equals(modelDataFile.separatorStyle) || ModelDataFile.SEP_FIXED_RECORD.equals(modelDataFile.separatorStyle)
+            || ModelDataFile.SEP_FIXED_LENGTH.equals(modelDataFile.separatorStyle)) {
             boolean isFixedRecord = ModelDataFile.SEP_FIXED_RECORD.equals(modelDataFile.separatorStyle);
-            // if (Debug.infoOn()) Debug.logInfo("[DataFile.readDataFile] separatorStyle is " + modelDataFile.separatorStyle + ", isFixedRecord: " + isFixedRecord, module);
             // advance the line (we have already checked to make sure there is a next line
             this.curLine = this.nextLine;
             this.curRecord = this.nextRecord;
@@ -156,7 +152,8 @@ public class RecordIterator {
 
             // first check to see if the file type has a line size, and if so if this line complies
             if (!isFixedRecord && modelDataFile.recordLength > 0 && curLine.length() != modelDataFile.recordLength) {
-                throw new DataFileException("Line number " + this.getCurrentLineNumber() + " was not the expected length; expected: " + modelDataFile.recordLength + ", got: " + curLine.length());
+                throw new DataFileException(
+                        "Line number " + this.getCurrentLineNumber() + " was not the expected length; expected: " + modelDataFile.recordLength + ", got: " + curLine.length());
             }
 
             // if this record has children, put it on the parentStack and get/check the children now
@@ -178,7 +175,8 @@ public class RecordIterator {
                         }
                     }
                     if (parentRecord == null) {
-                        throw new DataFileException("Expected Parent Record not found for line " + this.getCurrentLineNumber() + "; record name of expected parent is " + this.nextRecord.getModelRecord().parentName);
+                        throw new DataFileException("Expected Parent Record not found for line " + this.getCurrentLineNumber() + "; record name of expected parent is "
+                                                    + this.nextRecord.getModelRecord().parentName);
                     }
                     parentRecord.addChildRecord(this.nextRecord);
 
@@ -203,12 +201,12 @@ public class RecordIterator {
         try {
             this.br.close(); // this should also close the stream
             this.closed = true;
-        } catch (IOException e) {
+        }
+        catch (IOException e) {
             throw new DataFileException("Error closing data file input stream", e);
         }
     }
 
-
     /** Searches through the record models to find one with a matching type-code, if no type-code exists that model will always be used if it gets to it
      * @param line
      * @param lineNum
@@ -217,10 +215,9 @@ public class RecordIterator {
      * @return return the ModelRecord Object found
      */
     protected static ModelRecord findModelForLine(String line, int lineNum, ModelDataFile modelDataFile) throws DataFileException {
-        // if (Debug.infoOn()) Debug.logInfo("[DataFile.findModelForLine] line: " + line, module);
         ModelRecord modelRecord = null;
 
-        for (ModelRecord curModelRecord: modelDataFile.records) {
+        for (ModelRecord curModelRecord : modelDataFile.records) {
             if (curModelRecord.tcPosition < 0) {
                 modelRecord = curModelRecord;
                 break;
@@ -229,23 +226,19 @@ public class RecordIterator {
 
             // try to match with a single typecode
             if (curModelRecord.typeCode.length() > 0) {
-                // if (Debug.infoOn()) Debug.logInfo("[DataFile.findModelForLine] Doing plain typecode match - code=" + curModelRecord.typeCode + ", filelinecode=" + typeCode, module);
-                if (typeCode != null && typeCode.equals(curModelRecord.typeCode)) {
+                if (!typeCode.isEmpty() && typeCode.equals(curModelRecord.typeCode)) {
                     modelRecord = curModelRecord;
                     break;
                 }
             } // try to match a ranged typecode (tcMin <= typeCode <= tcMax)
             else if (curModelRecord.tcMin.length() > 0 || curModelRecord.tcMax.length() > 0) {
                 if (curModelRecord.tcIsNum) {
-                    // if (Debug.infoOn()) Debug.logInfo("[DataFile.findModelForLine] Doing ranged number typecode match - minNum=" + curModelRecord.tcMinNum + ", maxNum=" + curModelRecord.tcMaxNum + ", filelinecode=" + typeCode, module);
                     long typeCodeNum = Long.parseLong(typeCode);
-                    if ((curModelRecord.tcMinNum < 0 || typeCodeNum >= curModelRecord.tcMinNum) &&
-                            (curModelRecord.tcMaxNum < 0 || typeCodeNum <= curModelRecord.tcMaxNum)) {
+                    if ((curModelRecord.tcMinNum < 0 || typeCodeNum >= curModelRecord.tcMinNum) && (curModelRecord.tcMaxNum < 0 || typeCodeNum <= curModelRecord.tcMaxNum)) {
                         modelRecord = curModelRecord;
                         break;
                     }
                 } else {
-                    // if (Debug.infoOn()) Debug.logInfo("[DataFile.findModelForLine] Doing ranged String typecode match - min=" + curModelRecord.tcMin + ", max=" + curModelRecord.tcMax + ", filelinecode=" + typeCode, module);
                     if ((typeCode.compareTo(curModelRecord.tcMin) >= 0) && (typeCode.compareTo(curModelRecord.tcMax) <= 0)) {
                         modelRecord = curModelRecord;
                         break;
@@ -255,10 +248,8 @@ public class RecordIterator {
         }
 
         if (modelRecord == null) {
-            throw new DataFileException("Could not find record definition for line " + lineNum + "; first bytes: " +
-                    line.substring(0, (line.length() > 5) ? 5 : line.length()));
+            throw new DataFileException("Could not find record definition for line " + lineNum + "; first bytes: " + line.substring(0, (line.length() > 5) ? 5 : line.length()));
         }
-        // if (Debug.infoOn()) Debug.logInfo("[DataFile.findModelForLine] Got record model named " + modelRecord.name, module);
         return modelRecord;
     }
 }



Re: svn commit: r1813637 - in /ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/of biz/datafile: DataFile.java DataFile2EntityXml.java ModelDataFileReader.java Record.java RecordIterator.java

Posted by Michael Brohl <mi...@ecomify.de>.
Same thing as before...

Am 29.10.17 um 09:56 schrieb Jacques Le Roux:
> Le 28/10/2017 à 16:45, mbrohl@apache.org a écrit :
>>       /**
>>        * little endian reader for 4 byte int.
>>        */
>> -    public final int readLEInt(byte []byteArray) {
>> -    return
>> -    (byteArray[3])      << 24 |
>> -    (byteArray[2]&0xff) << 16 |
>> -    (byteArray[1]&0xff) <<  8 |
>> -    (byteArray[0]&0xff);
>> +    public final int readLEInt(byte[] byteArray) {
>> +        return (byteArray[3]) << 24 | (byteArray[2] & 0xff) << 16 | 
>> (byteArray[1] & 0xff) << 8 | (byteArray[0] & 0xff);
>>       }
>>         /**
>>        * little endian reader for 8 byte long.
>>        */
>> -    public final long readLELong(byte []byteArray) {
>> -    return
>> -    (long)(byteArray[7])      << 56 |  /* long cast needed or shift 
>> done modulo 32 */
>> -    (long)(byteArray[6]&0xff) << 48 |
>> -    (long)(byteArray[5]&0xff) << 40 |
>> -    (long)(byteArray[4]&0xff) << 32 |
>> -    (long)(byteArray[3]&0xff) << 24 |
>> -    (long)(byteArray[2]&0xff) << 16 |
>> -    (long)(byteArray[1]&0xff) <<  8 |
>> -    (byteArray[0]&0xff);
>> +    public final long readLELong(byte[] byteArray) {
>> +        return (long) (byteArray[7]) << 56 | /* long cast needed or 
>> shift done modulo 32 */
>> +               (long) (byteArray[6] & 0xff) << 48 | (long) 
>> (byteArray[5] & 0xff) << 40 | (long) (byteArray[4] & 0xff) << 32 | 
>> (long) (byteArray[3] & 0xff) << 24
>> +               | (long) (byteArray[2] & 0xff) << 16 | (long) 
>> (byteArray[1] & 0xff) << 8 | (byteArray[0] & 0xff);
>>       }
> I agree with your formatting Michael,
>
> But is everybody happy with it, especially the 2n one?
>
> Jacques
>


Re: svn commit: r1813637 - in /ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/of biz/datafile: DataFile.java DataFile2EntityXml.java ModelDataFileReader.java Record.java RecordIterator.java

Posted by Jacques Le Roux <ja...@les7arts.com>.
Le 28/10/2017 à 16:45, mbrohl@apache.org a écrit :
>       /**
>        * little endian reader for 4 byte int.
>        */
> -    public final int readLEInt(byte []byteArray) {
> -    return
> -    (byteArray[3])      << 24 |
> -    (byteArray[2]&0xff) << 16 |
> -    (byteArray[1]&0xff) <<  8 |
> -    (byteArray[0]&0xff);
> +    public final int readLEInt(byte[] byteArray) {
> +        return (byteArray[3]) << 24 | (byteArray[2] & 0xff) << 16 | (byteArray[1] & 0xff) << 8 | (byteArray[0] & 0xff);
>       }
>   
>       /**
>        * little endian reader for 8 byte long.
>        */
> -    public final long readLELong(byte []byteArray) {
> -    return
> -    (long)(byteArray[7])      << 56 |  /* long cast needed or shift done modulo 32 */
> -    (long)(byteArray[6]&0xff) << 48 |
> -    (long)(byteArray[5]&0xff) << 40 |
> -    (long)(byteArray[4]&0xff) << 32 |
> -    (long)(byteArray[3]&0xff) << 24 |
> -    (long)(byteArray[2]&0xff) << 16 |
> -    (long)(byteArray[1]&0xff) <<  8 |
> -    (byteArray[0]&0xff);
> +    public final long readLELong(byte[] byteArray) {
> +        return (long) (byteArray[7]) << 56 | /* long cast needed or shift done modulo 32 */
> +               (long) (byteArray[6] & 0xff) << 48 | (long) (byteArray[5] & 0xff) << 40 | (long) (byteArray[4] & 0xff) << 32 | (long) (byteArray[3] & 0xff) << 24
> +               | (long) (byteArray[2] & 0xff) << 16 | (long) (byteArray[1] & 0xff) << 8 | (byteArray[0] & 0xff);
>       }
I agree with your formatting Michael,

But is everybody happy with it, especially the 2n one?

Jacques


Re: svn commit: r1813637 - in /ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/of biz/datafile: DataFile.java DataFile2EntityXml.java ModelDataFileReader.java Record.java RecordIterator.java

Posted by Michael Brohl <mi...@ecomify.de>.
Same thing as before.

This is just produced by the formatter.


Am 29.10.17 um 09:15 schrieb Jacques Le Roux:
> Le 28/10/2017 à 16:45, mbrohl@apache.org a écrit :
>> -    protected DataFile() {}
>> +    protected DataFile() {
>> +    }
> Hi Michael,
>
> Do we really prefer "this to that" ?
>
> Jacques
>



Re: svn commit: r1813637 - in /ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/of biz/datafile: DataFile.java DataFile2EntityXml.java ModelDataFileReader.java Record.java RecordIterator.java

Posted by Jacques Le Roux <ja...@les7arts.com>.
Le 28/10/2017 à 16:45, mbrohl@apache.org a écrit :
> -    protected DataFile() {}
> +    protected DataFile() {
> +    }
Hi Michael,

Do we really prefer "this to that" ?

Jacques


Re: svn commit: r1813637 - in /ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/of biz/datafile: DataFile.java DataFile2EntityXml.java ModelDataFileReader.java Record.java RecordIterator.java

Posted by Michael Brohl <mi...@ecomify.de>.
Ah, I thought I have used the OFBiz formatter provided by the link you 
mentioned, I have it embedded in Eclipse.

But was wrong, it was the Eclipse default formatter. I changed it back now.

I agree that we should all use the same formatting conventions to 
prevent having "changes" which are only produced by formatting. The 
attachment should be mentioned more prominently, as far as I can see it 
is only depicted by the small icon just below the headline.

If we want to decide on a formatting style, best would be to have one 
which is most near to what we have in the codebase now, if possible, to 
avoid having too much changes in the future.

Regards,

Michael


Am 29.10.17 um 11:37 schrieb Jacques Le Roux:
> We (committers at least, with contributors would even be better) could 
> decide to use the same formatter.
>
> This would helps when merging from custom projects or backporting to 
> them...
>
> I tried this once by sharing my Eclipse formatter at 
> https://cwiki.apache.org/confluence/pages/viewpageattachments.action?pageId=7766027
>
> So we could decide on our own rules and get more legible and 
> consistent formatting
>
> Now that more people use InteliJ we could start from an Eclipse formatter
>
> https://blog.jetbrains.com/idea/2014/01/intellij-idea-13-importing-code-formatter-settings-from-eclipse/ 
>
> https://plugins.jetbrains.com/plugin/6546-eclipse-code-formatter
>
> It seems there is no other way around
>
> https://stackoverflow.com/questions/29226589/export-intellij-idea-code-formatting-rules-to-eclipse 
>
>
> Maybe ultimately using CheckStyle as suggested? I remember being 
> rebuffed a decade abo when I suggested to use Findbugs...
>
> I'm not strongly opinionated about that, but when I think about 
> external mergings...
>
> Jacques
>
>
> Le 29/10/2017 à 10:53, Michael Brohl a écrit :
>> I think this is just a formatting change becaused I used our 
>> formatter for Eclipse.
>>
>> Not really something worth a discussion, is it?
>>
>>
>> Am 29.10.17 um 10:07 schrieb Jacques Le Roux:
>>> Le 28/10/2017 à 16:45, mbrohl@apache.org a écrit :
>>>> -        for (int i = 0; i < modelField.length; i++)
>>>> -            sb.append(PAD_CHAR);
>>>> -        data = sb.toString();
>>>> -        }
>>>> +                for (int i = 0; i < modelField.length; i++)
>>>> +                    sb.append(PAD_CHAR);
>>>> +                data = sb.toString();
>>>> +            }
>>> Hi All,
>>>
>>> I find this ambiguous. We have few options here:
>>>
>>> 1)
>>>                 for (int i = 0; i < modelField.length; i++)
>>>                     sb.append(PAD_CHAR);
>>>
>>>                 data = sb.toString();
>>>
>>> 2)
>>>                 for (int i = 0; i < modelField.length; i++) {
>>>                     sb.append(PAD_CHAR);
>>>                 }
>>>                 data = sb.toString();
>>>
>>> 3)
>>>                 for (int i = 0; i < modelField.length; i++) 
>>> sb.append(PAD_CHAR);
>>>                 data = sb.toString();
>>>
>>> 4)
>>>                 for (int i = 0; i < modelField.length; i++) 
>>> sb.append(PAD_CHAR);
>>>
>>>                 data = sb.toString();
>>>
>>> Which one do you prefer? Of course this should be a general rule, 
>>> not only for this case!
>>>
>>> Thanks
>>>
>>> Jacques
>>>
>>
>


Re: svn commit: r1813637 - in /ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/of biz/datafile: DataFile.java DataFile2EntityXml.java ModelDataFileReader.java Record.java RecordIterator.java

Posted by Jacques Le Roux <ja...@les7arts.com>.
Using a checkstyle Gradle task could help in this way, notably by running it in Buildbot.

But we need 1st to agree on rules...

Jacques


Le 29/10/2017 à 11:57, Taher Alkhateeb a écrit :
> Unless we find a way of automating, I don't think we should spend much time
> on things like how to write an empty constructor. We have bigger problems
> to solve.
>
> On Oct 29, 2017 1:36 PM, "Jacques Le Roux" <ja...@les7arts.com>
> wrote:
>
>> We (committers at least, with contributors would even be better) could
>> decide to use the same formatter.
>>
>> This would helps when merging from custom projects or backporting to
>> them...
>>
>> I tried this once by sharing my Eclipse formatter at
>> https://cwiki.apache.org/confluence/pages/viewpageattachment
>> s.action?pageId=7766027
>>
>> So we could decide on our own rules and get more legible and consistent
>> formatting
>>
>> Now that more people use InteliJ we could start from an Eclipse formatter
>>
>> https://blog.jetbrains.com/idea/2014/01/intellij-idea-13-imp
>> orting-code-formatter-settings-from-eclipse/
>> https://plugins.jetbrains.com/plugin/6546-eclipse-code-formatter
>>
>> It seems there is no other way around
>>
>> https://stackoverflow.com/questions/29226589/export-intellij
>> -idea-code-formatting-rules-to-eclipse
>>
>> Maybe ultimately using CheckStyle as suggested? I remember being rebuffed
>> a decade abo when I suggested to use Findbugs...
>>
>> I'm not strongly opinionated about that, but when I think about external
>> mergings...
>>
>> Jacques
>>
>>
>> Le 29/10/2017 à 10:53, Michael Brohl a écrit :
>>
>>> I think this is just a formatting change becaused I used our formatter
>>> for Eclipse.
>>>
>>> Not really something worth a discussion, is it?
>>>
>>>
>>> Am 29.10.17 um 10:07 schrieb Jacques Le Roux:
>>>
>>>> Le 28/10/2017 à 16:45, mbrohl@apache.org a écrit :
>>>>
>>>>> -        for (int i = 0; i < modelField.length; i++)
>>>>> -            sb.append(PAD_CHAR);
>>>>> -        data = sb.toString();
>>>>> -        }
>>>>> +                for (int i = 0; i < modelField.length; i++)
>>>>> +                    sb.append(PAD_CHAR);
>>>>> +                data = sb.toString();
>>>>> +            }
>>>>>
>>>> Hi All,
>>>>
>>>> I find this ambiguous. We have few options here:
>>>>
>>>> 1)
>>>>                  for (int i = 0; i < modelField.length; i++)
>>>>                      sb.append(PAD_CHAR);
>>>>
>>>>                  data = sb.toString();
>>>>
>>>> 2)
>>>>                  for (int i = 0; i < modelField.length; i++) {
>>>>                      sb.append(PAD_CHAR);
>>>>                  }
>>>>                  data = sb.toString();
>>>>
>>>> 3)
>>>>                  for (int i = 0; i < modelField.length; i++)
>>>> sb.append(PAD_CHAR);
>>>>                  data = sb.toString();
>>>>
>>>> 4)
>>>>                  for (int i = 0; i < modelField.length; i++)
>>>> sb.append(PAD_CHAR);
>>>>
>>>>                  data = sb.toString();
>>>>
>>>> Which one do you prefer? Of course this should be a general rule, not
>>>> only for this case!
>>>>
>>>> Thanks
>>>>
>>>> Jacques
>>>>
>>>>


Re: svn commit: r1813637 - in /ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/of biz/datafile: DataFile.java DataFile2EntityXml.java ModelDataFileReader.java Record.java RecordIterator.java

Posted by Taher Alkhateeb <sl...@gmail.com>.
Unless we find a way of automating, I don't think we should spend much time
on things like how to write an empty constructor. We have bigger problems
to solve.

On Oct 29, 2017 1:36 PM, "Jacques Le Roux" <ja...@les7arts.com>
wrote:

> We (committers at least, with contributors would even be better) could
> decide to use the same formatter.
>
> This would helps when merging from custom projects or backporting to
> them...
>
> I tried this once by sharing my Eclipse formatter at
> https://cwiki.apache.org/confluence/pages/viewpageattachment
> s.action?pageId=7766027
>
> So we could decide on our own rules and get more legible and consistent
> formatting
>
> Now that more people use InteliJ we could start from an Eclipse formatter
>
> https://blog.jetbrains.com/idea/2014/01/intellij-idea-13-imp
> orting-code-formatter-settings-from-eclipse/
> https://plugins.jetbrains.com/plugin/6546-eclipse-code-formatter
>
> It seems there is no other way around
>
> https://stackoverflow.com/questions/29226589/export-intellij
> -idea-code-formatting-rules-to-eclipse
>
> Maybe ultimately using CheckStyle as suggested? I remember being rebuffed
> a decade abo when I suggested to use Findbugs...
>
> I'm not strongly opinionated about that, but when I think about external
> mergings...
>
> Jacques
>
>
> Le 29/10/2017 à 10:53, Michael Brohl a écrit :
>
>> I think this is just a formatting change becaused I used our formatter
>> for Eclipse.
>>
>> Not really something worth a discussion, is it?
>>
>>
>> Am 29.10.17 um 10:07 schrieb Jacques Le Roux:
>>
>>> Le 28/10/2017 à 16:45, mbrohl@apache.org a écrit :
>>>
>>>> -        for (int i = 0; i < modelField.length; i++)
>>>> -            sb.append(PAD_CHAR);
>>>> -        data = sb.toString();
>>>> -        }
>>>> +                for (int i = 0; i < modelField.length; i++)
>>>> +                    sb.append(PAD_CHAR);
>>>> +                data = sb.toString();
>>>> +            }
>>>>
>>> Hi All,
>>>
>>> I find this ambiguous. We have few options here:
>>>
>>> 1)
>>>                 for (int i = 0; i < modelField.length; i++)
>>>                     sb.append(PAD_CHAR);
>>>
>>>                 data = sb.toString();
>>>
>>> 2)
>>>                 for (int i = 0; i < modelField.length; i++) {
>>>                     sb.append(PAD_CHAR);
>>>                 }
>>>                 data = sb.toString();
>>>
>>> 3)
>>>                 for (int i = 0; i < modelField.length; i++)
>>> sb.append(PAD_CHAR);
>>>                 data = sb.toString();
>>>
>>> 4)
>>>                 for (int i = 0; i < modelField.length; i++)
>>> sb.append(PAD_CHAR);
>>>
>>>                 data = sb.toString();
>>>
>>> Which one do you prefer? Of course this should be a general rule, not
>>> only for this case!
>>>
>>> Thanks
>>>
>>> Jacques
>>>
>>>
>>
>

Re: svn commit: r1813637 - in /ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/of biz/datafile: DataFile.java DataFile2EntityXml.java ModelDataFileReader.java Record.java RecordIterator.java

Posted by Jacques Le Roux <ja...@les7arts.com>.
We (committers at least, with contributors would even be better) could decide to use the same formatter.

This would helps when merging from custom projects or backporting to them...

I tried this once by sharing my Eclipse formatter at https://cwiki.apache.org/confluence/pages/viewpageattachments.action?pageId=7766027

So we could decide on our own rules and get more legible and consistent formatting

Now that more people use InteliJ we could start from an Eclipse formatter

https://blog.jetbrains.com/idea/2014/01/intellij-idea-13-importing-code-formatter-settings-from-eclipse/
https://plugins.jetbrains.com/plugin/6546-eclipse-code-formatter

It seems there is no other way around

https://stackoverflow.com/questions/29226589/export-intellij-idea-code-formatting-rules-to-eclipse

Maybe ultimately using CheckStyle as suggested? I remember being rebuffed a decade abo when I suggested to use Findbugs...

I'm not strongly opinionated about that, but when I think about external mergings...

Jacques


Le 29/10/2017 à 10:53, Michael Brohl a écrit :
> I think this is just a formatting change becaused I used our formatter for Eclipse.
>
> Not really something worth a discussion, is it?
>
>
> Am 29.10.17 um 10:07 schrieb Jacques Le Roux:
>> Le 28/10/2017 à 16:45, mbrohl@apache.org a écrit :
>>> -        for (int i = 0; i < modelField.length; i++)
>>> -            sb.append(PAD_CHAR);
>>> -        data = sb.toString();
>>> -        }
>>> +                for (int i = 0; i < modelField.length; i++)
>>> +                    sb.append(PAD_CHAR);
>>> +                data = sb.toString();
>>> +            }
>> Hi All,
>>
>> I find this ambiguous. We have few options here:
>>
>> 1)
>>                 for (int i = 0; i < modelField.length; i++)
>>                     sb.append(PAD_CHAR);
>>
>>                 data = sb.toString();
>>
>> 2)
>>                 for (int i = 0; i < modelField.length; i++) {
>>                     sb.append(PAD_CHAR);
>>                 }
>>                 data = sb.toString();
>>
>> 3)
>>                 for (int i = 0; i < modelField.length; i++) sb.append(PAD_CHAR);
>>                 data = sb.toString();
>>
>> 4)
>>                 for (int i = 0; i < modelField.length; i++) sb.append(PAD_CHAR);
>>
>>                 data = sb.toString();
>>
>> Which one do you prefer? Of course this should be a general rule, not only for this case!
>>
>> Thanks
>>
>> Jacques
>>
>


Re: svn commit: r1813637 - in /ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/of biz/datafile: DataFile.java DataFile2EntityXml.java ModelDataFileReader.java Record.java RecordIterator.java

Posted by Michael Brohl <mi...@ecomify.de>.
I think this is just a formatting change becaused I used our formatter 
for Eclipse.

Not really something worth a discussion, is it?


Am 29.10.17 um 10:07 schrieb Jacques Le Roux:
> Le 28/10/2017 à 16:45, mbrohl@apache.org a écrit :
>> -        for (int i = 0; i < modelField.length; i++)
>> -            sb.append(PAD_CHAR);
>> -        data = sb.toString();
>> -        }
>> +                for (int i = 0; i < modelField.length; i++)
>> +                    sb.append(PAD_CHAR);
>> +                data = sb.toString();
>> +            }
> Hi All,
>
> I find this ambiguous. We have few options here:
>
> 1)
>                 for (int i = 0; i < modelField.length; i++)
>                     sb.append(PAD_CHAR);
>
>                 data = sb.toString();
>
> 2)
>                 for (int i = 0; i < modelField.length; i++) {
>                     sb.append(PAD_CHAR);
>                 }
>                 data = sb.toString();
>
> 3)
>                 for (int i = 0; i < modelField.length; i++) 
> sb.append(PAD_CHAR);
>                 data = sb.toString();
>
> 4)
>                 for (int i = 0; i < modelField.length; i++) 
> sb.append(PAD_CHAR);
>
>                 data = sb.toString();
>
> Which one do you prefer? Of course this should be a general rule, not 
> only for this case!
>
> Thanks
>
> Jacques
>


Re: svn commit: r1813637 - in /ofbiz/ofbiz-framework/trunk/framework/datafile/src/main/java/org/apache/of biz/datafile: DataFile.java DataFile2EntityXml.java ModelDataFileReader.java Record.java RecordIterator.java

Posted by Jacques Le Roux <ja...@les7arts.com>.
Le 28/10/2017 à 16:45, mbrohl@apache.org a écrit :
> -        for (int i = 0; i < modelField.length; i++)
> -            sb.append(PAD_CHAR);
> -        data = sb.toString();
> -        }
> +                for (int i = 0; i < modelField.length; i++)
> +                    sb.append(PAD_CHAR);
> +                data = sb.toString();
> +            }
>   
Hi All,

I find this ambiguous. We have few options here:

1)
                 for (int i = 0; i < modelField.length; i++)
                     sb.append(PAD_CHAR);

                 data = sb.toString();

2)
                 for (int i = 0; i < modelField.length; i++) {
                     sb.append(PAD_CHAR);
                 }
                 data = sb.toString();

3)
                 for (int i = 0; i < modelField.length; i++) sb.append(PAD_CHAR);
                 data = sb.toString();

4)
                 for (int i = 0; i < modelField.length; i++) sb.append(PAD_CHAR);

                 data = sb.toString();

Which one do you prefer? Of course this should be a general rule, not only for this case!

Thanks

Jacques