/*
* Copyright 2000-2001,2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jetspeed.om.profile;
import org.apache.jetspeed.om.profile.Portlets;
import org.apache.jetspeed.om.profile.Entry;
import java.io.Serializable;
/**
* This interface represents a loaded PSML document in memory, providing
* all facilities for finding and updating specific parts of the
* document.
*
* @author <a href="mailto:raphael@apache.org">Rapha謖 Luta</a>
* @version $Id: PSMLDocument.java,v 1.8 2004/02/23 03:05:01 jford Exp $
*/
public interface PSMLDocument extends Serializable, Cloneable
{
/**
* Return the name of this document
*/
public String getName();
/**
* Sets a new name for this document
*
* @param name the new document name
*/
public void setName(String name);
/**
* Return the portlet set PSML description of this document
*
* @return a PSML object model hierarchy, or null if none is
* defined for this document
*/
public Portlets getPortlets();
/**
* Sets a new PSML object model for this document
*
* @param portlets the PSML object model
*/
public void setPortlets(Portlets portlets);
/** Returns the first entry in the current PSML resource corresponding
* to the given portlet name
*
* @param name the portlet name to seek
* @return the found entry description or null
*/
public Entry getEntry(String name);
/** Returns the first entry in the current PSML resource corresponding
* to the given entry id
*
* @param entryId the portlet's entry id to seek
* @return the found entry description or null
*/
public Entry getEntryById(String entryId);
/** Returns the first portlets element in the current PSML resource corresponding
* to the given name
*
* @param name the portlets name to seek
* @return the found portlets description or null
*/
public Portlets getPortlets(String name);
/** Returns the first portlets element in the current PSML resource corresponding
* to the given name
*
* @param portletId the portlet's entry id to seek
* @return the found portlets description or null
*/
public Portlets getPortletsById(String portletId);
/** Returns the first portlets element in the current PSML resource
* found at the specified position. The position is computed using
* a left-most tree traversal algorithm of the existing portlets (thus
* not counting other entry objects)
*
* @param position the sought position
* @return the found portlets object or null if we did not find such an
* object
*/
public Portlets getPortlets(int position);
/**
* Removes the first entry in the current PSML resource corresponding
* to the given entry id
*
* @param entryId the portlet's entry id to remove
* @return true if the entry was removed
*/
public boolean removeEntryById(String entryId);
/**
* Create a clone of this object
*/
public Object clone()
throws java.lang.CloneNotSupportedException;
}