Package org.apache.padaf.xmpbox

Source Code of org.apache.padaf.xmpbox.BirthCertificateSchemaWithXMLDescriptions

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

import java.util.Calendar;
import java.util.Iterator;

import org.apache.padaf.xmpbox.XMPMetadata;
import org.apache.padaf.xmpbox.schema.PropertyExtensionDefinition;
import org.apache.padaf.xmpbox.schema.PropertyType;
import org.apache.padaf.xmpbox.schema.SchemaExtensionDefinition;
import org.apache.padaf.xmpbox.schema.XMPSchema;
import org.apache.padaf.xmpbox.type.AbstractField;
import org.apache.padaf.xmpbox.type.Attribute;
import org.apache.padaf.xmpbox.type.ComplexPropertyContainer;
import org.apache.padaf.xmpbox.type.TextType;


@SchemaExtensionDefinition(schema = "Birth-Certificate Schema", valueType_description = "/org/apache/padaf/xmpbox/valueTypeDescription.xml", property_descriptions = "propertiesDescription.xml")
public class BirthCertificateSchemaWithXMLDescriptions extends XMPSchema {

  public static final String PREFERED_PREFIX = "adn";

  public static final String NAMESPACE = "http://test.apache.com/xap/adn/";

  @PropertyType(propertyType = "Text")
  @PropertyExtensionDefinition(propertyCategory = "external")
  public static final String FIRST_NAME = "firstname";

  @PropertyType(propertyType = "seq Text")
  @PropertyExtensionDefinition(propertyCategory = "external")
  public static final String LAST_NAME = "lastname";

  @PropertyType(propertyType = "Text")
  @PropertyExtensionDefinition(propertyCategory = "external")
  public static final String BIRTH_PLACE = "birth-place";

  @PropertyType(propertyType = "Date")
  @PropertyExtensionDefinition(propertyCategory = "external")
  public static final String BIRTH_DATE = "birth-date";

  @PropertyType(propertyType = "Text")
  @PropertyExtensionDefinition(propertyCategory = "external")
  public static final String BIRTH_COUNTRY = "birth-country";

  @PropertyType(propertyType = "mailaddress")
  @PropertyExtensionDefinition(propertyCategory = "external")
  public static final String MAIL_ADR = "mail";

  public BirthCertificateSchemaWithXMLDescriptions(XMPMetadata metadata) {
    super(metadata, PREFERED_PREFIX, NAMESPACE);
    this.setAttribute(new Attribute(null, "xmlns", "madn",
        "http://test.withfield.com/vt/"));
    this.setAboutAsSimple("");
  }

  public void setFirstname(String fn) {
    this.setTextPropertyValueAsSimple(FIRST_NAME, fn);
  }

  public void addLastname(String ln) {
    this.addSequenceValueAsSimple(LAST_NAME, ln);
  }

  public void setBirthPlace(String city) {
    this.setTextPropertyValueAsSimple(BIRTH_PLACE, city);
  }

  public void setBirthCountry(String country) {
    this.setTextPropertyValueAsSimple(BIRTH_COUNTRY, country);
  }

  public void setBirthDate(Calendar date) {
    this.setDatePropertyValueAsSimple(BIRTH_DATE, date);
  }

  public String getFirstname() {
    return this.getTextProperty(localPrefixSep + FIRST_NAME)
        .getStringValue();
  }

  public String getLastname() {
    return this.getTextProperty(localPrefixSep + LAST_NAME)
        .getStringValue();
  }

  public void setMailaddr(String name, String domain) {
    ComplexPropertyContainer field = new ComplexPropertyContainer(metadata,
        localPrefix, MAIL_ADR);
    field.setAttribute(new Attribute(null, "rdf", "parseType", "Resource"));
    TextType namePart = new TextType(metadata, "madn", "name", name);
    TextType domainPart = new TextType(metadata, "madn", "domain", domain);
    field.addProperty(namePart);
    field.addProperty(domainPart);
    addProperty(field);

  }

  private ComplexPropertyContainer getMailField() {
    AbstractField afield = this.getPropertyAsSimple(MAIL_ADR);
    if (afield == null) {
      return null;
    }
    if (afield instanceof ComplexPropertyContainer) {
      return (ComplexPropertyContainer) afield;
    } else {
      throw new IllegalArgumentException(MAIL_ADR
          + " property found but not seems to be a field");
    }
  }

  private TextType getTextType(String nameProp) {
    ComplexPropertyContainer field = getMailField();
    Iterator<AbstractField> it = field.getAllProperties().iterator();
    AbstractField aProp;
    while (it.hasNext()) {
      aProp = it.next();
      if (aProp.getPropertyName().equals(nameProp)) {
        if (aProp instanceof TextType) {
          return (TextType) aProp;
        } else {
          throw new IllegalArgumentException(
              nameProp
                  + " property found but not seems to be in expected type");
        }
      }
    }
    return null;
  }

  public String getMailName() {
    TextType name = getTextType("name");
    if (name != null) {
      return name.getStringValue();
    }
    return null;
  }

  public String getMailDomain() {
    TextType name = getTextType("domain");
    if (name != null) {
      return name.getStringValue();
    }
    return null;
  }
}
TOP

Related Classes of org.apache.padaf.xmpbox.BirthCertificateSchemaWithXMLDescriptions

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.