Class AFPResourceManager

java.lang.Object
org.apache.fop.afp.AFPResourceManager

public class AFPResourceManager extends Object
Manages the creation and storage of document resources
  • Field Details

    • log

      private static org.apache.commons.logging.Log log
      logging instance
    • dataStream

      private DataStream dataStream
      The AFP datastream (document tree)
    • factory

      private final Factory factory
      Resource creation factory
    • streamer

      private final AFPStreamer streamer
    • dataObjectFactory

      private final AFPDataObjectFactory dataObjectFactory
    • instreamObjectCount

      private int instreamObjectCount
      Maintain a reference count of instream objects for referencing purposes
    • includeObjectCache

      Mapping of resourceInfo to AbstractCachedObject
    • resourceLevelDefaults

      private AFPResourceLevelDefaults resourceLevelDefaults
    • includeCached

      protected boolean includeCached
  • Constructor Details

  • Method Details

    • createDataStream

      public DataStream createDataStream(AFPPaintingState paintingState, OutputStream outputStream) throws IOException
      Sets the outputstream
      Parameters:
      paintingState - the AFP painting state
      outputStream - the outputstream
      Returns:
      a new AFP DataStream
      Throws:
      IOException - thrown if an I/O exception of some sort has occurred
    • getDataStream

      public DataStream getDataStream()
      Returns the AFP DataStream
      Returns:
      the AFP DataStream
    • writeToStream

      public void writeToStream() throws IOException
      Tells the streamer to write
      Throws:
      IOException - thrown if an I/O exception of some sort has occurred.
    • setDefaultResourceGroupUri

      public void setDefaultResourceGroupUri(URI uri)
      Sets the default resource group URI.
      Parameters:
      uri - the default resource group URI
    • tryIncludeObject

      public boolean tryIncludeObject(AFPDataObjectInfo dataObjectInfo) throws IOException
      Tries to create an include of a data object that has been previously added to the AFP data stream. If no such object was available, the method returns false which serves as a signal that the object has to be created.
      Parameters:
      dataObjectInfo - the data object info
      Returns:
      true if the inclusion succeeded, false if the object was not available
      Throws:
      IOException - thrown if an I/O exception of some sort has occurred.
    • createObject

      public void createObject(AFPDataObjectInfo dataObjectInfo) throws IOException
      Creates a new data object in the AFP datastream
      Parameters:
      dataObjectInfo - the data object info
      Throws:
      IOException - thrown if an I/O exception of some sort has occurred.
    • includeObject

      private void includeObject(AbstractNamedAFPObject namedObj, AFPDataObjectInfo dataObjectInfo)
    • addToCache

      private void addToCache(AFPResourceInfo resourceInfo, AFPResourceManager.AbstractCachedObject cachedObject)
    • isObjectCached

      public boolean isObjectCached(AFPResourceInfo resourceInfo)
      Returns true if the passed AFPResourceInfo instance is already cached.
      Parameters:
      resourceInfo - the resource info to check
      Returns:
      true if the object is cached
    • includeCachedObject

      public boolean includeCachedObject(AFPResourceInfo resourceInfo, AFPObjectAreaInfo areaInfo)
      Parameters:
      resourceInfo - the resource info to check
      areaInfo - the area info to check
      Returns:
      true if ...
    • updateResourceInfoUri

      private void updateResourceInfoUri(AFPResourceInfo resourceInfo)
    • includeObject

      private void includeObject(AFPDataObjectInfo dataObjectInfo, String objectName)
    • embedFont

      public void embedFont(AFPFont afpFont, CharacterSet charSet) throws IOException
      Handles font embedding. If a font is embeddable and has not already been embedded it will be.
      Parameters:
      afpFont - the AFP font to be checked for embedding
      charSet - the associated character set
      Throws:
      IOException - if there's a problem while embedding the external resources
    • includePageSegment

      private void includePageSegment(AFPDataObjectInfo dataObjectInfo, String pageSegmentName)
    • createIncludedResource

      public void createIncludedResource(String resourceName, AFPResourceAccessor accessor, byte resourceObjectType) throws IOException
      Creates an included resource object by loading the contained object from a file.
      Parameters:
      resourceName - the name of the resource
      accessor - resource accessor to access the resource with
      resourceObjectType - the resource object type (ResourceObject.*)
      Throws:
      IOException - if an I/O error occurs while loading the resource
    • createIncludedResource

      public void createIncludedResource(String resourceName, URI uri, AFPResourceAccessor accessor, byte resourceObjectType, boolean truetype, String ttc) throws IOException
      Creates an included resource object by loading the contained object from a file.
      Parameters:
      resourceName - the name of the resource
      uri - the URI for the resource
      accessor - resource accessor to access the resource with
      resourceObjectType - the resource object type (ResourceObject.*)
      Throws:
      IOException - if an I/O error occurs while loading the resource
    • extractTTC

      private byte[] extractTTC(String ttc, InputStream is) throws IOException
      Throws:
      IOException
    • createIncludedResourceFromExternal

      public void createIncludedResourceFromExternal(String resourceName, URI uri, AFPResourceAccessor accessor) throws IOException
      Creates an included resource extracting the named resource from an external source.
      Parameters:
      resourceName - the name of the resource
      uri - the URI for the resource
      accessor - resource accessor to access the resource with
      Throws:
      IOException - if an I/O error occurs while loading the resource
    • setResourceLevelDefaults

      public void setResourceLevelDefaults(AFPResourceLevelDefaults defaults)
      Sets resource level defaults. The existing defaults over merged with the ones passed in as parameter.
      Parameters:
      defaults - the new defaults
    • getResourceLevelDefaults

      public AFPResourceLevelDefaults getResourceLevelDefaults()
      Returns the resource level defaults in use with this resource manager.
      Returns:
      the resource level defaults