Package org.apache.fop.afp.util
Class AFPResourceUtil
java.lang.Object
org.apache.fop.afp.util.AFPResourceUtil
TODO better docs
Utility for AFP resource handling
A utility class to read structured fields from a MO:DCA document. Each
component of a mixed object document is explicitly defined and delimited
in the data. This is accomplished through the use of MO:DCA data structures,
called structured fields. Structured fields are used to envelop document
components and to provide commands and information to applications using
the data. Structured fields may contain one or more parameters. Each
parameter provides one value from a set of values defined by the architecture.
MO:DCA structured fields consist of two parts: an introducer that identifies the length and type of the structured field, and data that provides the structured field's effect. The data is contained in a set of parameters, which can consist of other data structures and data elements. The maximum length of a structured field is 32767 bytes.
MO:DCA structured fields consist of two parts: an introducer that identifies the length and type of the structured field, and data that provides the structured field's effect. The data is contained in a set of parameters, which can consist of other data structures and data elements. The maximum length of a structured field is 32767 bytes.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final byte
private static final org.apache.commons.logging.Log
private static final byte
private static final byte
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic void
copyNamedResource
(String name, InputStream in, OutputStream out) Copy a named resource to a givenOutputStream
.private static void
copyNamedStructuredFields
(String name, UnparsedStructuredField fieldBegin, MODCAParser parser, OutputStream out) static void
copyResourceFile
(InputStream in, OutputStream out) Copy a complete resource file to a givenOutputStream
.private static boolean
fieldHasValidName
(UnparsedStructuredField field, String name) The AFP specification states that it is valid for the end structured field to have: - No tag name specified, which will cause it to match any existing tag type match.private static boolean
fieldMatchesBeginCategoryCode
(UnparsedStructuredField field, UnparsedStructuredField fieldBegin) private static boolean
static byte[]
getNext
(byte[] identifier, InputStream inputStream) Get the next structured field as identified by the identifier parameter (this must be a valid MO:DCA structured field).private static String
private static boolean
isEndOfStructuredField
(UnparsedStructuredField field, UnparsedStructuredField fieldBegin, String name)
-
Field Details
-
TYPE_CODE_BEGIN
private static final byte TYPE_CODE_BEGIN- See Also:
-
TYPE_CODE_END
private static final byte TYPE_CODE_END- See Also:
-
END_FIELD_ANY_NAME
private static final byte END_FIELD_ANY_NAME- See Also:
-
LOG
private static final org.apache.commons.logging.Log LOG
-
-
Constructor Details
-
AFPResourceUtil
private AFPResourceUtil()
-
-
Method Details
-
getNext
Get the next structured field as identified by the identifier parameter (this must be a valid MO:DCA structured field).- Parameters:
identifier
- the three byte identifierinputStream
- the inputStream- Returns:
- the next structured field or null when there are no more
- Throws:
IOException
- if an I/O exception occurred
-
getResourceName
private static String getResourceName(UnparsedStructuredField field) throws UnsupportedEncodingException - Throws:
UnsupportedEncodingException
-
copyResourceFile
Copy a complete resource file to a givenOutputStream
.- Parameters:
in
- external resource inputout
- output destination- Throws:
IOException
- if an I/O error occurs
-
copyNamedResource
public static void copyNamedResource(String name, InputStream in, OutputStream out) throws IOException Copy a named resource to a givenOutputStream
. The MO:DCA fields read from theInputStream
are scanned for the resource with the given name.- Parameters:
name
- name of structured fieldin
- external resource inputout
- output destination- Throws:
IOException
- if an I/O error occurs
-
copyNamedStructuredFields
private static void copyNamedStructuredFields(String name, UnparsedStructuredField fieldBegin, MODCAParser parser, OutputStream out) throws IOException - Throws:
IOException
-
isEndOfStructuredField
private static boolean isEndOfStructuredField(UnparsedStructuredField field, UnparsedStructuredField fieldBegin, String name) throws UnsupportedEncodingException - Throws:
UnsupportedEncodingException
-
fieldMatchesEndTagType
-
fieldMatchesBeginCategoryCode
private static boolean fieldMatchesBeginCategoryCode(UnparsedStructuredField field, UnparsedStructuredField fieldBegin) -
fieldHasValidName
private static boolean fieldHasValidName(UnparsedStructuredField field, String name) throws UnsupportedEncodingException The AFP specification states that it is valid for the end structured field to have: - No tag name specified, which will cause it to match any existing tag type match. - The name has FFFF as its first two bytes - The given name matches the previous structured field name- Throws:
UnsupportedEncodingException
-