/***************************************************************************** * * 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 java.io.ByteArrayOutputStream; import java.io.InputStream; import java.util.List; import junit.framework.Assert; import org.apache.padaf.xmpbox.XMPMetadata; import org.apache.padaf.xmpbox.parser.DateConverter; import org.apache.padaf.xmpbox.parser.XMPDocumentBuilder; import org.apache.padaf.xmpbox.schema.PDFAFieldDescription; import org.apache.padaf.xmpbox.schema.PDFAPropertyDescription; import org.apache.padaf.xmpbox.schema.PDFAValueTypeDescription; import org.apache.padaf.xmpbox.schema.SchemaDescription; import org.apache.padaf.xmpbox.schema.XMPSchema; import org.apache.padaf.xmpbox.type.ThumbnailType; import org.junit.Before; import org.junit.Test; public class DeserializationTest { protected ByteArrayOutputStream bos; @Before public void init() { bos = new ByteArrayOutputStream(); } @Test public void testIsartorStyle() throws Exception { InputStream fis = XMPDocumentBuilder.class .getResourceAsStream("isartorStyleXMPOK.xml"); XMPDocumentBuilder xdb = new XMPDocumentBuilder(); XMPMetadata metadata = xdb.parse(fis); // <xmpMM:DocumentID> Assert.assertEquals("uuid:09C78666-2F91-3A9C-92AF-3691A6D594F7", metadata.getXMPMediaManagementSchema().getDocumentIDValue()); // <xmp:CreateDate> // <xmp:ModifyDate> // <xmp:MetadataDate> Assert.assertEquals(DateConverter .toCalendar("2008-01-18T16:59:54+01:00"), metadata .getXMPBasicSchema().getCreateDateValue()); Assert.assertEquals(DateConverter .toCalendar("2008-01-18T16:59:54+01:00"), metadata .getXMPBasicSchema().getModifyDateValue()); Assert.assertEquals(DateConverter .toCalendar("2008-01-18T16:59:54+01:00"), metadata .getXMPBasicSchema().getMetadataDateValue()); // PDFA Extension // Check numbers of schema descriptions Assert.assertTrue(metadata.getPDFExtensionSchema() .getDescriptionSchema().size() == 1); SchemaDescription desc = metadata.getPDFExtensionSchema() .getDescriptionSchema().get(0); // Check description content Assert.assertEquals("ACME E-Mail Schema", desc.getSchema()); Assert.assertEquals("http://www.acme.com/ns/email/1/", desc .getNameSpaceURI()); Assert.assertEquals("acmeemail", desc.getPrefix()); // Check property definition List<PDFAPropertyDescription> properties = desc.getProperties(); Assert.assertTrue(properties.size() == 2); // Check properties content PDFAPropertyDescription tmpProp = properties.get(0); Assert.assertEquals("Delivery-Date", tmpProp.getNameValue()); Assert.assertEquals("Date", tmpProp.getValueTypeValue()); Assert.assertEquals("internal", tmpProp.getCategoryValue()); Assert.assertEquals("date of email delivery", tmpProp .getDescriptionValue()); tmpProp = properties.get(1); Assert.assertEquals("From", tmpProp.getNameValue()); Assert.assertEquals("mailaddress", tmpProp.getValueTypeValue()); Assert.assertEquals("internal", tmpProp.getCategoryValue()); Assert.assertEquals("sender email address", tmpProp .getDescriptionValue()); // Check valuetype // Check numbers of valuetype defined Assert.assertTrue(desc.getValueTypes().size() == 1); PDFAValueTypeDescription tmpValType = desc.getValueTypes().get(0); Assert.assertEquals("mailaddress", tmpValType.getTypeNameValue()); Assert.assertEquals("http://www.acme.com/ns/email/1/mailaddress/", tmpValType.getNamespaceURIValue()); Assert.assertEquals("mailaddress value", tmpValType .getDescriptionValue()); // Check fields associated to this value type Assert.assertTrue(tmpValType.getFields().size() == 2); PDFAFieldDescription tmpField = tmpValType.getFields().get(0); Assert.assertEquals("name", tmpField.getNameValue()); Assert.assertEquals("Text", tmpField.getValueTypeValue()); Assert.assertEquals("plaintext name", tmpField.getDescriptionValue()); tmpField = tmpValType.getFields().get(1); Assert.assertEquals("mailto", tmpField.getNameValue()); Assert.assertEquals("Text", tmpField.getValueTypeValue()); Assert.assertEquals("email address", tmpField.getDescriptionValue()); // Check PDFA Conformance schema Assert.assertEquals("1", metadata.getPDFIdentificationSchema() .getPart().getStringValue()); Assert.assertEquals("B", metadata.getPDFIdentificationSchema() .getConformanceValue()); Assert.assertEquals("1:2005", metadata.getPDFIdentificationSchema() .getAmd().getStringValue()); // Check ADOBE PDF Schema Assert.assertEquals("PDFlib Personalization Server 7.0.2p5 (Win32)", metadata.getAdobePDFSchema().getProducerValue()); // Check Defined Schema XMPSchema schem = metadata.getSchema("http://www.acme.com/ns/email/1/"); Assert.assertEquals(DateConverter .toCalendar("2007-11-09T09:55:36+01:00"), schem .getDatePropertyValue("acmeemail:Delivery-Date")); Assert.assertNotNull(schem.getAbstractProperty(("acmeemail:From"))); // SaveMetadataHelper.serialize(metadata, true, System.out); } @Test public void testAltBagSeq() throws Exception { InputStream fis = XMPDocumentBuilder.class .getResourceAsStream("AltBagSeqTest.xml"); XMPDocumentBuilder xdb = new XMPDocumentBuilder(); xdb.parse(fis); // XMPMetadata metadata=xdb.parse(fis); // SaveMetadataHelper.serialize(metadata, true, System.out); } @Test public void testIsartorStyleWithThumbs() throws Exception { InputStream fis = XMPDocumentBuilder.class .getResourceAsStream("ThumbisartorStyle.xml"); XMPDocumentBuilder xdb = new XMPDocumentBuilder(); XMPMetadata metadata = xdb.parse(fis); // <xmpMM:DocumentID> Assert.assertEquals("uuid:09C78666-2F91-3A9C-92AF-3691A6D594F7", metadata.getXMPMediaManagementSchema().getDocumentIDValue()); // <xmp:CreateDate> // <xmp:ModifyDate> // <xmp:MetadataDate> Assert.assertEquals(DateConverter .toCalendar("2008-01-18T16:59:54+01:00"), metadata .getXMPBasicSchema().getCreateDateValue()); Assert.assertEquals(DateConverter .toCalendar("2008-01-18T16:59:54+01:00"), metadata .getXMPBasicSchema().getModifyDateValue()); Assert.assertEquals(DateConverter .toCalendar("2008-01-18T16:59:54+01:00"), metadata .getXMPBasicSchema().getMetadataDateValue()); // THUMBNAILS TEST List<ThumbnailType> thumbs = metadata.getXMPBasicSchema() .getThumbnails(); Assert.assertNotNull(thumbs); Assert.assertEquals(1, thumbs.size()); ThumbnailType thumb = thumbs.get(0); /* * <xapGImg:height>162</xapGImg:height> * <xapGImg:width>216</xapGImg:width> * <xapGImg:format>JPEG</xapGImg:format> * <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD</xapGImg:image> */ Assert.assertEquals(new Integer(162), thumb.getHeight()); Assert.assertEquals(new Integer(216), thumb.getWidth()); Assert.assertEquals("JPEG", thumb.getFormat()); Assert.assertEquals("/9j/4AAQSkZJRgABAgEASABIAAD", thumb.getImg()); // PDFA Extension // Check numbers of schema descriptions Assert.assertTrue(metadata.getPDFExtensionSchema() .getDescriptionSchema().size() == 1); SchemaDescription desc = metadata.getPDFExtensionSchema() .getDescriptionSchema().get(0); // Check description content Assert.assertEquals("ACME E-Mail Schema", desc.getSchema()); Assert.assertEquals("http://www.acme.com/ns/email/1/", desc .getNameSpaceURI()); Assert.assertEquals("acmeemail", desc.getPrefix()); // Check property definition List<PDFAPropertyDescription> properties = desc.getProperties(); Assert.assertTrue(properties.size() == 2); // Check properties content PDFAPropertyDescription tmpProp = properties.get(0); Assert.assertEquals("Delivery-Date", tmpProp.getNameValue()); Assert.assertEquals("Date", tmpProp.getValueTypeValue()); Assert.assertEquals("internal", tmpProp.getCategoryValue()); Assert.assertEquals("date of email delivery", tmpProp .getDescriptionValue()); tmpProp = properties.get(1); Assert.assertEquals("From", tmpProp.getNameValue()); Assert.assertEquals("mailaddress", tmpProp.getValueTypeValue()); Assert.assertEquals("internal", tmpProp.getCategoryValue()); Assert.assertEquals("sender email address", tmpProp .getDescriptionValue()); // Check valuetype // Check numbers of valuetype defined Assert.assertTrue(desc.getValueTypes().size() == 1); PDFAValueTypeDescription tmpValType = desc.getValueTypes().get(0); Assert.assertEquals("mailaddress", tmpValType.getTypeNameValue()); Assert.assertEquals("http://www.acme.com/ns/email/1/mailaddress/", tmpValType.getNamespaceURIValue()); Assert.assertEquals("mailaddress value", tmpValType .getDescriptionValue()); // Check fields associated to this value type Assert.assertTrue(tmpValType.getFields().size() == 2); PDFAFieldDescription tmpField = tmpValType.getFields().get(0); Assert.assertEquals("name", tmpField.getNameValue()); Assert.assertEquals("Text", tmpField.getValueTypeValue()); Assert.assertEquals("plaintext name", tmpField.getDescriptionValue()); tmpField = tmpValType.getFields().get(1); Assert.assertEquals("mailto", tmpField.getNameValue()); Assert.assertEquals("Text", tmpField.getValueTypeValue()); Assert.assertEquals("email address", tmpField.getDescriptionValue()); // Check PDFA Conformance schema Assert.assertEquals("1", metadata.getPDFIdentificationSchema() .getPart().getStringValue()); Assert.assertEquals("B", metadata.getPDFIdentificationSchema() .getConformanceValue()); Assert.assertEquals("1:2005", metadata.getPDFIdentificationSchema() .getAmdValue()); // Check ADOBE PDF Schema Assert.assertEquals("PDFlib Personalization Server 7.0.2p5 (Win32)", metadata.getAdobePDFSchema().getProducerValue()); // Check Defined Schema XMPSchema schem = metadata.getSchema("http://www.acme.com/ns/email/1/"); Assert.assertEquals(DateConverter .toCalendar("2007-11-09T09:55:36+01:00"), schem .getDatePropertyValue("acmeemail:Delivery-Date")); Assert.assertNotNull(schem.getAbstractProperty(("acmeemail:From"))); // SaveMetadataHelper.serialize(metadata, true, System.out); } }