You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by sa...@apache.org on 2003/06/05 04:00:07 UTC

cvs commit: jakarta-poi/src/scratchpad/src/org/apache/poi/hdf/generator HDFFieldIterator.java

sackley     2003/06/04 19:00:07

  Modified:    src/scratchpad/src/org/apache/poi/hdf/generator
                        HDFFieldIterator.java
  Log:
  Added code to allow XML generated classes to write themselves
  
  Revision  Changes    Path
  1.3       +39 -4     jakarta-poi/src/scratchpad/src/org/apache/poi/hdf/generator/HDFFieldIterator.java
  
  Index: HDFFieldIterator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-poi/src/scratchpad/src/org/apache/poi/hdf/generator/HDFFieldIterator.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- HDFFieldIterator.java	30 Apr 2003 04:38:59 -0000	1.2
  +++ HDFFieldIterator.java	5 Jun 2003 02:00:07 -0000	1.3
  @@ -55,6 +55,7 @@
   package org.apache.poi.hdf.generator;
   
   import org.apache.poi.generator.FieldIterator;
  +import org.apache.poi.generator.RecordUtil;
   
   /**
    * This class overrides FieldIterator to handle HDF specific types
  @@ -65,16 +66,17 @@
       public HDFFieldIterator()
       {
       }
  +
       public String fillDecoder(String size, String type)
       {
   
           String result = "";
   
           if (type.equals("short[]"))
  -            result = "LittleEndian.getSimpleShortArray(data, 0x" + Integer.toHexString(offset) + " + offset, size)";
  +            result = "LittleEndian.getSimpleShortArray(data, 0x" + Integer.toHexString(offset) + " + offset," +  size + ")";
           else if (type.equals("byte[]"))
  -            result = "LittleEndian.getByteArray(data, 0x" + Integer.toHexString(offset) + " + offset, size)";
  -        if (size.equals("2"))
  +            result = "LittleEndian.getByteArray(data, 0x" + Integer.toHexString(offset) + " + offset," + size + ")";
  +        else if (size.equals("2"))
               result = "LittleEndian.getShort(data, 0x" + Integer.toHexString(offset) + " + offset)";
           else if (size.equals("4"))
               result = "LittleEndian.getInt(data, 0x" + Integer.toHexString(offset) + " + offset)";
  @@ -92,4 +94,37 @@
           }
           return result;
       }
  -}
  \ No newline at end of file
  +
  +    public String serialiseEncoder( int fieldNumber, String fieldName, String size, String type)
  +    {
  +        String javaType = RecordUtil.getType(size, type, 0);
  +        String javaFieldName = RecordUtil.getFieldName(fieldNumber,fieldName,0);
  +
  +        String result = "";
  +
  +
  +        if (javaType.equals("short[]"))
  +            result = "LittleEndian.putShortArray(data, 0x" + Integer.toHexString(offset) + " + offset, " + javaFieldName + ");";
  +        else if (javaType.equals("byte[]"))
  +            result = "LittleEndian.putByteArray(data, 0x" + Integer.toHexString(offset) + " + offset, " + javaFieldName + ");";
  +        else if (size.equals("2"))
  +          result = "LittleEndian.putShort(data, 0x" + Integer.toHexString(offset) + " + offset, (short)" + javaFieldName + ");";
  +        else if (size.equals("4"))
  +          result = "LittleEndian.putInt(data, 0x" + Integer.toHexString(offset) + " + offset, " + javaFieldName + ");";
  +        else if (size.equals("1"))
  +            result = "data[ 0x" + Integer.toHexString(offset) + " + offset] = " + javaFieldName + ";";
  +        else if (javaType.equals("double"))
  +            result = "LittleEndian.putDouble(data, 0x" + Integer.toHexString(offset) + " + offset, " + javaFieldName + ");";
  +
  +        try
  +        {
  +            offset += Integer.parseInt(size);
  +        }
  +        catch (NumberFormatException ignore)
  +        {
  +        }
  +        return result;
  +
  +    }
  +
  +}