| MetaDataEntityLocal.java |
/*
* JBoss, the OpenSource J2EE webOS
*
* Distributable under LGPL license. See terms of license at gnu.org.
*/
package javax.emb;
import javax.ejb.EJBLocalObject;
/**
* This basic interface defines behavior common to all kinds of metadata
* objects that are persistent and can be altered. It also extends
* EJBLocalObject and therefore represents the local interface of a Metadata
* Entity EJB.
*
* <p>MetaDataEntity EJBs consist of the two basic alterable properties:
*
* <ul><li>The xml property models the XML content of a Meta Data Entity EJB.
* XML content may be implicitly processed for the creation of persistent
* indexing information to allow efficient content search. The default for this
* property is <code>null</code>.
*
* <li>The name property models a file name that is used as a default in case
* the xml content has to be exported to a file. The default value for this
* property is <code>null</code>.
*
* @version <tt>$Revision: 1.1 $</tt>
* @author <a href="mailto:ricardoarguello@users.sourceforge.net">Ricardo
* Argüello</a>
*/
public interface MetaDataEntityLocal extends EJBLocalObject
{
/**
* Adds the given Metadata Entity EJB to the receiver's set of children. If
* the given MetaDataEntity EJB is already part of the receiver's list of
* children no action is performed.
*
* @param child
* @throws java.lang.NullPointerException if the value passed is <code>null</code>.
*/
void addChild(MetaDataEntityLocal child) throws MediaException;
/**
* Adds the given Media Entity EJB to the receiver's set of associated Media
* Entity EJBs that are described by the receiver. If the given Media Entity
* EJB is already part of the receiver's list no action is performed.
*
* @param mediaEntity
* @throws java.lang.NullPointerException if the value passed is <code>null</code>.
*/
void addMediaEntity(MediaEntityLocal mediaEntity) throws MediaException;
// This method is listed in the code snippet at page 55 in the
// Proposed Final Draft, but I can't find it's description.
// URL exportMedia(URL) throws MediaException;
/**
* Returns the receiver's children as an array of Media Entity EJBs. The
* array is empty if no children are related.
*/
MetaDataEntityLocal[] getChildren() throws MediaException;
/**
* Returns a timestamp stating when the receiver's persistent state was last
* modified.
*
* @return @throws MediaException
*/
long getLastModified() throws MediaException;
/**
* Returns the Media Entity EJBs associated with the receiver. The array is
* empty if no media entity EJBs are related.
*
* @return @throws MediaException
*/
MediaEntityLocal[] getMediaEntities() throws MediaException;
/**
* This method locates all Media Entity EJBs associated with the receiver
* that have the specified media format. If the given recursion flag is
* true, the search is extended to all Media Entity EJBs that relate to the
* receiver or one of its recursive children.
*
* @return MediaEntityLocal array.
* @throws java.lang.NullPointerException if the media format passed is
* <code>null</code>.
*/
MediaEntityLocal[] getMediaEntities(
MediaFormat mediaFormat,
boolean searchCildren)
throws MediaException;
/**
* This method locates all Media Entity EJBs associated with the receiver
* that have the given mime type. If the given recursion flag is <code>true</code>,
* the search is extended to all Media Entity EJBs that relate to the
* receiver or one of its recursive children.
*
* @return MediaEntityLocal array.
* @throws java.lang.NullPointerException if the mime type passed is <code>null</code>.
*/
MediaEntityLocal[] getMediaEntities(String mimeType, boolean searchCildren)
throws MediaException;
/**
* Returns the receiver's non-unique name as a String. The name is used as a
* file name hint in case the metadata XML content is to be stored in a file
* system and therefore may only contain characters that are valid in file
* names. Also, it should contain a file extension that represents the
* receiver's format. Note that as opposed to media entity EJBs, the name
* property is not required to contain a file extension registered with the
* MediaFormatRegistry.
*
* @return name.
* @throws MediaException
*/
String getName() throws MediaException;
/**
* Returns the succeeding version edition of the receiver, which allows
* querying and a history chain of metadata objects that represent the same
* thing. The value <code>null</code> is returned if no next version
* exists.
*
* @return media entity.
* @throws MediaException
*/
MetaDataEntityLocal getNextVersion() throws MediaException;
/**
* Returns the receiver's parents as an array of Metadata Entity EJBs. The
* array is empty if no parents are related.
*
* @return MediaEntityLocal array.
* @throws MediaException
*/
MetaDataEntityLocal[] getParents() throws MediaException;
/**
* Returns the previous version of the receiver, which allows querying a
* history of metadata objects that represent the same logical thing. The
* value <code>null</code> is returned if no previous version exists.
*
* @return media entity.
* @throws MediaException
*/
MetaDataEntityLocal getPreviousVersion() throws MediaException;
/**
* This method returns the receiver's content as an XML string.
*
* @return content as an XML string.
* @throws javax.emb.ContentAccessException if the value passed is <code>null</code>.
*/
String getXML() throws MediaException;
/**
* Removes the given Metadata Entity EJB from the receiver's set of
* children. If the given MetaDataEntity EJB is not part of the receiver's
* list of children, no action is performed.
*
* @param child
* @throws java.lang.NullPointerException if the value passed is <code>null</code>.
* @throws MediaException
*/
void removeChild(MetaDataEntityLocal child) throws MediaException;
/**
* Removes the given Media Entity EJB from the receiver's set of associated
* Media Entity EJBs that are described by the receiver. If the given Media
* Entity EJB is not part of the receiver's list no action is performed.
*
* @param mediaEntity
* @throws java.lang.NullPointerException if the value passed is <code>null</code>.
* @throws MediaException
*/
void removeMediaEntity(MediaEntityLocal mediaEntity) throws MediaException;
/**
* Sets the receiver's non-unique name as a String. The name is used as a
* file name hint in case the media content is to be stored or published in
* a file system and therefore may only contain characters that are valid in
* file names. Also, it should contain a file extension that represents the
* receiver's media format. Note that as opposed media entity EJBs the name
* property is not required to contain a file extension registered with the
* MediaFormatRegistry.
*
* @param name
* @throws java.lang.NullPointerException if the value passed is <code>null</code>.
* @throws MediaException
*/
void setName(String name) throws MediaException;
/**
* Defines the given metadata entity to be the previous version of the
* receiver, which allows querying a history chain of metadata objects that
* represent the same logical thing. In return, the operation causes the
* receiver to be the given metadata entity's successor. Passing the value
* <code>null</code> causes the receiver not to have a predecessor
* anymore. The operation is only allowed if version chain integrity is
* preserved:
*
* <ul><li>If the given metadata entity EJB is the receiver itself: A
* javax.emb.VersionChainIntegrityException is thrown.</li>
*
* <li>If the given metadata entity EJB is already the previous version of
* the receiver: No action is performed.</li>
*
* <li>If the given metadata entity EJB is <code>null</code>: A
* javax.emb.VersionChainIntegrityException is thrown if the receiver has a
* successor.</li>
*
* <li>Otherwise: A javax.emb.VersionChainIntegrityException is thrown if
* the given metadata entity EJB has a successor, or if the receiver has a
* predecessor, a successor, or both.</li></ul>
*
* @param metadata
* @throws MediaException
*/
void setPreviousVersion(MetaDataEntityLocal metadata) throws MediaException;
/**
* If the given XML content is well formed, it replaces the receiver's
* current metadata content. If the given validation flag is <code>true</code>,
* the content is additionally strictly validated before the operation is
* performed.
*
* @param xmlContent
* @param validate
* @throws java.lang.NullPointerException if the content passed is <code>null</code>.
* @throws javax.emb.MetaDataValidationException if the validate flag is
* <code>true</code> and the content validation fails.
* @throws javax.emb.MetaDataSyntaxException if the XML content is not well
* formed, regardless of the validate flag.
*/
void setXML(String xmlContent, boolean validate) throws MediaException;
}| MetaDataEntityLocal.java |