Re: svn commit: r924211 - /ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/Record.java

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

Re: svn commit: r924211 - /ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/Record.java

Jacques Le Roux
Administrator
Oops, much more changes than what Eclipse showed me.
 I 1st did only one change by hand, then used Ctrl+I and still saw this one change.
I have certainly checked to not show white spaces changes somewhere.
Anyway it's ok in file, enough of this.

Jacques

From: <[hidden email]>

> Author: jleroux
> Date: Wed Mar 17 10:33:35 2010
> New Revision: 924211
>
> URL: http://svn.apache.org/viewvc?rev=924211&view=rev
> Log:
> Reformatted and cleaned following best practices
>
> Modified:
>    ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/Record.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=924211&r1=924210&r2=924211&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/Record.java (original)
> +++ ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/Record.java Wed Mar 17 10:33:35 2010
> @@ -54,89 +54,89 @@ 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);
> + 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 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,25 +154,25 @@ 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";
> -            }
> -            fields.put(name, value);
> -        }
> + 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";
> +     }
> +     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));
>
>     }
>
> @@ -180,26 +180,26 @@ public class Record implements Serializa
>      * 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);
> + return
> + (byteArray[3])      << 24 |
> + (byteArray[2]&0xff) << 16 |
> + (byteArray[1]&0xff) <<  8 |
> + (byteArray[0]&0xff);
>     }
>
>     /**
> -    * little endian reader for 8 byte long.
> -    */
> +     * 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 |
> -           (long)(byteArray[0]&0xff);
> + 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 |
> + (long)(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 +207,272 @@ 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.getDigestHash(value, hashType));
> -            } 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())));
> -        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.");
> -        }
> + 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.getDigestHash(value, hashType));
> +     } 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())));
> + 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;
> + 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;
>     }
>
>     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);
> -
> -        StringBuilder lineBuf = new StringBuilder();
> -
> -        for (ModelField modelField: modelRecord.fields) {
> -            String data = this.getFixedString(modelField.name);
> -
> -            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 (data == null) {
> -                StringBuilder sb = new StringBuilder("");
> -
> -                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(" ");
> -            }
> -            // 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);
> -                }
> -                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 + "\"");
> -
> -        // 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);
> -        }
> + 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();
> +
> + for (ModelField modelField: modelRecord.fields) {
> +     String data = this.getFixedString(modelField.name);
> +
> +     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 (data == null) {
> + StringBuilder sb = new StringBuilder("");
> +
> + 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(" ");
> +     }
> +     // 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);
> + }
> + 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 + "\"");
> +
> + // 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 +481,9 @@ public class Record implements Serializa
>      * @return
>      */
>     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 +493,9 @@ public class Record implements Serializa
>      * @return
>      */
>     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 +506,30 @@ public class Record implements Serializa
>      * @return
>      */
>     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);
> -            }
> -        }
> -        return record;
> +     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;
>     }
>
>     /**
> @@ -541,60 +541,58 @@ public class Record implements Serializa
>      * @return
>      */
>     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;
> -                }
> -            } 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 {
> -                if (textDelimiter != null && (strVal.startsWith(textDelimiter) && strVal.endsWith(textDelimiter))) {
> -                    strVal = strVal.substring(textDelimiter.length(), strVal.length() - textDelimiter.length());
> -                }
> -                record.setString(modelField.name, strVal);
> -            } catch (java.text.ParseException e) {
> -                throw new DataFileException("Could not parse field " + modelField.name + ", format string \"" + modelField.format
> + "\" with value " + strVal +
> -                        " 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;
> + 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;
> + }
> +     } 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 {
> + if (textDelimiter != null && (strVal.startsWith(textDelimiter) && strVal.endsWith(textDelimiter))) {
> +     strVal = strVal.substring(textDelimiter.length(), strVal.length() - textDelimiter.length());
> + }
> + record.setString(modelField.name, strVal);
> +     } catch (java.text.ParseException e) {
> + throw new DataFileException("Could not parse field " + modelField.name + ", format string \"" + modelField.format + "\" with
> value " + strVal +
> + " 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;
>     }
>
> }
>
>


Reply | Threaded
Open this post in threaded view
|

Re: svn commit: r924211 - /ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/Record.java

Adam Heath-2
Jacques Le Roux wrote:
> Oops, much more changes than what Eclipse showed me.
> I 1st did only one change by hand, then used Ctrl+I and still saw this
> one change.
> I have certainly checked to not show white spaces changes somewhere.
> Anyway it's ok in file, enough of this.
>
> Jacques

Yeah, that's bad, thanks for self-discovering it.

The following is a general purpose message, not directed at anyone in
particular.

==

And, here is the real reason why I complain so much about formatting
changes intermingled with real code changes.

Yes, it's true, when you look at the file, as it stands *right now*,
the formatting doesn't matter.  Most good programmers can read a full
file, and see the algorithm, with the formatting blurring into the
background.

However, that's simple.

There's an adage somewhere that says 90% of the time is spent
debugging.  This includes just reading other people's code.  As part
of this process, you have to look at the *history* of the code.  Part
of looking at history is tracking down when a line *changed*.

When looking in revision control history, you'll get a log message
describing the change.  Useful changelogs are very nice for doing
future debugging of past work.  If I'm trying to track down a reason
for something, and I discover a changelog on the file that describes
the reason, then I very happy.  My work is done.

However, generally I don't even know why my bug exists.  I just know
what line it's on.  So, then I have to fall back on reading diffs of
the various changes.

Revision control can tell me when a line has changed(some better than
others).  When a line actually *has* changed, however, revision
control doesn't know if it is spacing, or algorithmic.  And, when you
look at the diff, you don't see the whole algorithm, just the
individual line, with maybe 3 lines of context before and after.  That
is not enough to see what is actually occuring.

Having spacing changes and algorithmic changes intermingled means I
have to spend extra effort understanding, and, in some cases, even
checkout the whole previous version.  This slows down the debugging
process.

This is why I harp so much on space changes.
Reply | Threaded
Open this post in threaded view
|

Re: svn commit: r924211 - /ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/Record.java

BJ Freeman
In reply to this post by Jacques Le Roux
so would a best practices be to do a CTRL A then CTRL I
on a file as a patch then make changes to the code.

Pardon me I have seen the regex way but have not figure how to use it.

=========================
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/17/2010 10:51 AM:

> Jacques Le Roux wrote:
>> Oops, much more changes than what Eclipse showed me.
>> I 1st did only one change by hand, then used Ctrl+I and still saw this
>> one change.
>> I have certainly checked to not show white spaces changes somewhere.
>> Anyway it's ok in file, enough of this.
>>
>> Jacques
>
> Yeah, that's bad, thanks for self-discovering it.
>
> The following is a general purpose message, not directed at anyone in
> particular.
>
> ==
>
> And, here is the real reason why I complain so much about formatting
> changes intermingled with real code changes.
>
> Yes, it's true, when you look at the file, as it stands *right now*,
> the formatting doesn't matter.  Most good programmers can read a full
> file, and see the algorithm, with the formatting blurring into the
> background.
>
> However, that's simple.
>
> There's an adage somewhere that says 90% of the time is spent
> debugging.  This includes just reading other people's code.  As part
> of this process, you have to look at the *history* of the code.  Part
> of looking at history is tracking down when a line *changed*.
>
> When looking in revision control history, you'll get a log message
> describing the change.  Useful changelogs are very nice for doing
> future debugging of past work.  If I'm trying to track down a reason
> for something, and I discover a changelog on the file that describes
> the reason, then I very happy.  My work is done.
>
> However, generally I don't even know why my bug exists.  I just know
> what line it's on.  So, then I have to fall back on reading diffs of
> the various changes.
>
> Revision control can tell me when a line has changed(some better than
> others).  When a line actually *has* changed, however, revision
> control doesn't know if it is spacing, or algorithmic.  And, when you
> look at the diff, you don't see the whole algorithm, just the
> individual line, with maybe 3 lines of context before and after.  That
> is not enough to see what is actually occuring.
>
> Having spacing changes and algorithmic changes intermingled means I
> have to spend extra effort understanding, and, in some cases, even
> checkout the whole previous version.  This slows down the debugging
> process.
>
> This is why I harp so much on space changes.
>


Reply | Threaded
Open this post in threaded view
|

Re: svn commit: r924211 - /ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/Record.java

Jacques Le Roux
Administrator
The best with Ctlr+I is to use it on snippets where it's really needed. Actually I don't use it much since I follow the conventions.
Sometimes it's useful though.

Jacques

From: "BJ Freeman" <[hidden email]>

> so would a best practices be to do a CTRL A then CTRL I
> on a file as a patch then make changes to the code.
>
> Pardon me I have seen the regex way but have not figure how to use it.
>
> =========================
> 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/17/2010 10:51 AM:
>> Jacques Le Roux wrote:
>>> Oops, much more changes than what Eclipse showed me.
>>> I 1st did only one change by hand, then used Ctrl+I and still saw this
>>> one change.
>>> I have certainly checked to not show white spaces changes somewhere.
>>> Anyway it's ok in file, enough of this.
>>>
>>> Jacques
>>
>> Yeah, that's bad, thanks for self-discovering it.
>>
>> The following is a general purpose message, not directed at anyone in
>> particular.
>>
>> ==
>>
>> And, here is the real reason why I complain so much about formatting
>> changes intermingled with real code changes.
>>
>> Yes, it's true, when you look at the file, as it stands *right now*,
>> the formatting doesn't matter.  Most good programmers can read a full
>> file, and see the algorithm, with the formatting blurring into the
>> background.
>>
>> However, that's simple.
>>
>> There's an adage somewhere that says 90% of the time is spent
>> debugging.  This includes just reading other people's code.  As part
>> of this process, you have to look at the *history* of the code.  Part
>> of looking at history is tracking down when a line *changed*.
>>
>> When looking in revision control history, you'll get a log message
>> describing the change.  Useful changelogs are very nice for doing
>> future debugging of past work.  If I'm trying to track down a reason
>> for something, and I discover a changelog on the file that describes
>> the reason, then I very happy.  My work is done.
>>
>> However, generally I don't even know why my bug exists.  I just know
>> what line it's on.  So, then I have to fall back on reading diffs of
>> the various changes.
>>
>> Revision control can tell me when a line has changed(some better than
>> others).  When a line actually *has* changed, however, revision
>> control doesn't know if it is spacing, or algorithmic.  And, when you
>> look at the diff, you don't see the whole algorithm, just the
>> individual line, with maybe 3 lines of context before and after.  That
>> is not enough to see what is actually occuring.
>>
>> Having spacing changes and algorithmic changes intermingled means I
>> have to spend extra effort understanding, and, in some cases, even
>> checkout the whole previous version.  This slows down the debugging
>> process.
>>
>> This is why I harp so much on space changes.
>>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: svn commit: r924211 - /ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/Record.java

BJ Freeman
In reply to this post by BJ Freeman
thanks I have been on committer end in other projects.
so don't want to take up more of your time you so graciously donate.

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


Jacques Le Roux sent the following on 3/17/2010 2:08 PM:

> The best with Ctlr+I is to use it on snippets where it's really needed.
> Actually I don't use it much since I follow the conventions. Sometimes
> it's useful though.
>
> Jacques
>
> From: "BJ Freeman" <[hidden email]>
>> so would a best practices be to do a CTRL A then CTRL I
>> on a file as a patch then make changes to the code.
>>
>> Pardon me I have seen the regex way but have not figure how to use it.
>>
>> =========================
>> 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/17/2010 10:51 AM:
>>> Jacques Le Roux wrote:
>>>> Oops, much more changes than what Eclipse showed me.
>>>> I 1st did only one change by hand, then used Ctrl+I and still saw this
>>>> one change.
>>>> I have certainly checked to not show white spaces changes somewhere.
>>>> Anyway it's ok in file, enough of this.
>>>>
>>>> Jacques
>>>
>>> Yeah, that's bad, thanks for self-discovering it.
>>>
>>> The following is a general purpose message, not directed at anyone in
>>> particular.
>>>
>>> ==
>>>
>>> And, here is the real reason why I complain so much about formatting
>>> changes intermingled with real code changes.
>>>
>>> Yes, it's true, when you look at the file, as it stands *right now*,
>>> the formatting doesn't matter.  Most good programmers can read a full
>>> file, and see the algorithm, with the formatting blurring into the
>>> background.
>>>
>>> However, that's simple.
>>>
>>> There's an adage somewhere that says 90% of the time is spent
>>> debugging.  This includes just reading other people's code.  As part
>>> of this process, you have to look at the *history* of the code.  Part
>>> of looking at history is tracking down when a line *changed*.
>>>
>>> When looking in revision control history, you'll get a log message
>>> describing the change.  Useful changelogs are very nice for doing
>>> future debugging of past work.  If I'm trying to track down a reason
>>> for something, and I discover a changelog on the file that describes
>>> the reason, then I very happy.  My work is done.
>>>
>>> However, generally I don't even know why my bug exists.  I just know
>>> what line it's on.  So, then I have to fall back on reading diffs of
>>> the various changes.
>>>
>>> Revision control can tell me when a line has changed(some better than
>>> others).  When a line actually *has* changed, however, revision
>>> control doesn't know if it is spacing, or algorithmic.  And, when you
>>> look at the diff, you don't see the whole algorithm, just the
>>> individual line, with maybe 3 lines of context before and after.  That
>>> is not enough to see what is actually occuring.
>>>
>>> Having spacing changes and algorithmic changes intermingled means I
>>> have to spend extra effort understanding, and, in some cases, even
>>> checkout the whole previous version.  This slows down the debugging
>>> process.
>>>
>>> This is why I harp so much on space changes.
>>>
>>
>>
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: svn commit: r924211 - /ofbiz/trunk/framework/datafile/src/org/ofbiz/datafile/Record.java

Jacques Le Roux
Administrator
You are welcome BJ!

Jacques

From: "BJ Freeman" <[hidden email]>

> thanks I have been on committer end in other projects.
> so don't want to take up more of your time you so graciously donate.
>
> =========================
> 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>
>
>
> Jacques Le Roux sent the following on 3/17/2010 2:08 PM:
>> The best with Ctlr+I is to use it on snippets where it's really needed.
>> Actually I don't use it much since I follow the conventions. Sometimes
>> it's useful though.
>>
>> Jacques
>>
>> From: "BJ Freeman" <[hidden email]>
>>> so would a best practices be to do a CTRL A then CTRL I
>>> on a file as a patch then make changes to the code.
>>>
>>> Pardon me I have seen the regex way but have not figure how to use it.
>>>
>>> =========================
>>> 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/17/2010 10:51 AM:
>>>> Jacques Le Roux wrote:
>>>>> Oops, much more changes than what Eclipse showed me.
>>>>> I 1st did only one change by hand, then used Ctrl+I and still saw this
>>>>> one change.
>>>>> I have certainly checked to not show white spaces changes somewhere.
>>>>> Anyway it's ok in file, enough of this.
>>>>>
>>>>> Jacques
>>>>
>>>> Yeah, that's bad, thanks for self-discovering it.
>>>>
>>>> The following is a general purpose message, not directed at anyone in
>>>> particular.
>>>>
>>>> ==
>>>>
>>>> And, here is the real reason why I complain so much about formatting
>>>> changes intermingled with real code changes.
>>>>
>>>> Yes, it's true, when you look at the file, as it stands *right now*,
>>>> the formatting doesn't matter.  Most good programmers can read a full
>>>> file, and see the algorithm, with the formatting blurring into the
>>>> background.
>>>>
>>>> However, that's simple.
>>>>
>>>> There's an adage somewhere that says 90% of the time is spent
>>>> debugging.  This includes just reading other people's code.  As part
>>>> of this process, you have to look at the *history* of the code.  Part
>>>> of looking at history is tracking down when a line *changed*.
>>>>
>>>> When looking in revision control history, you'll get a log message
>>>> describing the change.  Useful changelogs are very nice for doing
>>>> future debugging of past work.  If I'm trying to track down a reason
>>>> for something, and I discover a changelog on the file that describes
>>>> the reason, then I very happy.  My work is done.
>>>>
>>>> However, generally I don't even know why my bug exists.  I just know
>>>> what line it's on.  So, then I have to fall back on reading diffs of
>>>> the various changes.
>>>>
>>>> Revision control can tell me when a line has changed(some better than
>>>> others).  When a line actually *has* changed, however, revision
>>>> control doesn't know if it is spacing, or algorithmic.  And, when you
>>>> look at the diff, you don't see the whole algorithm, just the
>>>> individual line, with maybe 3 lines of context before and after.  That
>>>> is not enough to see what is actually occuring.
>>>>
>>>> Having spacing changes and algorithmic changes intermingled means I
>>>> have to spend extra effort understanding, and, in some cases, even
>>>> checkout the whole previous version.  This slows down the debugging
>>>> process.
>>>>
>>>> This is why I harp so much on space changes.
>>>>
>>>
>>>
>>
>>
>>
>
>