Package org.apache.padaf.xmpbox.schema

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

/*****************************************************************************
*
* 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.ArrayList;
import java.util.Calendar;
import java.util.List;

import org.apache.padaf.xmpbox.XMPMetadata;
import org.apache.padaf.xmpbox.type.AbstractField;
import org.apache.padaf.xmpbox.type.BadFieldValueException;
import org.apache.padaf.xmpbox.type.ComplexProperty;
import org.apache.padaf.xmpbox.type.DateType;
import org.apache.padaf.xmpbox.type.IntegerType;
import org.apache.padaf.xmpbox.type.TextType;
import org.apache.padaf.xmpbox.type.ThumbnailType;


/**
* Representation of XMPBasic Schema
*
* @author a183132
*
*/
public class XMPBasicSchema extends XMPSchema {

  public static final String PREFERRED_XMP_PREFIX = "xmp";

  public static final String XMPBASICURI = "http://ns.adobe.com/xap/1.0/";

  @PropertyType(propertyType = "bag Xpath")
  public static final String ADVISORY = "Advisory";

  @PropertyType(propertyType = "URL")
  public static final String BASEURL = "BaseURL";

  @PropertyType(propertyType = "Date")
  public static final String CREATEDATE = "CreateDate";

  @PropertyType(propertyType = "Text")
  public static final String CREATORTOOL = "CreatorTool";

  @PropertyType(propertyType = "bag Text")
  public static final String IDENTIFIER = "Identifier";

  @PropertyType(propertyType = "Text")
  public static final String LABEL = "Label";

  @PropertyType(propertyType = "Date")
  public static final String METADATADATE = "MetadataDate";

  @PropertyType(propertyType = "Date")
  public static final String MODIFYDATE = "ModifyDate";

  @PropertyType(propertyType = "Text")
  public static final String NICKNAME = "Nickname";

  @PropertyType(propertyType = "Integer")
  public static final String RATING = "Rating";

  @PropertyType(propertyType = "Alt Thumbnail")
  public static final String THUMBNAILS = "Thumbnails";

  protected ComplexProperty altThumbs;

  /**
   * Constructor of XMPBasic schema with preferred prefix
   *
   * @param metadata
   *            The metadata to attach this schema
   */
  public XMPBasicSchema(XMPMetadata metadata) {
    super(metadata, PREFERRED_XMP_PREFIX, XMPBASICURI);

  }

  /**
   * Constructor of XMPBasic schema with specified prefix
   *
   * @param metadata
   *            The metadata to attach this schema
   * @param ownPrefix
   *            The prefix to assign
   */
  public XMPBasicSchema(XMPMetadata metadata, String ownPrefix) {
    super(metadata, ownPrefix, XMPBASICURI);

  }

  /**
   * Add thumbnail to thumbnails list
   *
   * @param height
   *            height format
   * @param width
   *            width format
   * @param format
   *            thumbnail format
   * @param img
   *            Image data
   */
  public void addThumbnails(Integer height, Integer width, String format,
      String img) {
    if (altThumbs == null) {
      altThumbs = new ComplexProperty(metadata, localPrefix, THUMBNAILS,
          ComplexProperty.ALTERNATIVE_ARRAY);
      addProperty(altThumbs);
    }
    ThumbnailType thumb = new ThumbnailType(metadata, "rdf", "li");
    /*
     * <xapGImg:height>162</xapGImg:height>
     * <xapGImg:width>216</xapGImg:width>
     * <xapGImg:format>JPEG</xapGImg:format>
     * <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD</xapGImg:image>
     */
    thumb.setHeight("xapGImg", "height", height);
    thumb.setWidth("xapGImg", "width", width);
    thumb.setFormat("xapGImg", "format", format);
    thumb.setImg("xapGImg", "image", img);
    altThumbs.getContainer().addProperty(thumb);
    // SaveMetadataHelper.serialize(metadata, System.out);
  }

  /**
   * Add a property specification that were edited outside the authoring
   * application
   *
   * @param xpath
   *            the value to add
   */
  public void addToAdvisoryValue(String xpath) {
    addBagValue(localPrefixSep + ADVISORY, xpath);
  }

  /**
   * Set the base URL for relative URLs in the document content
   *
   * @param url
   *            the Base url value to set
   */
  public void setBaseURLValue(String url) {
    addProperty(new TextType(metadata, localPrefix, BASEURL, url));
  }

  /**
   * Set the base URL property
   *
   * @param url
   *            the Base url property to set
   */
  public void setBaseURL(TextType url) {
    addProperty(url);
  }

  /**
   * Set the date and time the resource was originally created
   *
   * @param date
   *            the value to set
   */
  public void setCreateDateValue(Calendar date) {
    addProperty(new DateType(metadata, localPrefix, CREATEDATE, date));
  }

  /**
   * Set the create date property
   *
   * @param date
   *            the create date property to set
   */
  public void setCreateDate(DateType date) {
    addProperty(date);
  }

  /**
   * set the name of the first known tool used to create this resource
   *
   * @param creatorTool
   *            the creator tool value to set
   */
  public void setCreatorToolValue(String creatorTool) {
    addProperty(new TextType(metadata, localPrefix, CREATORTOOL,
        creatorTool));
  }

  /**
   * set the creatorTool property
   *
   * @param creatorTool
   *            the creator tool property to set
   */
  public void setCreatorTool(TextType creatorTool) {
    addProperty(creatorTool);
  }

  /**
   * Add a text string which unambiguously identify the resource within a
   * given context
   *
   * @param text
   *            the identifier value to add
   */
  public void addToIdentifierValue(String text) {
    addBagValue(localPrefixSep + IDENTIFIER, text);
  }

  /**
   * set a word or a short phrase which identifies a document as a member of a
   * user-defined collection
   *
   * @param text
   *            the label value to set
   */
  public void setLabelValue(String text) {
    addProperty(new TextType(metadata, localPrefix, LABEL, text));
  }

  /**
   * set the label property
   *
   * @param text
   *            the label property to set
   */
  public void setLabel(TextType text) {
    addProperty(text);
  }

  /**
   * Set the date and time that any metadata for this resource was last
   * changed. (should be equals or more recent than the createDate)
   *
   * @param date
   *            the Metadata Date value to set
   */
  public void setMetadataDateValue(Calendar date) {
    addProperty(new DateType(metadata, localPrefix, METADATADATE, date));
  }

  /**
   * Set the MetadataDate property
   *
   * @param date
   *            the Metadata Date property to set
   */
  public void setMetadataDate(DateType date) {
    addProperty(date);
  }

  /**
   * Set the date and time the resource was last modified
   *
   * @param date
   *            the Modify Date value to set
   */
  public void setModifyDateValue(Calendar date) {
    addProperty(new DateType(metadata, localPrefix, MODIFYDATE, date));
  }

  /**
   * Set the ModifyDate property
   *
   * @param date
   *            the Modify Date property to set
   */
  public void setModifyDate(DateType date) {
    addProperty(date);
  }

  /**
   * Set a short informal name for the resource
   *
   * @param text
   *            the Nickname value to set
   */
  public void setNicknameValue(String text) {
    addProperty(new TextType(metadata, localPrefix, NICKNAME, text));
  }

  /**
   * Set the NickName property
   *
   * @param text
   *            the Nickname property to set
   */
  public void setNickname(TextType text) {
    addProperty(text);
  }

  /**
   * Set a number that indicates a document's status relative to other
   * documents, used to organize documents in a file browser (values are
   * user-defined within an application-defined range)
   *
   * @param rate
   *            the rate value to set
   */
  public void setRatingValue(Integer rate) {
    addProperty(new IntegerType(metadata, localPrefix, RATING, rate));
  }

  /**
   * Set Rating Property
   *
   * @param rate
   *            the rate property to set
   */
  public void setRating(IntegerType rate) {
    addProperty(rate);
  }

  /**
   * Get the Advisory property
   *
   * @return the advisory property
   */
  public ComplexProperty getAdvisory() {
    return (ComplexProperty) getProperty(localPrefixSep + ADVISORY);
  }

  /**
   * Get the Advisory property values
   *
   * @return list of adivory values
   */
  public List<String> getAdvisoryValue() {
    return getBagValueList(localPrefixSep + ADVISORY);
  }

  /**
   * Get the BaseURL property
   *
   * @return the base url property
   */
  public TextType getBaseURL() {
    return (TextType) getProperty(localPrefixSep + BASEURL);
  }

  /**
   * Get the BaseURL property value
   *
   * @return the base url value
   */
  public String getBaseURLValue() {
    TextType tt = ((TextType) getProperty(localPrefixSep + BASEURL));
    return tt == null ? null : tt.getStringValue();
  }

  /**
   * Get the CreateDate property
   *
   * @return the CreateDate property
   */
  public DateType getCreateDate() {
    return (DateType) getProperty(localPrefixSep + CREATEDATE);
  }

  /**
   * Get the CreateDate property value
   *
   * @return the CreateDate value
   */
  public Calendar getCreateDateValue() {
    DateType createDate = (DateType) getProperty(localPrefixSep
        + CREATEDATE);
    if (createDate != null) {
      return createDate.getValue();
    }
    return null;
  }

  /**
   * Get the CreationTool property
   *
   * @return the CreationTool property
   */
  public TextType getCreatorTool() {
    return (TextType) getProperty(localPrefixSep + CREATORTOOL);
  }

  /**
   * Get the CreationTool property value
   *
   * @return the CreationTool value
   */
  public String getCreatorToolValue() {
    TextType tt = ((TextType) getProperty(localPrefixSep + CREATORTOOL));
    return tt == null ? null : tt.getStringValue();
  }

  /**
   * Get the Identifier property
   *
   * @return the Identifier property
   */
  public ComplexProperty getIdentifier() {
    return (ComplexProperty) getProperty(localPrefixSep + IDENTIFIER);
  }

  /**
   * Get the Identifier property values
   *
   * @return list of all identifier values
   */
  public List<String> getIdentifierValue() {
    return getBagValueList(localPrefixSep + IDENTIFIER);
  }

  /**
   * Get the label property
   *
   * @return the label property
   */
  public TextType getLabel() {
    return (TextType) getProperty(localPrefixSep + LABEL);
  }

  /**
   * Get the label property value
   *
   * @return the label value
   */
  public String getLabelValue() {
    TextType tt = ((TextType) getProperty(localPrefixSep + LABEL));
    return tt == null ? null : tt.getStringValue();
  }

  /**
   * Get the MetadataDate property
   *
   * @return the MetadataDate property
   */
  public DateType getMetadataDate() {
    return (DateType) getProperty(localPrefixSep + METADATADATE);
  }

  /**
   * Get the MetadataDate property value
   *
   * @return the MetadataDate value
   */
  public Calendar getMetadataDateValue() {
    DateType dt = ((DateType) getProperty(localPrefixSep + METADATADATE));
    return dt == null ? null : dt.getValue();
  }

  /**
   * Get the ModifyDate property
   *
   * @return the ModifyDate property
   */
  public DateType getModifyDate() {
    return (DateType) getProperty(localPrefixSep + MODIFYDATE);
  }

  /**
   * Get the ModifyDate property value
   *
   * @return the ModifyDate value
   */
  public Calendar getModifyDateValue() {
    DateType modifyDate = (DateType) getProperty(localPrefixSep
        + MODIFYDATE);
    if (modifyDate != null) {
      return modifyDate.getValue();
    }
    return null;

  }

  /**
   * Get the Nickname property
   *
   * @return the Nickname property
   */
  public TextType getNickname() {
    return (TextType) getProperty(localPrefixSep + NICKNAME);
  }

  /**
   * Get the Nickname property value
   *
   * @return the Nickname value
   */
  public String getNicknameValue() {
    TextType tt = ((TextType) getProperty(localPrefixSep + NICKNAME));
    return tt == null ? null : tt.getStringValue();
  }

  /**
   * Get the Rating property
   *
   * @return the Rating property
   */
  public IntegerType getRating() {
    return ((IntegerType) getProperty(localPrefixSep + RATING));
  }

  /**
   * Get the Rating property value
   *
   * @return the Rating value
   */
  public Integer getRatingValue() {
    IntegerType it = ((IntegerType) getProperty(localPrefixSep + RATING));
    return it == null ? null : it.getValue();
  }

  /**
   * Get list of Thumbnails
   *
   * @return List of all thumbnails properties defined
   * @throws BadFieldValueException
   *             if one thumbnail is not thumbnail type
   */
  public List<ThumbnailType> getThumbnails() throws BadFieldValueException {
    List<AbstractField> tmp = getArrayList(localPrefixSep + THUMBNAILS);
    if (tmp != null) {
      List<ThumbnailType> thumbs = new ArrayList<ThumbnailType>();
      for (AbstractField abstractField : tmp) {
        if (abstractField instanceof ThumbnailType) {
          thumbs.add((ThumbnailType) abstractField);
        } else {
          throw new BadFieldValueException("Thumbnail expected and "
              + abstractField.getClass().getName() + " found.");
        }
      }
      return thumbs;
    }
    return null;

  }

}
TOP

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

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.