//==============================================================================
// WritableProperty.java
//==============================================================================
package tribble.repository;
import java.lang.Exception;
import java.lang.Object;
import java.lang.String;
/*******************************************************************************
* Generic modifiable document property.
*
*
* This class provides the fundamental attributes and methods for a
* document property associated with a storable
* repository document.
*
*
* A repository document is composed of content data (such as an image,
* text, or other kind of user data) and zero or more properties.
* Typically, the properties comprise the keys used to store the document in a
* document storage system. All of the documents within a repository system
* typically share the same set of document properties, although this is not
* required of any implementation.
*
*
* Each document property has the following attributes:
*
* - name
* - type
* - length
* - input (source) format
* - output (repository) format
* - default value
*
*
*
* There may be other attributes of the properties, which are specific to the
* particular subclass implementation of the repository system.
* For documents being written to a repository by an {@link RepositoryWriter},
* a property can be associated with the document using the
* {@link StorableDocument#addProperty StorableDocument.addProperty()}
* method (or by some other means provided by the implementation).
*
*
* A given property that is associated with a particular repository document also
* has a value, which is an object of some sort. Once a property is
* associated with the document, its value can be set to some object using the
* {@link StorableDocument#setProperty StorableDocument.setProperty()} method.
*
*
* The value of a property is the minimum amount of information that is
* useful to an implementation. The other attributes may be used or ignored by
* the implementation as it deems necessary.
*
*
* Note: This requires Java 1.5 or later.
*
*
*
* - Source code:
* -
* http://david.tribble.com/src/java/tribble/repository/WritableProperty.java
*
* - Documentation:
* -
* http://david.tribble.com/docs/tribble/repository/WritableProperty.html
*
*
*
*
* @version API 3.0, $Revision: 1.2 $ $Date: 2012/03/17 23:02:13 $
* @since 2008-04-04
* @author David R. Tribble (david@tribble.com)
* Copyright ©2008-2012 by David R. Tribble, all rights reserved.
* Permission is granted to any person or entity except those designated
* by the United States Department of State as a terrorist or terrorist
* government or agency, to use and distribute this source code provided
* that the original copyright notice remains present and unaltered.
*
* @see StorableDocument
* @see RepositoryWriter
*/
public class WritableProperty
extends DocumentProperty
{
static final String REV =
"@(#)tribble/repository/WritableProperty.java $Revision: 1.2 $ $Date: 2012/03/17 23:02:13 $\n";
// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
// Constructors
/**************************************************************************
* Constructor.
*
* @param name
* The name of this document property.
* This cannot be null or empty.
*
* @throws NullPointerException (unchecked)
* Thrown if name is null.
*
* @throws IllegalArgumentException (unchecked)
* Thrown if name is an empty string ("").
*
* @since API 2.0, 2008-04-04
*/
public WritableProperty(String name)
{
super(name);
}
// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
// Methods
/***************************************************************************
* Establish the type of this document property.
*
* @param type
* The type of this property, which is one of the
* {@link #TYPE_TEXT TYPE_XXX} constants or some other
* application-defined value (e.g., a MIME type name),
* or null if it is not defined.
*
* @since API 2.0, 2008-04-04
*/
public void setType(String type)
{
m_type = type;
}
/***************************************************************************
* Establish the length of this document property.
*
* @param len
* The length of this document property, or zero if it is not defined.
*
* @since API 2.0, 2008-04-04
*/
public void setLength(int len)
{
m_len = len;
}
/***************************************************************************
* Establish the output format specification for this document property.
*
* @param fmt
* The formatting specification of this property, which specifies how the
* property value should be formatted when it is stored in a repository
* document; or null if it is not defined.
*
* @since API 2.0, 2008-04-04
*/
public void setOutputFormat(String fmt)
{
m_outFmt = fmt;
}
/***************************************************************************
* Establish the input (source) format specification for this document
* property.
*
* @param fmt
* The source formatting specification of this property, which specifies the
* format of the property value before it is stored in a repository document
* (i.e., it specifies how the source value for this property should be
* unformatted when its value is set, prior to being
* reformatted when it is written to the repository);
* or null if it is not defined.
*
* @since API 2.0, 2008-04-04
*/
public void setInputFormat(String fmt)
{
m_inFmt = fmt;
}
/***************************************************************************
* Establish the default value for this document property.
* If this method is not called, the default value is null.
*
* @param val
* The default value to be used by this document property if it is not
* explicitly set to another value. This can be null.
*
* @since API 2.0, 2008-04-04
*/
public void setDefaultValue(Object val)
{
m_dflVal = val;
}
}
// End WritableProperty.java