Package org.apache.padaf.xmpbox.schema

Source Code of org.apache.padaf.xmpbox.schema.PDFAExtensionTest

/*****************************************************************************
*
* 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.schema;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import junit.framework.Assert;

import org.apache.padaf.xmpbox.XMPMetadata;
import org.apache.padaf.xmpbox.parser.XmpSchemaException;
import org.apache.padaf.xmpbox.schema.PDFAExtensionSchema;
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.type.Attribute;
import org.junit.Before;
import org.junit.Test;

public class PDFAExtensionTest {

  protected XMPMetadata metadata;

  @Before
  public void initTempMetaData() throws Exception {
    metadata = new XMPMetadata();
  }

  @Test
  public void testNSManualDeclaration() throws Exception {
    HashMap<String, String> namespaces = new HashMap<String, String>();
    namespaces.put(PDFAExtensionSchema.PDFAEXTENSION,
        PDFAExtensionSchema.PDFAEXTENSIONURI);
    namespaces.put(PDFAExtensionSchema.PDFAFIELD,
        PDFAExtensionSchema.PDFAFIELDURI);
    namespaces.put(PDFAExtensionSchema.PDFAPROPERTY,
        PDFAExtensionSchema.PDFAPROPERTYURI);
    namespaces.put(PDFAExtensionSchema.PDFASCHEMA,
        PDFAExtensionSchema.PDFASCHEMAURI);
    namespaces.put(PDFAExtensionSchema.PDFATYPE,
        PDFAExtensionSchema.PDFATYPEURI);

    PDFAExtensionSchema schem = metadata
        .createAndAddPDFAExtensionSchemaWithNS(namespaces);
    Iterator<Attribute> att = schem.getAllAttributes().iterator();

    // PDFAExtension is removed during the building of
    // PDFAExtensionSchemaWithNS
    namespaces.put(PDFAExtensionSchema.PDFAEXTENSION,
        PDFAExtensionSchema.PDFAEXTENSIONURI);
    Attribute tmp;

    while (att.hasNext()) {
      // System.out.println(att.next().getPropertyName());
      tmp = att.next();
      if (!tmp.getLocalName().equals("about")) {
        Assert.assertTrue(namespaces.containsKey(tmp.getLocalName()));
      }
    }
  }

  @Test(expected = XmpSchemaException.class)
  public void testNoPdfExtension() throws Exception {
    Map<String, String> namespaces = new HashMap<String, String>();
    new PDFAExtensionSchema(metadata, namespaces);
  }

  @Test
  public void testSameSchemaTwice() throws Exception {
    PDFAExtensionSchema schema = new PDFAExtensionSchema(metadata);
    SchemaDescription sd1 = schema.createSchemaDescription();
    sd1.setPrefixValue("pref1");
    sd1.setNameSpaceURIValue("http://uri1");
    sd1.setSchemaValue("pref 1");
    Assert.assertNull(schema.addSchemaDescription(sd1));

    SchemaDescription sd2 = schema.createSchemaDescription();
    sd2.setPrefixValue("pref1");
    sd2.setNameSpaceURIValue("http://uri1");
    sd2.setSchemaValue("pref 1");
    Assert.assertNotNull(schema.addSchemaDescription(sd2));

    List<SchemaDescription> lsd = schema.getDescriptionSchema();
    Assert.assertEquals(1, lsd.size());
    SchemaDescription sd = lsd.get(0);
    Assert.assertEquals("pref1", sd.getPrefix());
    Assert.assertEquals("http://uri1", sd.getNameSpaceURI());
    Assert.assertEquals("pref 1", sd.getSchema());
  }

  @Test
  public void testSameNSSchemaDifferentPrefix() throws Exception {
    PDFAExtensionSchema schema = new PDFAExtensionSchema(metadata);
    SchemaDescription sd1 = schema.createSchemaDescription();
    sd1.setPrefixValue("pref1");
    sd1.setNameSpaceURIValue("http://uri1");
    sd1.setSchemaValue("pref 1");
    Assert.assertNull(schema.addSchemaDescription(sd1));

    SchemaDescription sd2 = schema.createSchemaDescription();
    sd2.setPrefixValue("pref2");
    sd2.setNameSpaceURIValue("http://uri1");
    sd2.setSchemaValue("pref 2");
    Assert.assertNull(schema.addSchemaDescription(sd2));

    List<SchemaDescription> lsd = schema.getDescriptionSchema();
    Assert.assertEquals(2, lsd.size());
    SchemaDescription sd = lsd.get(0);
    Assert.assertEquals("pref1", sd.getPrefix());
    Assert.assertEquals("http://uri1", sd.getNameSpaceURI());
    Assert.assertEquals("pref 1", sd.getSchema());
  }

  @Test
  public void testDifferentSchemaDifferentPrefix() throws Exception {
    PDFAExtensionSchema schema = new PDFAExtensionSchema(metadata);
    SchemaDescription sd1 = schema.createSchemaDescription();
    sd1.setPrefixValue("pref1");
    sd1.setNameSpaceURIValue("http://uri1");
    sd1.setSchemaValue("pref 1");
    Assert.assertNull(schema.addSchemaDescription(sd1));

    SchemaDescription sd2 = schema.createSchemaDescription();
    sd2.setPrefixValue("pref2");
    sd2.setNameSpaceURIValue("http://uri2");
    sd2.setSchemaValue("pref 2");
    Assert.assertNull(schema.addSchemaDescription(sd2));

    List<SchemaDescription> lsd = schema.getDescriptionSchema();
    Assert.assertEquals(2, lsd.size());
    SchemaDescription sd = lsd.get(0);
    Assert.assertEquals("pref1", sd.getPrefix());
    Assert.assertEquals("http://uri1", sd.getNameSpaceURI());
    Assert.assertEquals("pref 1", sd.getSchema());
  }

  @Test
  public void testPDFExt() throws Exception {

    PDFAExtensionSchema schem = metadata
        .createAndAddPDFAExtensionSchemaWithDefaultNS();

    Assert.assertEquals("pdfaExtension", schem.getPrefix());
    Assert.assertEquals("http://www.aiim.org/pdfa/ns/extension/", schem
        .getNamespaceValue());

    String schemDesc = "Schema Acte de naissance";
    String schemURI = "http://test.apache.com/xap/adn/";
    String schemPrefix = "adn";

    SchemaDescription desc = schem.createSchemaDescription();
    desc.setSchemaValue(schemDesc);
    desc.setNameSpaceURIValue(schemURI);
    desc.setPrefixValue(schemPrefix);
    schem.addSchemaDescription(desc);

    Assert.assertEquals(schemDesc, desc.getSchema());
    Assert.assertEquals(schemURI, desc.getNameSpaceURI());
    Assert.assertEquals(schemPrefix, desc.getPrefix());

    String descExpected = "nom de la personne concernée";
    desc.addProperty("nom", "Text", "external",
        "nom de la personne concernee");
    desc.addProperty("nom", "Text", "external", descExpected);
    Assert.assertEquals(1, desc.getProperties().size());
    Assert.assertEquals(descExpected, desc.getProperties().get(0)
        .getDescriptionValue());
    desc.addProperty("prénom", "Text", "external",
        "prénom de la personne concernée");

    List<PDFAPropertyDescription> list = desc.getProperties();
    Assert.assertEquals("nom", list.get(0).getNameValue());
    Assert.assertEquals("prénom", list.get(1).getNameValue());

    // Check retrieve descriptions
    Assert.assertEquals(desc, schem.getIteratorOfDescriptions().next());
    Assert.assertEquals(desc, schem.getDescriptionSchema().get(0));

    // check retrieve this schema in metadata
    Assert.assertEquals(schem, metadata.getPDFExtensionSchema());

    // Check if no problem when create 2 description and display result
    SchemaDescription desc2 = schem.createSchemaDescription();
    desc2.setSchemaValue("2eme schema de test");
    desc2.setNameSpaceURIValue("http://test.apache.com/xap/test/");
    desc2.setPrefixValue("tst");
    desc2.addProperty("TestText", "OwnType", "external",
        "just a text property");
    schem.addSchemaDescription(desc2);
    // Check value type
    String valType = "OwnType";
    String nsType = "http://test.apache.com/xap/test/";
    String prefType = "tst";
    String descType = "Test Own type";
    desc2.addValueType(valType, nsType, prefType, "must be replaced", null);
    desc2.addValueType(valType, nsType, prefType, descType, null);
    Assert.assertEquals(1, desc2.getValueTypes().size());
    PDFAValueTypeDescription value = desc2.getValueTypes().get(0);
    Assert.assertEquals(valType, value.getTypeNameValue());
    Assert.assertEquals(nsType, value.getNamespaceURIValue());
    Assert.assertEquals(prefType, value.getPrefixValue());
    Assert.assertEquals(descType, value.getDescriptionValue());

    // SaveMetadataHelper.serialize(metadata, true, System.out);

    // valuetype test

  }
}
TOP

Related Classes of org.apache.padaf.xmpbox.schema.PDFAExtensionTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.