📄 description.java
字号:
/* * Copyright (c) 2001 Sun Microsystems, Inc. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Sun Microsystems, Inc. for Project JXTA." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Sun", "Sun Microsystems, Inc.", "JXTA" and "Project JXTA" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact Project JXTA at http://www.jxta.org. * * 5. Products derived from this software may not be called "JXTA", * nor may "JXTA" appear in their name, without prior written * permission of Sun. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * *==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of Project JXTA. For more * information on Project JXTA, please see * <http://www.jxta.org/>. * * This license is based on the BSD license adopted by the Apache Foundation. * * $Id: Description.java,v 1.3 2002/03/18 21:00:49 rmjohnson Exp $ * */package net.jxta.share.metadata;import net.jxta.document.Element;/** An implementation of the description metadata scheme. The only metadata * stored is a plain english description of the content. The format of a * description metadata element is as follows:<br><br> * *<code><metadata><br> * <scheme><br> * <name>description</name><br> * <location><i>location of resource used to parse * and query the scheme</i></location><br> * <content-type>text/plain</content-type><br> * </scheme><br> * <i>plain english description</i><br> *</metadata></code> *<br><br> *For an example of this class in use, see <a href="../../../../../ref/src/net/jxta/test/ShareDemo.java">net.jxta.test.ShareDemo</a> and <a href="../../../../../ref/src/net/jxta/test/SearchDemo.java">net.jxta.test.SearchDemo</a>. * *@see ContentMetadataFactory *@see Keywords *@version $Revision: 1.3 $ *@author $Author: rmjohnson $ */public class Description extends ContentMetadata { /**The name of the metadata scheme implemented by this class.*/ public static final String SN_DESCRIPTION = "description"; /**The content type used by the description metadata scheme.*/ public static final String DESCRIPTION_CONTENT_TYPE = "text/plain"; private String description; /**Create a MetadataQuery instance that can be used to query objects of * this class. *@param query the string to search for *@exception IllegalArgumentException if query is null */ public static MetadataQuery newQuery(String query) throws IllegalArgumentException { if(query == null) throw new IllegalArgumentException(); return new DescriptionQuery(query); } /**A simple MetadataQuery implementation that can be used to search a * Description metadata object for a string. */ public static class DescriptionQuery implements MetadataQuery { private String queryString; /**@param queryString the string to search for. It is assumed that * this is not null, if it is, <code>queryMetadata()</code> will throw * a NullPointerException. */ public DescriptionQuery(String queryString) { this.queryString = queryString; } /**Test if a ContentMetadata object matches this query. *@param metadata the Description object to query. *@return <code>Integer.MAX_VALUE</code> if the query string was found * in <code>metadata</code>'s value, <code>Integer.MIN_VALUE</code> if * not. *@exception IllegalArgumentException if <code>metadata</code> is not * an instance of the Description class. */ public int queryMetadata(ContentMetadata metadata) throws IllegalArgumentException { String desc; try { desc = ((Description)metadata).getDescription(); }catch(ClassCastException cce) { throw new IllegalArgumentException("metadata is not of the Description class"); } if(desc.indexOf(queryString) != -1) return Integer.MAX_VALUE; return Integer.MIN_VALUE; } } /**Return the ContentMetadataConstructor used to create instances of this * class. */ public static ContentMetadataConstructor getConstructor() { return new ContentMetadataConstructor() { public ContentMetadata newInstance(Element metadataEl) throws IllegalArgumentException { return new Description(metadataEl); } }; } /**Create a new Description object with a given string as the metadata. *@exception NullPointerException if <code>description</code> is null. */ public Description(String description) { name = SN_DESCRIPTION; content_type = DESCRIPTION_CONTENT_TYPE; if(description == null) throw new NullPointerException("description is null"); this.description = description; } /**Create a Description instance from a <code><metadata></code> element. *@exception IllegalArgumentException if <code>el<code> was formatted * improperly. *@exception NullPointerException if <code>el</code> is null. */ public Description(Element el) throws IllegalArgumentException { init(el); name = SN_DESCRIPTION; content_type = DESCRIPTION_CONTENT_TYPE; description = (String)el.getValue(); if(description == null) throw new IllegalArgumentException("metadata element's value is null"); } /**A function for generating safe copies of this ContentMetadata object. * * @return a safe copy of this ContentMetadata object */ public Object clone() throws CloneNotSupportedException { Description result = new Description(description); result.location = location; return result; } public String getValue() { return description; } /**Return the text of the description*/ public String getDescription() { return description; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -