⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmputils.java

📁 flash xmp sdk,flash官方SDK
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// =================================================================================================// ADOBE SYSTEMS INCORPORATED// Copyright 2006-2007 Adobe Systems Incorporated// All Rights Reserved//// NOTICE:  Adobe permits you to use, modify, and distribute this file in accordance with the terms// of the Adobe license agreement accompanying it.// =================================================================================================package com.adobe.xmp;import com.adobe.xmp.impl.Base64;import com.adobe.xmp.impl.ISO8601Converter;import com.adobe.xmp.impl.XMPUtilsImpl;import com.adobe.xmp.options.PropertyOptions;/** * Utility methods for XMP. I included only those that are different from the * Java default conversion utilities. *  * @since 21.02.2006 */public class XMPUtils{	/** Private constructor */	private XMPUtils()	{		// EMPTY	}	/**	 * Create a single edit string from an array of strings.	 * 	 * @param xmp	 *            The XMP object containing the array to be catenated.	 * @param schemaNS	 *            The schema namespace URI for the array. Must not be null or	 *            the empty string.	 * @param arrayName	 *            The name of the array. May be a general path expression, must	 *            not be null or the empty string. Each item in the array must	 *            be a simple string value.	 * @param separator	 *            The string to be used to separate the items in the catenated	 *            string. Defaults to &quot;; &quot;, ASCII semicolon and space	 *            (U+003B, U+0020).	 * @param quotes	 *            The characters to be used as quotes around array items that	 *            contain a separator. Defaults to &apos;&quot;&apos;	 * @param allowCommas	 *            Option flag to control the catenation.	 * @return Returns the string containing the catenated array items.	 * @throws XMPException Forwards the Exceptions from the metadata processing	 */	public static String catenateArrayItems(XMPMeta xmp, String schemaNS, String arrayName,			String separator, String quotes, boolean allowCommas) throws XMPException	{		return XMPUtilsImpl				.catenateArrayItems(xmp, schemaNS, arrayName, separator, quotes, allowCommas);	}	/**	 * Separate a single edit string into an array of strings.	 * 	 * @param xmp	 *            The XMP object containing the array to be updated.	 * @param schemaNS	 *            The schema namespace URI for the array. Must not be null or	 *            the empty string.	 * @param arrayName	 *            The name of the array. May be a general path expression, must	 *            not be null or the empty string. Each item in the array must	 *            be a simple string value.	 * @param catedStr	 *            The string to be separated into the array items.	 * @param arrayOptions Option flags to control the separation. 	 * @param preserveCommas Flag if commas shall be preserved	 * @throws XMPException Forwards the Exceptions from the metadata processing 	 */	public static void separateArrayItems(XMPMeta xmp, String schemaNS, String arrayName,			String catedStr, PropertyOptions arrayOptions, boolean preserveCommas) 				throws XMPException	{		XMPUtilsImpl.separateArrayItems(xmp, schemaNS, arrayName, catedStr, arrayOptions,				preserveCommas);	}	/**	 * Remove multiple properties from an XMP object.	 * 	 * RemoveProperties was created to support the File Info dialog's Delete	 * button, and has been been generalized somewhat from those specific needs.	 * It operates in one of three main modes depending on the schemaNS and	 * propName parameters:	 * 	 * <ul>	 * <li> Non-empty <code>schemaNS</code> and <code>propName</code> - The named property is	 * removed if it is an external property, or if the 	 * flag <code>doAllProperties</code> option is true. It does not matter whether the	 * named property is an actual property or an alias.	 * 	 * <li> Non-empty <code>schemaNS</code> and empty <code>propName</code> - The all external	 * properties in the named schema are removed. Internal properties are also	 * removed if the flag <code>doAllProperties</code> option is set. In addition,	 * aliases from the named schema will be removed if the flag <code>includeAliases</code> 	 * option is set.	 * 	 * <li> Empty <code>schemaNS</code> and empty <code>propName</code> - All external properties in	 * all schema are removed. Internal properties are also removed if the 	 * flag <code>doAllProperties</code> option is passed. Aliases are implicitly handled	 * because the associated actuals are internal if the alias is.	 * </ul>	 * 	 * It is an error to pass an empty <code>schemaNS</code> and non-empty <code>propName</code>.	 * 	 * @param xmp	 *            The XMP object containing the properties to be removed.	 * 	 * @param schemaNS	 *            Optional schema namespace URI for the properties to be	 *            removed.	 * 	 * @param propName	 *            Optional path expression for the property to be removed.	 * 	 * @param doAllProperties Option flag to control the deletion: do internal properties in	 *          addition to external properties.	 *            	 * @param includeAliases Option flag to control the deletion: 	 * 			Include aliases in the "named schema" case above.	 * 			<em>Note:</em> Currently not supported.	 * @throws XMPException Forwards the Exceptions from the metadata processing 	 */	public static void removeProperties(XMPMeta xmp, String schemaNS, String propName,			boolean doAllProperties, boolean includeAliases) throws XMPException	{		XMPUtilsImpl.removeProperties(xmp, schemaNS, propName, doAllProperties, includeAliases);	}		/**	 * Alias without the new option <code>deleteEmptyValues</code>.	 * @param source The source XMP object.	 * @param dest The destination XMP object.	 * @param doAllProperties Do internal properties in addition to external properties.	 * @param replaceOldValues Replace the values of existing properties.	 * @throws XMPException Forwards the Exceptions from the metadata processing 	 */	public static void appendProperties(XMPMeta source, XMPMeta dest, boolean doAllProperties,			boolean replaceOldValues) throws XMPException	{		appendProperties(source, dest, doAllProperties, replaceOldValues, false);	}		/**	 * <p>Append properties from one XMP object to another.	 * 	 * <p>XMPUtils#appendProperties was created to support the File Info dialog's Append button, and	 * has been been generalized somewhat from those specific needs. It appends information from one	 * XMP object (source) to another (dest). The default operation is to append only external	 * properties that do not already exist in the destination. The flag 	 * <code>doAllProperties</code> can be used to operate on all properties, external and internal.	 * The flag <code>replaceOldValues</code> option can be used to replace the values 	 * of existing properties. The notion of external	 * versus internal applies only to top level properties. The keep-or-replace-old notion applies	 * within structs and arrays as described below.	 * <ul>	 * <li>If <code>replaceOldValues</code> is true then the processing is restricted to the top 	 * level properties. The processed properties from the source (according to 	 * <code>doAllProperties</code>) are propagated to the destination, 	 * replacing any existing values.Properties in the destination that are not in the source 	 * are left alone.	 *	 * <li>If <code>replaceOldValues</code> is not passed then the processing is more complicated. 	 * Top level properties are added to the destination if they do not already exist. 	 * If they do exist but differ in form (simple/struct/array) then the destination is left alone.	 * If the forms match, simple properties are left unchanged while structs and arrays are merged.	 * 	 * <li>If <code>deleteEmptyValues</code> is passed then an empty value in the source XMP causes	 * the corresponding destination XMP property to be deleted. The default is to treat empty 	 * values the same as non-empty values. An empty value is any of a simple empty string, an array	 * with no items, or a struct with no fields. Qualifiers are ignored.	 * </ul>	 * 	 * <p>The detailed behavior is defined by the following pseudo-code:	 * <blockquote>	 * <pre>     *    appendProperties ( sourceXMP, destXMP, doAllProperties,      *    			replaceOldValues, deleteEmptyValues ):     *       for all source schema (top level namespaces):     *          for all top level properties in sourceSchema:     *             if doAllProperties or prop is external:     *                appendSubtree ( sourceNode, destSchema, replaceOldValues, deleteEmptyValues )     *      *    appendSubtree ( sourceNode, destParent, replaceOldValues, deleteEmptyValues ):     *        if deleteEmptyValues and source value is empty:     *            delete the corresponding child from destParent     *        else if sourceNode not in destParent (by name):     *           copy sourceNode's subtree to destParent     *        else if replaceOld:     *            delete subtree from destParent     *            copy sourceNode's subtree to destParent     *        else:     *            // Already exists in dest and not replacing, merge structs and arrays     *            if sourceNode and destNode forms differ:     *                return, leave the destNode alone     *            else if form is a struct:     *                for each field in sourceNode:     *                    AppendSubtree ( sourceNode.field, destNode, replaceOldValues )     *            else if form is an alt-text array:     *                copy new items by "xml:lang" value into the destination     *            else if form is an array:     *                copy new items by value into the destination, ignoring order and duplicates     * </pre>	 * </blockquote>	 *	 * <p><em>Note:</em> appendProperties can be expensive if replaceOldValues is not passed and 	 * the XMP contains large arrays. The array item checking described above is n-squared. 	 * Each source item is checked to see if it already exists in the destination, 	 * without regard to order or duplicates.	 * <p>Simple items are compared by value and "xml:lang" qualifier, other qualifiers are ignored.	 * Structs are recursively compared by field names, without regard to field order. Arrays are	 * compared by recursively comparing all items.	 *	 * @param source The source XMP object.	 * @param dest The destination XMP object.	 * @param doAllProperties Do internal properties in addition to external properties.	 * @param replaceOldValues Replace the values of existing properties.	 * @param deleteEmptyValues Delete destination values if source property is empty.	 * @throws XMPException Forwards the Exceptions from the metadata processing 	 */	public static void appendProperties(XMPMeta source, XMPMeta dest, boolean doAllProperties,			boolean replaceOldValues, boolean deleteEmptyValues) throws XMPException	{		XMPUtilsImpl.appendProperties(source, dest, doAllProperties, replaceOldValues, 			deleteEmptyValues);	}	/**	 * Convert from string to Boolean.	 * 	 * @param value	 *            The string representation of the Boolean.	 * @return The appropriate boolean value for the string. The checked values	 *         for <code>true</code> and <code>false</code> are:	 *         <ul>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -