You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by ac...@apache.org on 2008/04/16 14:03:29 UTC

svn commit: r648675 [2/2] - in /xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp: ./ goca/ modca/ modca/triplets/

Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/ResourceObject.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/ResourceObject.java?rev=648675&r1=648674&r2=648675&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/ResourceObject.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/ResourceObject.java Wed Apr 16 05:03:15 2008
@@ -22,7 +22,6 @@
 import java.io.IOException;
 import java.io.OutputStream;
 
-import org.apache.fop.render.afp.ResourceInfo;
 import org.apache.fop.render.afp.modca.triplets.Triplet;
 import org.apache.fop.render.afp.tools.BinaryUtils;
 
@@ -30,34 +29,17 @@
  * This resource structured field begins an envelope that is used to carry
  * resource objects in print-file-level (external) resource groups. 
  */
-public class ResourceObject extends AbstractPreparedAFPObject {
+public class ResourceObject extends AbstractPreparedAFPObject implements DataObjectAccessor {
     
     /**
-     * Resource object types
+     * the object container of this resource object
      */
-    private static final byte GRAPHICS_OBJECT = 0x03;
-    private static final byte BARCODE_OBJECT = 0x05;
-    private static final byte IMAGE_OBJECT = 0x06;
-    private static final byte FONT_CHARACTER_SET_OBJECT = 0x40;
-    private static final byte CODE_PAGE_OBJECT = 0x41;
-    private static final byte CODED_FONT_OBJECT = 0x42;
-    private static final byte OBJECT_CONTAINER = (byte) 0x92;
-    private static final byte DOCUMENT_OBJECT = (byte) 0xA8;
-    private static final byte PAGE_SEGMENT_OBJECT = (byte) 0xFB;
-    private static final byte OVERLAY_OBJECT = (byte) 0xFC;
-    private static final byte PAGEDEF_OBJECT = (byte) 0xFD;
-    private static final byte FORMDEF_OBJECT = (byte) 0xFE;
-        
-    /**
-     * the referenced data object
-     */    
-    private AbstractNamedAFPObject dataObj = null;
+    private ObjectContainer objectContainer;
         
     /**
      * Default constructor
      * 
      * @param name the name of this resource (reference id)
-     * @param dataObj the resource object to be added
      */
     public ResourceObject(String name) {
         super(name);
@@ -65,32 +47,41 @@
         
     /**
      * Sets the data object referenced by this resource object
-     * @param dataObj the data object
+     * @param objectContainer the object container
      */
-    public void setReferencedObject(AbstractNamedAFPObject dataObj) {
-        this.dataObj = dataObj;
-        setResourceObjectType(dataObj);
+    public void setObjectContainer(ObjectContainer objectContainer) {
+        this.objectContainer = objectContainer;
+        setResourceObjectType(objectContainer);
     }
-
+    
     /**
-     * @return the resource object contained in this envelope 
+     * {@inheritDoc}
      */
-    public AbstractNamedAFPObject getReferencedObject() {
-        return this.dataObj;
+    public AbstractNamedAFPObject getDataObject() {
+        if (objectContainer != null) {
+            return objectContainer.getDataObject();
+        }
+        return null;
     }
     
-    private void setResourceObjectType(AbstractNamedAFPObject resourceObj) {
+    /**
+     * Sets the resource object type
+     * @param resourceObj the resource object
+     */
+    public void setResourceObjectType(AbstractNamedAFPObject resourceObj) {
         byte type;
-        if (resourceObj instanceof ImageObject) {
-            type = IMAGE_OBJECT;
+        if (resourceObj instanceof ObjectContainer) {
+            type = ResourceObjectTypeTriplet.OBJECT_CONTAINER;
+        } else if (resourceObj instanceof ImageObject) {
+            type = ResourceObjectTypeTriplet.IMAGE_OBJECT;
         } else if (resourceObj instanceof GraphicsObject) {
-            type = GRAPHICS_OBJECT;
+            type = ResourceObjectTypeTriplet.GRAPHICS_OBJECT;
         } else if (resourceObj instanceof Document) {
-            type = DOCUMENT_OBJECT;
+            type = ResourceObjectTypeTriplet.DOCUMENT_OBJECT;
         } else if (resourceObj instanceof PageSegment) {
-            type = PAGE_SEGMENT_OBJECT;
+            type = ResourceObjectTypeTriplet.PAGE_SEGMENT_OBJECT;
         } else if (resourceObj instanceof Overlay) {
-            type = OVERLAY_OBJECT;
+            type = ResourceObjectTypeTriplet.OVERLAY_OBJECT;
         } else {
             throw new UnsupportedOperationException(
                     "Unsupported resource object type " + resourceObj);
@@ -135,8 +126,8 @@
      */
     protected void writeContent(OutputStream os) throws IOException {
         super.writeContent(os); // write triplets
-        if (dataObj != null) {
-            dataObj.writeDataStream(os);
+        if (objectContainer != null) {
+            objectContainer.writeDataStream(os);
         }
     }
 
@@ -176,6 +167,22 @@
     private class ResourceObjectTypeTriplet extends Triplet {
 
         private static final byte RESOURCE_OBJECT = 0x21;
+
+        /**
+         * Resource object types
+         */
+        private static final byte GRAPHICS_OBJECT = 0x03;
+//        private static final byte BARCODE_OBJECT = 0x05;
+        private static final byte IMAGE_OBJECT = 0x06;
+//        private static final byte FONT_CHARACTER_SET_OBJECT = 0x40;
+//        private static final byte CODE_PAGE_OBJECT = 0x41;
+//        private static final byte CODED_FONT_OBJECT = 0x42;
+        private static final byte OBJECT_CONTAINER = (byte) 0x92;
+        private static final byte DOCUMENT_OBJECT = (byte) 0xA8;
+        private static final byte PAGE_SEGMENT_OBJECT = (byte) 0xFB;
+        private static final byte OVERLAY_OBJECT = (byte) 0xFC;
+//        private static final byte PAGEDEF_OBJECT = (byte) 0xFD;
+//        private static final byte FORMDEF_OBJECT = (byte) 0xFE;
 
         /**
          * Main constructor

Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/FullyQualifiedNameTriplet.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/FullyQualifiedNameTriplet.java?rev=648675&r1=648674&r2=648675&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/FullyQualifiedNameTriplet.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/FullyQualifiedNameTriplet.java Wed Apr 16 05:03:15 2008
@@ -96,12 +96,15 @@
      */
     public FullyQualifiedNameTriplet(byte type, byte format, byte[] name) {
         super(FULLY_QUALIFIED_NAME);
+        
         this.nameBytes = name;
-        super.data = new byte[2 + name.length];
+        byte[] data = new byte[2 + name.length];
         data[0] = type;
         data[1] = format;
         // FQName
         System.arraycopy(name, 0, data, 2, name.length);
+        
+        super.setData(data);
     }
     
     /**

Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/MeasurementUnitsTriplet.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/MeasurementUnitsTriplet.java?rev=648675&r1=648674&r2=648675&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/MeasurementUnitsTriplet.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/MeasurementUnitsTriplet.java Wed Apr 16 05:03:15 2008
@@ -38,7 +38,7 @@
         //TODO: units correct?
         byte[] xUnits = BinaryUtils.convert(1, 2);
         byte[] yUnits = BinaryUtils.convert(1, 2);
-        super.data = new byte[] {
+        byte[] data = new byte[] {
              TEN_INCHES, // XoaBase
              TEN_INCHES, // YoaBase
              xUnits[0], // XoaUnits (x units per unit base)                
@@ -46,5 +46,6 @@
              yUnits[0], // YoaUnits (y units per unit base)
              yUnits[1]
         };
+        super.setData(data);
     }
 }

Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/ObjectAreaSizeTriplet.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/ObjectAreaSizeTriplet.java?rev=648675&r1=648674&r2=648675&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/ObjectAreaSizeTriplet.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/ObjectAreaSizeTriplet.java Wed Apr 16 05:03:15 2008
@@ -36,7 +36,7 @@
         super(Triplet.OBJECT_AREA_SIZE);
         byte[] xOASize = BinaryUtils.convert(x, 3);
         byte[] yOASize = BinaryUtils.convert(y, 3);
-        super.data = new byte[] {
+        byte[] data = new byte[] {
             0x02, // SizeType
             xOASize[0], // XoaSize - Object area extent for X axis
             xOASize[1],
@@ -45,5 +45,6 @@
             yOASize[1],
             yOASize[2]
         };
+        super.setData(data);
     }
 }

Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/ObjectClassificationTriplet.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/ObjectClassificationTriplet.java?rev=648675&r1=648674&r2=648675&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/ObjectClassificationTriplet.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/ObjectClassificationTriplet.java Wed Apr 16 05:03:15 2008
@@ -19,7 +19,11 @@
 
 package org.apache.fop.render.afp.modca.triplets;
 
-import org.apache.fop.render.afp.modca.ObjectTypeRegistry;
+import java.io.UnsupportedEncodingException;
+
+import org.apache.fop.render.afp.modca.AFPConstants;
+import org.apache.fop.render.afp.modca.Registry;
+import org.apache.fop.render.afp.tools.StringUtils;
 
 /**
  * The Object Classification is used to classify and identify object data.
@@ -65,15 +69,45 @@
      * 
      * @param objectClass
      *             the object class type
-     * @param entry
+     * @param objectType
      *             the object type registry entry
      * @param strucFlgs
      *             the structured flags pertaining to this object classification triplet
      */
-    public ObjectClassificationTriplet(byte objectClass, ObjectTypeRegistry.ObjectType entry,
+    public ObjectClassificationTriplet(byte objectClass, Registry.ObjectType objectType,
             StrucFlgs strucFlgs) {
+        // no object level or company name specified
+        this(objectClass, objectType, strucFlgs, null, null);
+    }
+    
+    
+    private static final int OBJECT_LEVEL_LEN = 8;
+    private static final int OBJECT_TYPE_NAME_LEN = 32;
+    private static final int COMPANY_NAME_LEN = 32;
+    
+    /**
+     * Fully parameterized constructor
+     * 
+     * @param objectClass
+     *             the object class type
+     * @param objectType
+     *             the object type registry entry
+     * @param strucFlgs
+     *             the structured flags pertaining to this object classification triplet
+     * @param objLev
+     *             the release level or version number of the object type
+     * @param compName
+     *             the name of the company or organization that owns the object definition
+     */
+    public ObjectClassificationTriplet(byte objectClass, Registry.ObjectType objectType,
+            StrucFlgs strucFlgs, String objLev, String compName) {
         super(OBJECT_CLASSIFICATION);
-        byte[] data = new byte[93];
+
+        if (objectType == null) {
+            throw new UnsupportedOperationException("MO:DCA Registry object type is null");
+        }
+
+        byte[] data = new byte[94];
         data[0] = 0x00; // reserved (must be zero)
         data[1] = objectClass; // ObjClass
         data[2] = 0x00; // reserved (must be zero)
@@ -81,21 +115,41 @@
         // StrucFlgs - Information on the structure of the object container        
         data[4] = strucFlgs.getValue();
         data[5] = 0x00; // StrucFlgs
-        
-        if (entry == null) {
-            throw new UnsupportedOperationException("Unknown registry entry");
-        }
-        
-        byte[] oid = entry.getOID();
+                
+        byte[] oid = objectType.getOID();
         // RegObjId - MOD:CA-registered ASN.1 OID for object type (8-23)
         System.arraycopy(oid, 0, data, 6, oid.length);
             
-        byte[] objectTypeName = entry.getName();
         // ObjTpName - name of object type (24-55)
-        System.arraycopy(objectTypeName, 0, data, 22, objectTypeName.length);
+        byte[] objTpName;
+        try {
+            objTpName = StringUtils.rpad(objectType.getName(), ' ', OBJECT_TYPE_NAME_LEN).getBytes(
+                    AFPConstants.EBCIDIC_ENCODING);
+            System.arraycopy(objTpName, 0, data, 22, objTpName.length);
+        } catch (UnsupportedEncodingException e) {
+            throw new IllegalArgumentException("an encoding exception occurred");
+        }
              
-        // ObjLev (not specified) - Release level or version number of object type (56-63)
-
-        // CompName (not specified) - Name of company or org that owns object definition (64-95)
+        // ObjLev - release level or version number of object type (56-63)
+        byte[] objectLevel;
+        try {
+            objectLevel = StringUtils.rpad(objLev, ' ', OBJECT_LEVEL_LEN).getBytes(
+                    AFPConstants.EBCIDIC_ENCODING);
+        } catch (UnsupportedEncodingException e) {
+            throw new IllegalArgumentException("an encoding exception occurred");
+        }
+        System.arraycopy(objectLevel, 0, data, 54, objectLevel.length);        
+        
+        // CompName - name of company or org that owns object definition (64-95)
+        byte[] companyName;
+        try {
+            companyName = StringUtils.rpad(compName, ' ', COMPANY_NAME_LEN).getBytes(
+                    AFPConstants.EBCIDIC_ENCODING);
+        } catch (UnsupportedEncodingException e) {
+            throw new IllegalArgumentException("an encoding exception occurred");
+        }
+        System.arraycopy(companyName, 0, data, 62, companyName.length);
+        
+        super.setData(data);
     }
 }

Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/Triplet.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/Triplet.java?rev=648675&r1=648674&r2=648675&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/Triplet.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/triplets/Triplet.java Wed Apr 16 05:03:15 2008
@@ -31,6 +31,8 @@
  */
 public class Triplet extends AbstractAFPObject {
     public static final byte CODED_GRAPHIC_CHARACTER_SET_GLOBAL_IDENTIFIER = 0x01;
+    
+    /** Triplet identifiers */
     public static final byte FULLY_QUALIFIED_NAME = 0x02;    
     public static final byte MAPPING_OPTION = 0x04;  
     public static final byte OBJECT_CLASSIFICATION = 0x10;    
@@ -89,21 +91,21 @@
     /**
      * the triplet identifier
      */
-    protected byte id;
+    private byte id;
 
     /**
      * the triplet's data contents
      */
-    protected byte[] data;
+    private byte[] data;
 
     /**
      * Main constructor
      * @param id the triplet identifier (see static definitions above)
-     * @param contents the data item contained in this triplet
+     * @param data the data item contained in this triplet
      */
-    public Triplet(byte id, byte[] contents) {
+    public Triplet(byte id, byte[] data) {
         this(id);
-        this.data = contents;
+        setData(data);
     }
 
     /**
@@ -150,9 +152,10 @@
     }
 
     /**
-     * @return the contents of the triplet
+     * Sets the data contents of this triplet
+     * @param data the data contents
      */
-    public byte[] getData() {
-        return this.data;
+    protected void setData(byte[] data) {
+        this.data = data;
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org