Author: gbailleul
Date: Sat Nov 12 12:06:57 2011
New Revision: 1201252

URL: http://svn.apache.org/viewvc?rev=1201252&view=rev
Log:
PDFBOX-1168: adding job ticket schema and making some modification on builder 
to improve it.
Builder can parse arrays of structured properties
PDFBOX-1165: applied the patch 

Added:
    
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/JobParser.java 
  (with props)
    
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/StructuredPropertyParser.java
   (with props)
    
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPBasicJobTicketSchema.java
   (with props)
    pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/JobType.java 
  (with props)
Modified:
    pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/XMPMetadata.java
    
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/NSMapping.java
    
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/XMPDocumentBuilder.java

Modified: 
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/XMPMetadata.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/XMPMetadata.java?rev=1201252&r1=1201251&r2=1201252&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/XMPMetadata.java 
(original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/XMPMetadata.java 
Sat Nov 12 12:06:57 2011
@@ -33,6 +33,7 @@ import org.apache.padaf.xmpbox.schema.Du
 import org.apache.padaf.xmpbox.schema.PDFAExtensionSchema;
 import org.apache.padaf.xmpbox.schema.PDFAIdentificationSchema;
 import org.apache.padaf.xmpbox.schema.PhotoshopSchema;
+import org.apache.padaf.xmpbox.schema.XMPBasicJobTicketSchema;
 import org.apache.padaf.xmpbox.schema.XMPBasicSchema;
 import org.apache.padaf.xmpbox.schema.XMPMediaManagementSchema;
 import org.apache.padaf.xmpbox.schema.XMPRightsManagementSchema;
@@ -54,528 +55,500 @@ import org.w3c.dom.Element;
  */
 public class XMPMetadata {
 
-       protected String xpacketId = "W5M0MpCehiHzreSzNTczkc9d";
-       protected String xpacketBegin = "\uFEFF";
+    protected String xpacketId = "W5M0MpCehiHzreSzNTczkc9d";
+    protected String xpacketBegin = "\uFEFF";
 
-       // DEPRECATED (SHOULD STAY NULL (Default value))
-       protected String xpacketBytes;
-       protected String xpacketEncoding;
-
-       protected String xpacketEndData = "end=\"w\"";
-
-       protected SchemasContainer schemas;
-
-       private Document xmpDocument;
-
-       /**
-        * Contructor of an empty default XMPMetaData
-        * 
-        * @throws CreateXMPMetadataException
-        *             If DOM Document associated could not be created
-        */
-       public XMPMetadata() throws CreateXMPMetadataException {
-               try {
-                       xmpDocument = 
org.apache.padaf.xmpbox.parser.XMLUtil.newDocument();
-                       schemas = new SchemasContainer();
-               } catch (IOException e) {
-                       throw new CreateXMPMetadataException(
-                                       "Failed to create Dom Document");
-               }
-
-       }
-
-       /**
-        * creates blank XMP doc with specified parameters
-        * 
-        * @throws CreateXMPMetadataException
-        * @param xpacketBegin
-        *            Value of xpacketBegin
-        * @param xpacketId
-        *            Value of xpacketId
-        * @param xpacketBytes
-        *            Value of xpacketBytes
-        * @param xpacketEncoding
-        *            Value of xpacket encoding
-        * @throws CreateXMPMetadataException
-        *             If DOM Document associated could not be created
-        */
-       public XMPMetadata(String xpacketBegin, String xpacketId,
-                       String xpacketBytes, String xpacketEncoding)
-                       throws CreateXMPMetadataException {
-               this.xpacketBegin = xpacketBegin;
-               this.xpacketId = xpacketId;
-               this.xpacketBytes = xpacketBytes;
-               this.xpacketEncoding = xpacketEncoding;
-               try {
-                       xmpDocument = 
org.apache.padaf.xmpbox.parser.XMLUtil.newDocument();
-                       schemas = new SchemasContainer();
-               } catch (IOException e) {
-                       throw new CreateXMPMetadataException(
-                                       "Failed to create Dom Document");
-               }
-       }
-
-       /**
-        * Get xpacketBytes
-        * 
-        * @return value of xpacketBytes field
-        */
-       public String getXpacketBytes() {
-               return xpacketBytes;
-       }
-
-       /**
-        * Get xpacket encoding
-        * 
-        * @return value of xpacket Encoding field
-        */
-       public String getXpacketEncoding() {
-               return xpacketEncoding;
-       }
-
-       /**
-        * Get xpacket Begin
-        * 
-        * @return value of xpacket Begin field
-        */
-       public String getXpacketBegin() {
-               return xpacketBegin;
-       }
-
-       /**
-        * Get xpacket Id
-        * 
-        * @return value of xpacket Id field
-        */
-       public String getXpacketId() {
-               return xpacketId;
-       }
-
-       /**
-        * Add schema given to this metadata representation
-        * 
-        * @param schema
-        *            The Schema to add
-        */
-       public void addSchema(XMPSchema schema) {
-               schemas.addSchema(schema);
-       }
-
-       /**
-        * Get All Schemas declared in this metadata representation
-        * 
-        * @return List of declared schemas
-        */
-       public List<XMPSchema> getAllSchemas() {
-               ArrayList<XMPSchema> schem = new ArrayList<XMPSchema>();
-               Iterator<XMPSchema> it = schemas.getAllSchemas();
-               while (it.hasNext()) {
-                       schem.add((XMPSchema) it.next());
-               }
-               return schem;
-       }
-
-       /**
-        * Set special XPACKET END PI
-        * 
-        * @param data
-        *            The XPacket End value
-        */
-       public void setEndXPacket(String data) {
-               xpacketEndData = data;
-       }
-
-       /**
-        * get XPACKET END PI
-        * 
-        * @return XPACKET END Value
-        */
-       public String getEndXPacket() {
-               return xpacketEndData;
-       }
-
-       /**
-        * Get element associated to all schemas contained in this Metadata
-        * 
-        * @return Dom Element representing serialized metadata
-        */
-       public Element getContainerElement() {
-               return schemas.getElement();
-       }
-
-       /**
-        * Give the DOM Document to build metadata content
-        * 
-        * @return The XML Document which is serialized metadata
-        */
-       public Document getFuturOwner() {
-               return xmpDocument;
-       }
-
-       /**
-        * Return the schema corresponding to this nsURI BE CAREFUL: typically,
-        * Metadata should contains one schema for each type this method return 
the
-        * first schema encountered corresponding to this NSURI Return null if
-        * unknown
-        * 
-        * @param nsURI
-        *            The namespace URI corresponding to the schema wanted
-        * @return The Class Schema representation
-        */
-       public XMPSchema getSchema(String nsURI) {
-               Iterator<XMPSchema> it = getAllSchemas().iterator();
-               XMPSchema tmp;
-               while (it.hasNext()) {
-                       tmp = it.next();
-                       if (tmp.getNamespaceValue().equals(nsURI)) {
-                               return tmp;
-                       }
-               }
-               return null;
-       }
-
-       /**
-        * Return the schema corresponding to this nsURI and a prefix This 
method is
-        * here to treat metadata which embed more than one time the same 
schema It
-        * permit to retrieve a specific schema with its prefix
-        * 
-        * @param prefix
-        *            The prefix fixed in the schema wanted
-        * @param nsURI
-        *            The namespace URI corresponding to the schema wanted
-        * @return The Class Schema representation
-        */
-       public XMPSchema getSchema(String prefix, String nsURI) {
-               Iterator<XMPSchema> it = getAllSchemas().iterator();
-               XMPSchema tmp;
-               while (it.hasNext()) {
-                       tmp = it.next();
-                       if (tmp.getNamespaceValue().equals(nsURI)
-                                       && tmp.getPrefix().equals(prefix)) {
-                               return tmp;
-                       }
-               }
-               return null;
-       }
-
-       /**
-        * Set a unspecialized schema
-        * 
-        * @param nsPrefix
-        *            The prefix wanted for the schema
-        * @param nsURI
-        *            The namespace URI wanted for the schema
-        * @return The schema added in order to work on it
-        */
-       public XMPSchema createAndAddDefaultSchema(String nsPrefix, String 
nsURI) {
-               XMPSchema schem = new XMPSchema(this, nsPrefix, nsURI);
-               schem.setAboutAsSimple("");
-               addSchema(schem);
-               return schem;
-       }
-
-       /**
-        * Create and add a default PDFA Extension schema to this metadata This
-        * method return the created schema to enter information This 
PDFAExtension
-        * is created with all default namespaces used in PDFAExtensionSchema
-        * 
-        * @return PDFAExtension schema added in order to work on it
-        */
-       public PDFAExtensionSchema 
createAndAddPDFAExtensionSchemaWithDefaultNS() {
-               PDFAExtensionSchema pdfAExt = new PDFAExtensionSchema(this);
-               pdfAExt.setAboutAsSimple("");
-               addSchema(pdfAExt);
-               return pdfAExt;
-       }
-
-       /**
-        * Create and add a default XMPRights schema to this metadata This 
method
-        * return the created schema to enter information
-        * 
-        * @return schema added in order to work on it
-        */
-       public XMPRightsManagementSchema 
createAndAddXMPRightsManagementSchema() {
-               XMPRightsManagementSchema rights = new 
XMPRightsManagementSchema(this);
-               rights.setAboutAsSimple("");
-               addSchema(rights);
-               return rights;
-       }
-
-       /**
-        * Create and add a default PDFA Extension schema to this metadata This
-        * method return the created schema to enter information This 
PDFAExtension
-        * is created with specified list of namespaces
-        * 
-        * @param namespaces
-        *            Special namespaces list to use
-        * @return schema added in order to work on it
-        * @throws XmpSchemaException
-        *             If namespaces list not contains PDF/A Extension 
namespace URI
-        */
-       public PDFAExtensionSchema createAndAddPDFAExtensionSchemaWithNS(
-                       HashMap<String, String> namespaces) throws 
XmpSchemaException {
-               PDFAExtensionSchema pdfAExt = new PDFAExtensionSchema(this, 
namespaces);
-               pdfAExt.setAboutAsSimple("");
-               addSchema(pdfAExt);
-               return pdfAExt;
-       }
-
-       /**
-        * Get the PDFA Extension schema This method return null if not found
-        * 
-        * @return The PDFAExtension schema or null if not declared
-        */
-       public PDFAExtensionSchema getPDFExtensionSchema() {
-               return (PDFAExtensionSchema) 
getSchema(PDFAExtensionSchema.PDFAEXTENSIONURI);
-       }
-
-       /**
-        * Create and add a default PDFA Identification schema to this metadata 
This
-        * method return the created schema to enter information
-        * 
-        * @return schema added in order to work on it
-        */
-       public PDFAIdentificationSchema createAndAddPFAIdentificationSchema() {
-               PDFAIdentificationSchema pdfAId = new 
PDFAIdentificationSchema(this);
-               pdfAId.setAboutAsSimple("");
-               addSchema(pdfAId);
-               return pdfAId;
-       }
-
-       /**
-        * Get the PDFA Identification schema This method return null if not 
found
-        * 
-        * @return The PDFAIdentificationSchema schema or null if not declared
-        */
-       public PDFAIdentificationSchema getPDFIdentificationSchema() {
-               return (PDFAIdentificationSchema) 
getSchema(PDFAIdentificationSchema.IDURI);
-       }
-
-       /**
-        * Create and add a default Dublin Core schema to this metadata This 
method
-        * return the created schema to enter information
-        * 
-        * @return schema added in order to work on it
-        */
-       public DublinCoreSchema createAndAddDublinCoreSchema() {
-               DublinCoreSchema dc = new DublinCoreSchema(this);
-               dc.setAboutAsSimple("");
-               addSchema(dc);
-               return dc;
-       }
-
-       /**
-        * Get the Dublin Core schema This method return null if not found
-        * 
-        * @return The DublinCoreSchema schema or null if not declared
-        */
-       public DublinCoreSchema getDublinCoreSchema() {
-               return (DublinCoreSchema) getSchema(DublinCoreSchema.DCURI);
-       }
-
-       /**
-        * Get the XMPRights schema This method return null if not found
-        * 
-        * @return The XMPRightsManagementSchema schema or null if not declared
-        */
-       public XMPRightsManagementSchema getXMPRightsManagementSchema() {
-               return (XMPRightsManagementSchema) 
getSchema(XMPRightsManagementSchema.XMPRIGHTSURI);
-       }
-
-       /**
-        * Get the Photoshop schema This method return null if not found
-        * 
-        * @return The PhotoshopSchema schema or null if not declared
-        */
-       public PhotoshopSchema getPhotoshopSchema() {
-               return (PhotoshopSchema) 
getSchema(PhotoshopSchema.PHOTOSHOPURI);
-       }
-       
-       /**
-        * Create and add a XMP Basic schema to this metadata This method 
return the
-        * created schema to enter information
-        * 
-        * @return schema added in order to work on it
-        */
-       public XMPBasicSchema createAndAddXMPBasicSchema() {
-               XMPBasicSchema xmpB = new XMPBasicSchema(this);
-               xmpB.setAboutAsSimple("");
-               addSchema(xmpB);
-               return xmpB;
-       }
-
-       /**
-        * Get the XMP Basic schema This method return null if not found
-        * 
-        * @return The XMPBasicSchema schema or null if not declared
-        */
-       public XMPBasicSchema getXMPBasicSchema() {
-               return (XMPBasicSchema) getSchema(XMPBasicSchema.XMPBASICURI);
-       }
-
-       /**
-        * Create and add a XMP Media Management schema to this metadata This 
method
-        * return the created schema to enter information
-        * 
-        * @return schema added in order to work on it
-        */
-       public XMPMediaManagementSchema createAndAddXMPMediaManagementSchema() {
-               XMPMediaManagementSchema xmpMM = new 
XMPMediaManagementSchema(this);
-               xmpMM.setAboutAsSimple("");
-               addSchema(xmpMM);
-               return xmpMM;
-       }
-       
-       /***
-        * create and add Photoshop Schema to this metadata. This method return 
-        * the created schema to enter information
-        * @return
-        */
-       public PhotoshopSchema createAndAddPhotoshopSchema() {
-               PhotoshopSchema photoshop = new PhotoshopSchema(this);
-               photoshop.setAboutAsSimple("");
-               addSchema(photoshop);
-               return photoshop;
-       }
-       
-       /**
-        * Get the XMP Media Management schema This method return null if not 
found
-        * 
-        * @return The XMPMediaManagementSchema schema or null if not declared
-        */
-       public XMPMediaManagementSchema getXMPMediaManagementSchema() {
-               return (XMPMediaManagementSchema) 
getSchema(XMPMediaManagementSchema.XMPMMURI);
-       }
-
-       /**
-        * Create and add an Adobe PDF schema to this metadata This method 
return
-        * the created schema to enter information
-        * 
-        * @return schema added in order to work on it
-        */
-       public AdobePDFSchema createAndAddAdobePDFSchema() {
-               AdobePDFSchema pdf = new AdobePDFSchema(this);
-               pdf.setAboutAsSimple("");
-               addSchema(pdf);
-               return pdf;
-       }
-
-       /**
-        * Get the Adobe PDF schema This method return null if not found
-        * 
-        * @return The AdobePDFSchema schema or null if not declared
-        */
-       public AdobePDFSchema getAdobePDFSchema() {
-               return (AdobePDFSchema) getSchema(AdobePDFSchema.PDFURI);
-       }
-
-       /**
-        * Class which represent a container for schemas associated to a 
metadata
-        * representation
-        * 
-        * @author a183132
-        * 
-        */
-       public class SchemasContainer implements Elementable {
-
-               protected Element element;
-               protected List<XMPSchema> schemas;
-
-               /**
-                * 
-                * Schemas Container constructor
-                */
-               public SchemasContainer() {
-                       element = xmpDocument.createElement("rdf:RDF");
-                       element.setAttributeNS(XMPSchema.NS_NAMESPACE, 
"xmlns:rdf",
-                                       
"http://www.w3.org/1999/02/22-rdf-syntax-ns#";);
-                       schemas = new ArrayList<XMPSchema>();
-               }
-
-               /**
-                * Add a schema to the current structure
-                * 
-                * @param obj
-                *            the schema to add
-                */
-               public void addSchema(XMPSchema obj) {
-                       if (containsSchema(obj)) {
-                               removeSchema(obj);
-                       }
-                       schemas.add(obj);
-                       element.appendChild(obj.getElement());
-               }
-
-               /**
-                * Return all schemas contained in the container
-                * 
-                * @return Iterator of declared schemas in order to be used in
-                *         XMPMetadata functions
-                */
-               public Iterator<XMPSchema> getAllSchemas() {
-                       return schemas.iterator();
-               }
-
-               /**
-                * Check if two schemas are similar
-                * 
-                * @param prop1
-                *            The first schema to compare
-                * @param prop2
-                *            The second schema to compare
-                * @return The comparison result
-                */
-               public boolean isSameSchema(XMPSchema prop1, XMPSchema prop2) {
-                       if (prop1.getClass().equals(prop2.getClass())) {
-                               if 
(prop1.getPrefix().equals(prop2.getPrefix())) {
-                                       return true;
-                               }
-                       }
-
-                       return false;
-               }
-
-               /**
-                * Check if a specified schema is embedded
-                * 
-                * @param schema
-                *            The schema checked
-                * @return True if schema is present
-                */
-               public boolean containsSchema(XMPSchema schema) {
-                       Iterator<XMPSchema> it = getAllSchemas();
-                       XMPSchema tmp;
-                       while (it.hasNext()) {
-                               tmp = it.next();
-                               if (isSameSchema(tmp, schema)) {
-                                       return true;
-                               }
-                       }
-                       return false;
-               }
-
-               /**
-                * Remove a schema
-                * 
-                * @param schema
-                *            The schema to remove
-                */
-               public void removeSchema(XMPSchema schema) {
-                       if (containsSchema(schema)) {
-                               schemas.remove(schema);
-                               element.removeChild(schema.getElement());
-                       }
-               }
-
-               /**
-                * Get The Dom Element in order to build serialized metadata
-                * 
-                * @return Dom Element
-                */
-               public Element getElement() {
-                       return element;
-               }
+    // DEPRECATED (SHOULD STAY NULL (Default value))
+    protected String xpacketBytes;
+    protected String xpacketEncoding;
+
+    protected String xpacketEndData = "end=\"w\"";
+
+    protected SchemasContainer schemas;
+
+    private Document xmpDocument;
+
+    /**
+     * Contructor of an empty default XMPMetaData
+     * 
+     * @throws CreateXMPMetadataException
+     *             If DOM Document associated could not be created
+     */
+    public XMPMetadata() throws CreateXMPMetadataException {
+        try {
+            xmpDocument = org.apache.padaf.xmpbox.parser.XMLUtil.newDocument();
+            schemas = new SchemasContainer();
+        } catch (IOException e) {
+            throw new CreateXMPMetadataException(
+            "Failed to create Dom Document");
+        }
+
+    }
+
+    /**
+     * creates blank XMP doc with specified parameters
+     * 
+     * @throws CreateXMPMetadataException
+     * @param xpacketBegin
+     *            Value of xpacketBegin
+     * @param xpacketId
+     *            Value of xpacketId
+     * @param xpacketBytes
+     *            Value of xpacketBytes
+     * @param xpacketEncoding
+     *            Value of xpacket encoding
+     * @throws CreateXMPMetadataException
+     *             If DOM Document associated could not be created
+     */
+    public XMPMetadata(String xpacketBegin, String xpacketId,
+            String xpacketBytes, String xpacketEncoding)
+    throws CreateXMPMetadataException {
+        this.xpacketBegin = xpacketBegin;
+        this.xpacketId = xpacketId;
+        this.xpacketBytes = xpacketBytes;
+        this.xpacketEncoding = xpacketEncoding;
+        try {
+            xmpDocument = org.apache.padaf.xmpbox.parser.XMLUtil.newDocument();
+            schemas = new SchemasContainer();
+        } catch (IOException e) {
+            throw new CreateXMPMetadataException(
+            "Failed to create Dom Document");
+        }
+    }
+
+    /**
+     * Get xpacketBytes
+     * 
+     * @return value of xpacketBytes field
+     */
+    public String getXpacketBytes() {
+        return xpacketBytes;
+    }
+
+    /**
+     * Get xpacket encoding
+     * 
+     * @return value of xpacket Encoding field
+     */
+    public String getXpacketEncoding() {
+        return xpacketEncoding;
+    }
+
+    /**
+     * Get xpacket Begin
+     * 
+     * @return value of xpacket Begin field
+     */
+    public String getXpacketBegin() {
+        return xpacketBegin;
+    }
+
+    /**
+     * Get xpacket Id
+     * 
+     * @return value of xpacket Id field
+     */
+    public String getXpacketId() {
+        return xpacketId;
+    }
+
+    /**
+     * Add schema given to this metadata representation
+     * 
+     * @param schema
+     *            The Schema to add
+     */
+    public void addSchema(XMPSchema schema) {
+        schemas.addSchema(schema);
+    }
+
+    /**
+     * Get All Schemas declared in this metadata representation
+     * 
+     * @return List of declared schemas
+     */
+    public List<XMPSchema> getAllSchemas() {
+        ArrayList<XMPSchema> schem = new ArrayList<XMPSchema>();
+        Iterator<XMPSchema> it = schemas.schemas.iterator();
+        while (it.hasNext()) {
+            schem.add((XMPSchema) it.next());
+        }
+        return schem;
+    }
+
+    /**
+     * Set special XPACKET END PI
+     * 
+     * @param data
+     *            The XPacket End value
+     */
+    public void setEndXPacket(String data) {
+        xpacketEndData = data;
+    }
+
+    /**
+     * get XPACKET END PI
+     * 
+     * @return XPACKET END Value
+     */
+    public String getEndXPacket() {
+        return xpacketEndData;
+    }
+
+    /**
+     * Get element associated to all schemas contained in this Metadata
+     * 
+     * @return Dom Element representing serialized metadata
+     */
+    public Element getContainerElement() {
+        return schemas.getElement();
+    }
+
+    /**
+     * Give the DOM Document to build metadata content
+     * 
+     * @return The XML Document which is serialized metadata
+     */
+    public Document getFuturOwner() {
+        return xmpDocument;
+    }
+
+    /**
+     * Return the schema corresponding to this nsURI BE CAREFUL: typically,
+     * Metadata should contains one schema for each type this method return the
+     * first schema encountered corresponding to this NSURI Return null if
+     * unknown
+     * 
+     * @param nsURI
+     *            The namespace URI corresponding to the schema wanted
+     * @return The Class Schema representation
+     */
+    public XMPSchema getSchema(String nsURI) {
+        Iterator<XMPSchema> it = schemas.schemas.iterator();
+        XMPSchema tmp;
+        while (it.hasNext()) {
+            tmp = it.next();
+            if (tmp.getNamespaceValue().equals(nsURI)) {
+                return tmp;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Return the schema corresponding to this nsURI and a prefix This method 
is
+     * here to treat metadata which embed more than one time the same schema It
+     * permit to retrieve a specific schema with its prefix
+     * 
+     * @param prefix
+     *            The prefix fixed in the schema wanted
+     * @param nsURI
+     *            The namespace URI corresponding to the schema wanted
+     * @return The Class Schema representation
+     */
+    public XMPSchema getSchema(String prefix, String nsURI) {
+        Iterator<XMPSchema> it = getAllSchemas().iterator();
+        XMPSchema tmp;
+        while (it.hasNext()) {
+            tmp = it.next();
+            if (tmp.getNamespaceValue().equals(nsURI)
+                    && tmp.getPrefix().equals(prefix)) {
+                return tmp;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Set a unspecialized schema
+     * 
+     * @param nsPrefix
+     *            The prefix wanted for the schema
+     * @param nsURI
+     *            The namespace URI wanted for the schema
+     * @return The schema added in order to work on it
+     */
+    public XMPSchema createAndAddDefaultSchema(String nsPrefix, String nsURI) {
+        XMPSchema schem = new XMPSchema(this, nsPrefix, nsURI);
+        schem.setAboutAsSimple("");
+        addSchema(schem);
+        return schem;
+    }
+
+    /**
+     * Create and add a default PDFA Extension schema to this metadata This
+     * method return the created schema to enter information This PDFAExtension
+     * is created with all default namespaces used in PDFAExtensionSchema
+     * 
+     * @return PDFAExtension schema added in order to work on it
+     */
+    public PDFAExtensionSchema createAndAddPDFAExtensionSchemaWithDefaultNS() {
+        PDFAExtensionSchema pdfAExt = new PDFAExtensionSchema(this);
+        pdfAExt.setAboutAsSimple("");
+        addSchema(pdfAExt);
+        return pdfAExt;
+    }
+
+    /**
+     * Create and add a default XMPRights schema to this metadata This method
+     * return the created schema to enter information
+     * 
+     * @return schema added in order to work on it
+     */
+    public XMPRightsManagementSchema createAndAddXMPRightsManagementSchema() {
+        XMPRightsManagementSchema rights = new XMPRightsManagementSchema(this);
+        rights.setAboutAsSimple("");
+        addSchema(rights);
+        return rights;
+    }
+
+    /**
+     * Create and add a default PDFA Extension schema to this metadata This
+     * method return the created schema to enter information This PDFAExtension
+     * is created with specified list of namespaces
+     * 
+     * @param namespaces
+     *            Special namespaces list to use
+     * @return schema added in order to work on it
+     * @throws XmpSchemaException
+     *             If namespaces list not contains PDF/A Extension namespace 
URI
+     */
+    public PDFAExtensionSchema createAndAddPDFAExtensionSchemaWithNS(
+            HashMap<String, String> namespaces) throws XmpSchemaException {
+        PDFAExtensionSchema pdfAExt = new PDFAExtensionSchema(this, 
namespaces);
+        pdfAExt.setAboutAsSimple("");
+        addSchema(pdfAExt);
+        return pdfAExt;
+    }
+
+    /**
+     * Get the PDFA Extension schema This method return null if not found
+     * 
+     * @return The PDFAExtension schema or null if not declared
+     */
+    public PDFAExtensionSchema getPDFExtensionSchema() {
+        return (PDFAExtensionSchema) 
getSchema(PDFAExtensionSchema.PDFAEXTENSIONURI);
+    }
+
+    /**
+     * Create and add a default PDFA Identification schema to this metadata 
This
+     * method return the created schema to enter information
+     * 
+     * @return schema added in order to work on it
+     */
+    public PDFAIdentificationSchema createAndAddPFAIdentificationSchema() {
+        PDFAIdentificationSchema pdfAId = new PDFAIdentificationSchema(this);
+        pdfAId.setAboutAsSimple("");
+        addSchema(pdfAId);
+        return pdfAId;
+    }
+
+    /**
+     * Get the PDFA Identification schema This method return null if not found
+     * 
+     * @return The PDFAIdentificationSchema schema or null if not declared
+     */
+    public PDFAIdentificationSchema getPDFIdentificationSchema() {
+        return (PDFAIdentificationSchema) 
getSchema(PDFAIdentificationSchema.IDURI);
+    }
+
+    /**
+     * Create and add a default Dublin Core schema to this metadata This method
+     * return the created schema to enter information
+     * 
+     * @return schema added in order to work on it
+     */
+    public DublinCoreSchema createAndAddDublinCoreSchema() {
+        DublinCoreSchema dc = new DublinCoreSchema(this);
+        dc.setAboutAsSimple("");
+        addSchema(dc);
+        return dc;
+    }
+    
+    /**
+     * Create and add a default Basic Job Ticket schema to this metadata This 
method
+     * return the created schema to enter information
+     * 
+     * @return schema added in order to work on it
+     */
+    public XMPBasicJobTicketSchema createAndAddBasicJobTicketSchema () {
+        XMPBasicJobTicketSchema sc = new XMPBasicJobTicketSchema(this);
+        sc.setAboutAsSimple("");
+        addSchema(sc);
+        return sc;
+    }
+    
+
+    /**
+     * Get the Dublin Core schema This method return null if not found
+     * 
+     * @return The DublinCoreSchema schema or null if not declared
+     */
+    public DublinCoreSchema getDublinCoreSchema() {
+        return (DublinCoreSchema) getSchema(DublinCoreSchema.DCURI);
+    }
+
+    /**
+     * Get the Basic JOb Ticket Schema schema This method return null if not 
found
+     * 
+     * @return The XMPBasicJobTicketSchema schema or null if not declared
+     */
+    public XMPBasicJobTicketSchema getBasicJobTicketSchema() {
+        return (XMPBasicJobTicketSchema) 
getSchema(XMPBasicJobTicketSchema.JOB_TICKET_URI);
+    }
+
+    
+    /**
+     * Get the XMPRights schema This method return null if not found
+     * 
+     * @return The XMPRightsManagementSchema schema or null if not declared
+     */
+    public XMPRightsManagementSchema getXMPRightsManagementSchema() {
+        return (XMPRightsManagementSchema) 
getSchema(XMPRightsManagementSchema.XMPRIGHTSURI);
+    }
+
+    /**
+     * Get the Photoshop schema This method return null if not found
+     * 
+     * @return The PhotoshopSchema schema or null if not declared
+     */
+    public PhotoshopSchema getPhotoshopSchema() {
+        return (PhotoshopSchema) getSchema(PhotoshopSchema.PHOTOSHOPURI);
+    }
+
+    /**
+     * Create and add a XMP Basic schema to this metadata This method return 
the
+     * created schema to enter information
+     * 
+     * @return schema added in order to work on it
+     */
+    public XMPBasicSchema createAndAddXMPBasicSchema() {
+        XMPBasicSchema xmpB = new XMPBasicSchema(this);
+        xmpB.setAboutAsSimple("");
+        addSchema(xmpB);
+        return xmpB;
+    }
+
+    /**
+     * Get the XMP Basic schema This method return null if not found
+     * 
+     * @return The XMPBasicSchema schema or null if not declared
+     */
+    public XMPBasicSchema getXMPBasicSchema() {
+        return (XMPBasicSchema) getSchema(XMPBasicSchema.XMPBASICURI);
+    }
+
+    /**
+     * Create and add a XMP Media Management schema to this metadata This 
method
+     * return the created schema to enter information
+     * 
+     * @return schema added in order to work on it
+     */
+    public XMPMediaManagementSchema createAndAddXMPMediaManagementSchema() {
+        XMPMediaManagementSchema xmpMM = new XMPMediaManagementSchema(this);
+        xmpMM.setAboutAsSimple("");
+        addSchema(xmpMM);
+        return xmpMM;
+    }
+
+    /***
+     * create and add Photoshop Schema to this metadata. This method return 
+     * the created schema to enter information
+     * @return
+     */
+    public PhotoshopSchema createAndAddPhotoshopSchema() {
+        PhotoshopSchema photoshop = new PhotoshopSchema(this);
+        photoshop.setAboutAsSimple("");
+        addSchema(photoshop);
+        return photoshop;
+    }
+
+    /**
+     * Get the XMP Media Management schema This method return null if not found
+     * 
+     * @return The XMPMediaManagementSchema schema or null if not declared
+     */
+    public XMPMediaManagementSchema getXMPMediaManagementSchema() {
+        return (XMPMediaManagementSchema) 
getSchema(XMPMediaManagementSchema.XMPMMURI);
+    }
+
+    /**
+     * Create and add an Adobe PDF schema to this metadata This method return
+     * the created schema to enter information
+     * 
+     * @return schema added in order to work on it
+     */
+    public AdobePDFSchema createAndAddAdobePDFSchema() {
+        AdobePDFSchema pdf = new AdobePDFSchema(this);
+        pdf.setAboutAsSimple("");
+        addSchema(pdf);
+        return pdf;
+    }
+
+    /**
+     * Get the Adobe PDF schema This method return null if not found
+     * 
+     * @return The AdobePDFSchema schema or null if not declared
+     */
+    public AdobePDFSchema getAdobePDFSchema() {
+        return (AdobePDFSchema) getSchema(AdobePDFSchema.PDFURI);
+    }
+
+    /**
+     * Class which represent a container for schemas associated to a metadata
+     * representation
+     * 
+     * @author a183132
+     * 
+     */
+    public class SchemasContainer implements Elementable {
+
+        protected Element element;
+        protected List<XMPSchema> schemas;
+
+        /**
+         * 
+         * Schemas Container constructor
+         */
+        public SchemasContainer() {
+            element = xmpDocument.createElement("rdf:RDF");
+            element.setAttributeNS(XMPSchema.NS_NAMESPACE, "xmlns:rdf",
+            "http://www.w3.org/1999/02/22-rdf-syntax-ns#";);
+            schemas = new ArrayList<XMPSchema>();
+        }
+
+        /**
+         * Add a schema to the current structure
+         * 
+         * @param obj
+         *            the schema to add
+         */
+        public void addSchema(XMPSchema obj) {
+            schemas.add(obj);
+            element.appendChild(obj.getElement());
+        }
+
+        /**
+         * Remove a schema
+         * 
+         * @param schema
+         *            The schema to remove
+         */
+        public void removeSchema(XMPSchema schema) {
+            if (schemas.remove(schema)) {
+                element.removeChild(schema.getElement());
+            }
+        }
+
+        /**
+         * Get The Dom Element in order to build serialized metadata
+         * 
+         * @return Dom Element
+         */
+        public Element getElement() {
+            return element;
+        }
 
-       }
+    }
 
 }

Added: 
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/JobParser.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/JobParser.java?rev=1201252&view=auto
==============================================================================
--- 
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/JobParser.java 
(added)
+++ 
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/JobParser.java 
Sat Nov 12 12:06:57 2011
@@ -0,0 +1,70 @@
+/*****************************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ ****************************************************************************/
+
+package org.apache.padaf.xmpbox.parser;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.padaf.xmpbox.XMPMetadata;
+import org.apache.padaf.xmpbox.type.ComplexPropertyContainer;
+import org.apache.padaf.xmpbox.type.JobType;
+
+public class JobParser extends StructuredPropertyParser {
+
+    
+    public JobParser (XMPDocumentBuilder builder) {
+        super(builder);
+    }
+    
+    public void parse(XMPMetadata metadata, QName altName,
+            ComplexPropertyContainer container)
+    throws XmpUnexpectedTypeException, XmpParsingException,
+    XMLStreamException, XmpUnknownPropertyTypeException,
+    XmpPropertyFormatException {
+        builder.expectCurrentLocalName("li");
+        JobType job = new JobType(metadata, altName.getPrefix(), 
altName.getLocalPart());
+        int elmtType = builder.reader.get().nextTag();
+        QName eltName;
+        String eltContent;
+        while (!((elmtType == XMLStreamReader.END_ELEMENT) && 
builder.reader.get()
+                .getName().getLocalPart().equals("li"))) {
+            eltName = builder.reader.get().getName();
+            eltContent = builder.reader.get().getElementText();
+            if (eltName.getLocalPart().equals(JobType.ID)) {
+                job.setId(eltName.getPrefix(), eltContent);
+            } else if (eltName.getLocalPart().equals(JobType.NAME)) {
+                job.setName(eltName.getPrefix(),eltContent);
+            } else if (eltName.getLocalPart().equals(JobType.URL)) {
+                job.setUrl(eltName.getPrefix(), eltContent);
+            } else {
+                throw new XmpParsingException(
+                        "Unknown property name for a job element : "
+                        + eltName.getLocalPart());
+            }
+            elmtType = builder.reader.get().nextTag();
+        }
+        container.addProperty(job);
+    }
+
+    
+}

Propchange: 
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/JobParser.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/NSMapping.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/NSMapping.java?rev=1201252&r1=1201251&r2=1201252&view=diff
==============================================================================
--- 
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/NSMapping.java 
(original)
+++ 
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/NSMapping.java 
Sat Nov 12 12:06:57 2011
@@ -42,6 +42,7 @@ import org.apache.padaf.xmpbox.schema.Ph
 import org.apache.padaf.xmpbox.schema.PropertyAttributesAnnotation;
 import org.apache.padaf.xmpbox.schema.PropertyType;
 import org.apache.padaf.xmpbox.schema.SchemaDescription;
+import org.apache.padaf.xmpbox.schema.XMPBasicJobTicketSchema;
 import org.apache.padaf.xmpbox.schema.XMPBasicSchema;
 import org.apache.padaf.xmpbox.schema.XMPMediaManagementSchema;
 import org.apache.padaf.xmpbox.schema.XMPRightsManagementSchema;
@@ -70,7 +71,6 @@ public class NSMapping {
                BASIC_TYPES.add("URL");
                BASIC_TYPES.add("bag Text");
                BASIC_TYPES.add("bag ProperName");
-               BASIC_TYPES.add("bag Job");
                BASIC_TYPES.add("bag Xpath");
                BASIC_TYPES.add("seq Text");
                BASIC_TYPES.add("seq Field");
@@ -82,6 +82,7 @@ public class NSMapping {
                                "Thumbnail");
                COMPLEX_BASIC_TYPES.put(PhotoshopSchema.PHOTOSHOPURI,
                                "TextLayers");
+               COMPLEX_BASIC_TYPES.put(XMPBasicJobTicketSchema.JOB_TICKET_URI, 
"Job");
        }
 
        protected Map<String, XMPSchemaFactory> nsMaps;
@@ -165,6 +166,7 @@ public class NSMapping {
                addNameSpace("http://www.aiim.org/pdfa/ns/id/";, 
PDFAIdentificationSchema.class);
                addNameSpace("http://ns.adobe.com/xap/1.0/rights/";,     
XMPRightsManagementSchema.class);
                addNameSpace(PhotoshopSchema.PHOTOSHOPURI,      
PhotoshopSchema.class);
+               
addNameSpace(XMPBasicJobTicketSchema.JOB_TICKET_URI,XMPBasicJobTicketSchema.class);
        }
 
        /**

Added: 
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/StructuredPropertyParser.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/StructuredPropertyParser.java?rev=1201252&view=auto
==============================================================================
--- 
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/StructuredPropertyParser.java
 (added)
+++ 
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/StructuredPropertyParser.java
 Sat Nov 12 12:06:57 2011
@@ -0,0 +1,45 @@
+/*****************************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ ****************************************************************************/
+
+package org.apache.padaf.xmpbox.parser;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+
+import org.apache.padaf.xmpbox.XMPMetadata;
+import org.apache.padaf.xmpbox.type.ComplexPropertyContainer;
+
+public abstract class StructuredPropertyParser {
+
+
+    protected XMPDocumentBuilder builder = null;
+
+    public StructuredPropertyParser (XMPDocumentBuilder builder) {
+        this.builder = builder;
+    };
+
+    public abstract void parse(XMPMetadata metadata, QName altName,
+            ComplexPropertyContainer container)
+    throws XmpUnexpectedTypeException, XmpParsingException,
+    XMLStreamException, XmpUnknownPropertyTypeException,
+    XmpPropertyFormatException;
+
+}

Propchange: 
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/StructuredPropertyParser.java
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to