/***************************************************************************** * * 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.List; import org.apache.padaf.xmpbox.XMPMetadata; import org.apache.padaf.xmpbox.type.BooleanType; import org.apache.padaf.xmpbox.type.ComplexProperty; import org.apache.padaf.xmpbox.type.TextType; /** * Representation of XMP Rights Management Schema * * @author a183132 * */ public class XMPRightsManagementSchema extends XMPSchema { public static final String PREFERRED_XMPRIGHTS_PREFIX = "xmpRights"; public static final String XMPRIGHTSURI = "http://ns.adobe.com/xap/1.0/rights/"; @PropertyType(propertyType = "URL") public static final String CERTIFICATE = "Certificate"; @PropertyType(propertyType = "Boolean") public static final String MARKED = "Marked"; @PropertyType(propertyType = "bag ProperName") public static final String OWNER = "Owner"; @PropertyType(propertyType = "Lang Alt") public static final String USAGETERMS = "UsageTerms"; @PropertyType(propertyType = "URL") public static final String WEBSTATEMENT = "WebStatement"; /** * Constructor of XMPRightsManagement Schema with preferred prefix * * @param metadata * The metadata to attach this schema */ public XMPRightsManagementSchema(XMPMetadata metadata) { super(metadata, PREFERRED_XMPRIGHTS_PREFIX, XMPRIGHTSURI); } /** * Constructor of XMPRightsManagement schema with specified prefix * * @param metadata * The metadata to attach this schema * @param ownPrefix * The prefix to assign */ public XMPRightsManagementSchema(XMPMetadata metadata, String ownPrefix) { super(metadata, ownPrefix, XMPRIGHTSURI); } /** * Add a legal owner for the described resource. * * @param value * value to add */ public void addToOwnerValue(String value) { addBagValue(localPrefixSep + OWNER, value); } /** * Return the Bag of owner(s) * * @return owners property */ public ComplexProperty getOwner() { return (ComplexProperty) getProperty(localPrefixSep + OWNER); } /** * Return a String list of owner(s) * * @return list of defined owners */ public List<String> getOwnerValue() { return getBagValueList(localPrefixSep + OWNER); } /** * Set Marked value * * @param marked * value to add */ public void setMarkedValue(Boolean marked) { addProperty(new BooleanType(metadata, localPrefix, MARKED, marked)); } /** * Set Marked property * * @param marked * Marked property to set */ public void setMarked(BooleanType marked) { addProperty(marked); } /** * Get Marked property * * @return Marked property */ public BooleanType getMarked() { return (BooleanType) getProperty(localPrefixSep + MARKED); } /** * Get Marked value * * @return marked value */ public Boolean getMarkedValue() { BooleanType bt = ((BooleanType) getProperty(localPrefixSep + MARKED)); return bt == null ? null : bt.getValue(); } /** * Add an usageTerms value * * @param lang * concerned language * @param value * value to set */ public void addToUsageTermsValue(String lang, String value) { setLanguagePropertyValue(localPrefixSep + USAGETERMS, lang, value); } /** * Return the Lang alt UsageTerms * * @return usageterms property */ public ComplexProperty getUsageTerms() { return (ComplexProperty) getProperty(localPrefixSep + USAGETERMS); } /** * Return a list of languages defined in description property * * @return list of languages defined for usageterms */ public List<String> getUsageTermsLanguages() { return getLanguagePropertyLanguagesValue(localPrefixSep + USAGETERMS); } /** * Return a language value for description property * * @param lang * concerned language * @return value of specified language */ public String getUsageTermsValue(String lang) { return getLanguagePropertyValue(localPrefixSep + USAGETERMS, lang); } /** * Return the WebStatement URL as TextType. * * @return Webstatement URL property */ public TextType getWebStatement() { return ((TextType) getProperty(localPrefixSep + WEBSTATEMENT)); } /** * Return the WebStatement URL as String. * * @return webStatement URL value */ public String getWebStatementValue() { TextType tt = ((TextType) getProperty(localPrefixSep + WEBSTATEMENT)); return tt == null ? null : tt.getStringValue(); } /** * Set the WebStatement url * * @param url * WebStatemen url value to set */ public void setWebStatementValue(String url) { addProperty(new TextType(metadata, localPrefix, WEBSTATEMENT, url)); } /** * Set the WebStatement url * * @param url * WebStatemen url property to set */ public void setWebStatement(TextType url) { addProperty(url); } /** * Return the Certificate URL as TextType. * * @return certificate url property */ public TextType getCertificate() { return ((TextType) getProperty(localPrefixSep + CERTIFICATE)); } /** * Return the Certificate URL as String. * * @return certificate URL value */ public String getCertificateValue() { TextType tt = ((TextType) getProperty(localPrefixSep + CERTIFICATE)); return tt == null ? null : tt.getStringValue(); } /** * Set the Certificate URL. * * @param url * certficate url value to set */ public void setCertificateValue(String url) { addProperty(new TextType(metadata, localPrefix, CERTIFICATE, url)); } /** * Set the Certificate URL. * * @param url * certificate url property to set */ public void setCertificate(TextType url) { addProperty(url); } }