poi-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From a...@apache.org
Subject cvs commit: jakarta-poi/src/testcases/org/apache/poi/poifs/property TestDocumentProperty.java TestRootProperty.java
Date Fri, 31 Oct 2003 16:39:05 GMT
avik        2003/10/31 08:39:05

  Modified:    src/java/org/apache/poi/hpsf ClassID.java
               src/java/org/apache/poi/poifs/property Property.java
               src/testcases/org/apache/poi/poifs/property
                        TestDocumentProperty.java TestRootProperty.java
  Added:       src/testcases/org/apache/poi/hpsf/basic TestClassID.java
  Log:
  bug 22195 ClassID support, by  Michael Zalewski, sync from branch, pls verify
  
  Revision  Changes    Path
  1.10      +24 -2     jakarta-poi/src/java/org/apache/poi/hpsf/ClassID.java
  
  Index: ClassID.java
  ===================================================================
  RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hpsf/ClassID.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ClassID.java	13 Sep 2003 12:31:28 -0000	1.9
  +++ ClassID.java	31 Oct 2003 16:39:05 -0000	1.10
  @@ -55,6 +55,10 @@
    */
   package org.apache.poi.hpsf;
   
  +import java.io.*;
  +import org.apache.poi.util.HexDump;
  +import org.apache.poi.util.LittleEndian;
  +
   /**
    *  <p>Represents a class ID (16 bytes). Unlike other little-endian
    *  type the {@link ClassID} is not just 16 bytes stored in the wrong
  @@ -229,7 +233,25 @@
           return true;
       }
   
  -
  +    /**
  +     * Returns a human readable representation of the Class ID
  +     *   in standard format <code>"{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"</code>
  +     * @return String representation of the Class ID represented
  +     *   by this object.
  +     */
  +    public String toString()
  +    {
  +        StringBuffer sbClassId = new StringBuffer( 38);
  +        sbClassId.append( '{');
  +        for( int i=0; i < 16; i++) {
  +            sbClassId.append( HexDump.toHex( bytes[ i]));
  +            if( i == 3 || i == 5 || i == 7 || i == 9) {
  +                sbClassId.append( '-');
  +            }
  +        }
  +        sbClassId.append( '}');
  +        return sbClassId.toString();
  +    }
   
       /**
        * @see Object#hashCode()
  
  
  
  1.4       +34 -1     jakarta-poi/src/java/org/apache/poi/poifs/property/Property.java
  
  Index: Property.java
  ===================================================================
  RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/poifs/property/Property.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Property.java	30 Apr 2003 04:39:16 -0000	1.3
  +++ Property.java	31 Oct 2003 16:39:05 -0000	1.4
  @@ -59,6 +59,8 @@
   
   import java.util.*;
   
  +import org.apache.poi.hpsf.ClassID;
  +
   import org.apache.poi.poifs.common.POIFSConstants;
   import org.apache.poi.poifs.dev.POIFSViewable;
   import org.apache.poi.util.ByteField;
  @@ -87,6 +89,8 @@
       static final private int    _previous_property_offset = 0x44;
       static final private int    _next_property_offset     = 0x48;
       static final private int    _child_property_offset    = 0x4C;
  +    static final private int    _storage_clsid_offset     = 0x50;
  +    static final private int    _user_flags_offset        = 0x60;
       static final private int    _seconds_1_offset         = 0x64;
       static final private int    _days_1_offset            = 0x68;
       static final private int    _seconds_2_offset         = 0x6C;
  @@ -107,6 +111,8 @@
       private IntegerField        _previous_property;
       private IntegerField        _next_property;
       private IntegerField        _child_property;
  +    private ClassID             _storage_clsid;
  +    private IntegerField        _user_flags;
       private IntegerField        _seconds_1;
       private IntegerField        _days_1;
       private IntegerField        _seconds_2;
  @@ -136,6 +142,8 @@
                                                 _NO_INDEX, _raw_data);
           _child_property    = new IntegerField(_child_property_offset,
                                                 _NO_INDEX, _raw_data);
  +        _storage_clsid     = new ClassID(_raw_data,_storage_clsid_offset);
  +        _user_flags        = new IntegerField(_user_flags_offset, 0, _raw_data);
           _seconds_1         = new IntegerField(_seconds_1_offset, 0,
                                                 _raw_data);
           _days_1            = new IntegerField(_days_1_offset, 0, _raw_data);
  @@ -173,6 +181,8 @@
                                                 _raw_data);
           _child_property    = new IntegerField(_child_property_offset,
                                                 _raw_data);
  +        _storage_clsid     = new ClassID(_raw_data,_storage_clsid_offset);
  +        _user_flags        = new IntegerField(_user_flags_offset, 0, _raw_data);
           _seconds_1         = new IntegerField(_seconds_1_offset, _raw_data);
           _days_1            = new IntegerField(_days_1_offset, _raw_data);
           _seconds_2         = new IntegerField(_seconds_2_offset, _raw_data);
  @@ -296,11 +306,20 @@
       abstract public boolean isDirectory();
   
       /**
  +     * Sets the storage clsid, which is the Class ID of a COM object which
  +     *   reads and writes this stream
  +     * @return storage Class ID for this property stream
  +     */
  +    public ClassID getStorageClsid()
  +    {
  +        return _storage_clsid;
  +    }
  +
  +    /**
        * Set the name; silently truncates the name if it's too long.
        *
        * @param name the new name
        */
  -
       protected final void setName(final String name)
       {
           char[] char_array = name.toCharArray();
  @@ -327,6 +346,20 @@
                               * LittleEndianConsts.SHORT_SIZE), _raw_data);
       }
   
  +    /**
  +     * Sets the storage class ID for this property stream. This is the Class ID
  +     *   of the COM object which can read and write this property stream
  +     * @param clsidStorage Storage Class ID
  +     */
  +    public void setStorageClsid( ClassID clsidStorage)
  +    {
  +        _storage_clsid = clsidStorage;
  +        if( clsidStorage == null) {
  +            Arrays.fill( _raw_data, _storage_clsid_offset, _storage_clsid_offset + ClassID.LENGTH,
(byte) 0);
  +        } else {
  +            clsidStorage.write( _raw_data, _storage_clsid_offset);
  +        }
  +    }
       /**
        * Set the property type. Makes no attempt to validate the value.
        *
  
  
  
  1.2       +171 -0    jakarta-poi/src/testcases/org/apache/poi/hpsf/basic/TestClassID.java
  
  
  
  
  1.3       +3 -0      jakarta-poi/src/testcases/org/apache/poi/poifs/property/TestDocumentProperty.java
  
  Index: TestDocumentProperty.java
  ===================================================================
  RCS file: /home/cvs/jakarta-poi/src/testcases/org/apache/poi/poifs/property/TestDocumentProperty.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestDocumentProperty.java	30 Apr 2003 04:39:17 -0000	1.2
  +++ TestDocumentProperty.java	31 Oct 2003 16:39:05 -0000	1.3
  @@ -150,6 +150,7 @@
               ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
               ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
               ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
  +
               ( byte ) 0x57, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
               ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6B, ( byte ) 0x00,
               ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
  @@ -182,6 +183,7 @@
               ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
               ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00,
               ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
  +
               ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x00,
               ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
               ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
  @@ -214,6 +216,7 @@
               ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
               ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00,
               ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
  +
               ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
               ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
               ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
  
  
  
  1.4       +3 -2      jakarta-poi/src/testcases/org/apache/poi/poifs/property/TestRootProperty.java
  
  Index: TestRootProperty.java
  ===================================================================
  RCS file: /home/cvs/jakarta-poi/src/testcases/org/apache/poi/poifs/property/TestRootProperty.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestRootProperty.java	30 Apr 2003 04:39:17 -0000	1.3
  +++ TestRootProperty.java	31 Oct 2003 16:39:05 -0000	1.4
  @@ -217,11 +217,11 @@
               ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00
           };
   
  -        verifyReadingProperty(0, input, 0, "Root Entry");
  +        verifyReadingProperty(0, input, 0, "Root Entry", "{00020820-0000-0000-C000-000000000046}");
       }
   
       private void verifyReadingProperty(int index, byte [] input, int offset,
  -                                       String name)
  +                                       String name, String sClsId)
           throws IOException
       {
           RootProperty          property = new RootProperty(index, input,
  @@ -242,6 +242,7 @@
           assertEquals(index, property.getIndex());
           assertEquals(name, property.getName());
           assertTrue(!property.getChildren().hasNext());
  +        assertEquals(property.getStorageClsid().toString(), sClsId);
       }
   
       /**
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: poi-dev-help@jakarta.apache.org


Mime
View raw message