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

📄 xmpmetafactory.java

📁 flash xmp sdk,flash官方SDK
💻 JAVA
字号:
//=================================================================================================//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 java.io.InputStream;import java.io.OutputStream;import java.util.Properties;import com.adobe.xmp.impl.XMPMetaImpl;import com.adobe.xmp.impl.XMPMetaParser;import com.adobe.xmp.impl.XMPSchemaRegistryImpl;import com.adobe.xmp.impl.XMPSerializerHelper;import com.adobe.xmp.options.ParseOptions;import com.adobe.xmp.options.SerializeOptions;/** * Creates <code>XMPMeta</code>-instances from an <code>InputStream</code> *  * @since 30.01.2006 */public final class XMPMetaFactory{	/** The singleton instance of the <code>XMPSchemaRegistry</code>. */ 	private static XMPSchemaRegistry schema = new XMPSchemaRegistryImpl();	/** cache for version info */	private static XMPVersionInfo versionInfo = null;		/**	 * Hides public constructor	 */	private XMPMetaFactory()	{		// EMPTY	}	/**	 * @return Returns the singleton instance of the <code>XMPSchemaRegistry</code>.	 */	public static XMPSchemaRegistry getSchemaRegistry()	{		return schema;	}		/**	 * @return Returns an empty <code>XMPMeta</code>-object.	 */	public static XMPMeta create()	{		return new XMPMetaImpl();	}		/**	 * Parsing with default options.	 * @see XMPMetaFactory#parse(InputStream, ParseOptions)	 * 	 * @param in an <code>InputStream</code>	 * @return Returns the <code>XMPMeta</code>-object created from the input.	 * @throws XMPException If the file is not well-formed XML or if the parsing fails.	 */	public static XMPMeta parse(InputStream in) throws XMPException	{		return parse(in, null);	}		/**	 * These functions support parsing serialized RDF into an XMP object, and serailizing an XMP	 * object into RDF. The input for parsing may be any valid Unicode	 * encoding. ISO Latin-1 is also recognized, but its use is strongly discouraged. Serialization	 * is always as UTF-8.	 * <p>	 * <code>parseFromBuffer()</code> parses RDF from an <code>InputStream</code>. The encoding	 * is recognized automatically.	 * 	 * @param in an <code>InputStream</code>	 * @param options Options controlling the parsing.<br>	 *        The available options are:	 *        <ul>	 *        <li> XMP_REQUIRE_XMPMETA - The &lt;x:xmpmeta&gt; XML element is required around	 *        <tt>&lt;rdf:RDF&gt;</tt>.	 *        <li> XMP_STRICT_ALIASING - Do not reconcile alias differences, throw an exception.	 *        </ul>	 *        <em>Note:</em>The XMP_STRICT_ALIASING option is not yet implemented.	 * @return Returns the <code>XMPMeta</code>-object created from the input.		 * @throws XMPException If the file is not well-formed XML or if the parsing fails.	 */	public static XMPMeta parse(InputStream in, ParseOptions options)			throws XMPException	{		return XMPMetaParser.parse(in, options);	}		/**	 * Parsing with default options.	 * @see XMPMetaFactory#parse(InputStream)	 * 	 * @param packet a String contain an XMP-file.	 * @return Returns the <code>XMPMeta</code>-object created from the input.	 * @throws XMPException If the file is not well-formed XML or if the parsing fails.	 */	public static XMPMeta parseFromString(String packet) throws XMPException	{		return parseFromString(packet, null);	}		/**	 * Creates an <code>XMPMeta</code>-object from a string.	 * @see XMPMetaFactory#parseFromString(String, ParseOptions)	 * 	 * @param packet a String contain an XMP-file.	 * @param options Options controlling the parsing.	 * @return Returns the <code>XMPMeta</code>-object created from the input.	 * @throws XMPException If the file is not well-formed XML or if the parsing fails.	 */	public static XMPMeta parseFromString(String packet, ParseOptions options)			throws XMPException	{		return XMPMetaParser.parse(packet, options);	}	/**	 * Parsing with default options.	 * @see XMPMetaFactory#parseFromBuffer(byte[], ParseOptions)	 * 	 * @param buffer a String contain an XMP-file.	 * @return Returns the <code>XMPMeta</code>-object created from the input.	 * @throws XMPException If the file is not well-formed XML or if the parsing fails.	 */	public static XMPMeta parseFromBuffer(byte[] buffer) throws XMPException	{		return parseFromBuffer(buffer, null);	}			/**	 * Creates an <code>XMPMeta</code>-object from a byte-buffer.	 * @see XMPMetaFactory#parse(InputStream, ParseOptions)	 * 	 * @param buffer a String contain an XMP-file.	 * @param options Options controlling the parsing.	 * @return Returns the <code>XMPMeta</code>-object created from the input.	 * @throws XMPException If the file is not well-formed XML or if the parsing fails.	 */	public static XMPMeta parseFromBuffer(byte[] buffer, 		ParseOptions options) throws XMPException	{		return XMPMetaParser.parse(buffer, options);	}		/**	 * Serializes an <code>XMPMeta</code>-object as RDF into an <code>OutputStream</code>	 * with default options.	 * 	 * @param xmp a metadata object 	 * @param out an <code>OutputStream</code> to write the serialized RDF to.	 * @throws XMPException on serializsation errors.	 */	public static void serialize(XMPMeta xmp, OutputStream out) throws XMPException	{		serialize(xmp, out, null);	}	/**	 * Serializes an <code>XMPMeta</code>-object as RDF into an <code>OutputStream</code>.	 * 	 * @param xmp a metadata object 	 * @param options Options to control the serialization (see {@link SerializeOptions}).	 * @param out an <code>OutputStream</code> to write the serialized RDF to.	 * @throws XMPException on serializsation errors.	 */	public static void serialize(XMPMeta xmp, OutputStream out, SerializeOptions options)			throws XMPException	{		assertImplementation(xmp);		XMPSerializerHelper.serialize((XMPMetaImpl) xmp, out, options);	}				/**	 * Serializes an <code>XMPMeta</code>-object as RDF into a byte buffer.	 * 	 * @param xmp a metadata object 	 * @param options Options to control the serialization (see {@link SerializeOptions}).	 * @return Returns a byte buffer containing the serialized RDF.	 * @throws XMPException on serializsation errors.	 */	public static byte[] serializeToBuffer(XMPMeta xmp, SerializeOptions options)			throws XMPException	{		assertImplementation(xmp);		return XMPSerializerHelper.serializeToBuffer((XMPMetaImpl) xmp, options);	}	/**	 * Serializes an <code>XMPMeta</code>-object as RDF into a string. <em>Note:</em> Encoding	 * is ignored when serializing to a string.	 * 	 * @param xmp a metadata object 	 * @param options Options to control the serialization (see {@link SerializeOptions}).	 * @return Returns a string containing the serialized RDF.	 * @throws XMPException on serializsation errors.	 */	public static String serializeToString(XMPMeta xmp, SerializeOptions options)			throws XMPException	{		assertImplementation(xmp);		return XMPSerializerHelper.serializeToString((XMPMetaImpl) xmp, options);	}	/**	 * @param xmp Asserts that xmp is compatible to <code>XMPMetaImpl</code>.s	 */	private static void assertImplementation(XMPMeta xmp)	{		if (!(xmp instanceof XMPMetaImpl))		{			throw new UnsupportedOperationException("The serializing service works only" +				"with the XMPMeta implementation of this library");		}	}	/**	 * Resets the schema registry to its original state (creates a new one).	 * Be careful this might break all existing XMPMeta-objects and should be used	 * only for testing purpurses. 	 */	public static void reset()	{		schema = new XMPSchemaRegistryImpl();	}			/**	 * Obtain version information.	 * 	 * @return Returns the version information.	 */	public static XMPVersionInfo getVersionInfo()	{		if (versionInfo == null)		{			try			{				Properties versProperties = new Properties();				versProperties.load(XMPMetaFactory.class.getResourceAsStream("version.properties"));								final int major = Integer.parseInt(versProperties						.getProperty("implementation.version.major"));				final int minor = Integer.parseInt(versProperties						.getProperty("implementation.version.minor"));				final int micro = Integer.parseInt(versProperties						.getProperty("implementation.version.micro"));				final boolean debug = Boolean.valueOf(						versProperties.getProperty("implementation.version.debug")).booleanValue();				final String message;				final int engBuild;				message = versProperties.getProperty("implementation.version");				engBuild = Integer.parseInt(versProperties						.getProperty("implementation.version.engbuild"));								versionInfo = new XMPVersionInfo()				{					public int getMajor()					{						return major;					}					public int getMinor()					{						return minor;					}					public int getMicro()					{						return micro;					}					public boolean isDebug()					{						return debug;					}					public int getBuild()					{						return engBuild;					}					public String getMessage()					{						return message;					}										public String toString()					{						return message;					}				};							}				catch (Throwable e)			{				// EMTPY, severe error would be detected during the tests			}		}		return versionInfo;	}}

⌨️ 快捷键说明

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