/*
* 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.registry;
import java.util.Iterator;
/**
* This entry describes all the properties that should be present in a
* RegistryEntry describing a Portlet.
* <p>
* Each PortletEntry must have a type, which may be:
* <dl>
* <dt>abstract</dt>
* <dd>The entry description is unsuitable for instanciating a Portlet</dd>
* <dt>instance</dt>
* <dd>This entry may be used to create a Portlet and does not depend on any
* other portlet entries</dd>
* <dt>ref</dt>
* <dd>This entry may be used to instanciate Portlets but depends on another
* PortletEntry definition whose registry name can be retrieved by getParent()</dd>
* </dl>
* </p>
*
* @author <a href="mailto:raphael@apache.org">Rapha�l Luta</a>
* @version $Id: PortletEntry.java,v 1.5 2004/02/23 03:11:39 jford Exp $
*/
public interface PortletEntry extends PortletInfoEntry {
public static final String TYPE_REF = "ref";
public static final String TYPE_INSTANCE = "instance";
public static final String TYPE_ABSTRACT = "abstract";
public final static String DEFAULT_GROUP = "Jetspeed";
public final static String DEFAULT_CATEGORY_REF = "General";
public final static String DEFAULT_CATEGORY_ABSTRACT = "Abstract";
/** @return the URL associated with this portlet or null */
public String getURL();
/**
* Sets the URL for this PortletEntry
*
* @param url
* the new PortletEntry URL
*/
public void setURL(String url);
/**
* Determines whether to use the URL as part of the unique id to the portlet
* cache. This can be used to control the lifetime of the portlet. The URL is
* used in combination with the parameter names and values for this portlet to
* uniquely identify to portlet. Parameters may also be optionally included in
* the cache key. This value can be set in the portlet registry.
*
* @return true if the URL is to be part of the cache key.
*/
public boolean isCachedOnURL();
/**
* Determines whether to use the URL as part of the unique id to the portlet
* cache. This can be used to control the lifetime of the portlet. The URL is
* used in combination with the parameter names and values for this portlet to
* uniquely identify to portlet. Parameters may also be optionally included in
* the cache key. This value can be set in the portlet registry.
*
* @return cached set to true if want this portlet to be cached based on the
* url
*/
public void setCachedOnURL(boolean cached);
/**
* Gets the URL entry record for this portlet entry
*
* @return ContentURL the URL entry object
*/
public ContentURL getURLEntry();
/**
* helper to get an instance of a cached parameter.
*
* @param name
* The parameter name.
* @return The cached parameter entry.
*/
public CachedParameter getCachedParameter(String name);
/** @return the entry name from which this one is derived */
public String getParent();
/**
* Sets the ancestor for this PortletEntry.
*
* @param parent
* the new ancestor entry name. This name should be defined in the
* system registry
*/
public void setParent(String parent);
/**
* @return true is this entry is only accessible by the portal administrators.
*/
public boolean isAdmin();
/** @return true is the PortletEntry is marked as an application */
public boolean isApplication();
/**
* Sets the application status of this portlet entry. If an entry is maked as
* application, the associated portlet will only be displayed in Maximized
* mode and can be retrieved specifically
*
* @param application
* the new application status
*/
public void setApplication(boolean application);
/** @return the type of this entry */
public String getType();
/**
* Sets the type of this entry. The type specifies whether it is abstract,
* instance or ref
*
* @param type
* the new type for the PortletEntry
*/
public void setType(String type);
/**
* Returns a list of the categories
*
* @return an iterator on the categories
*/
public Iterator listCategories();
/**
* Test if a given category exists for this entry
*
* @param name
* the category name
* @return true is the category exists in the default group
*/
public boolean hasCategory(String name);
/**
* Test if a given category exists for this entry, in the specified group of
* categories.
*
* @param name
* the category name
* @param group
* the category group
* @return true is the category exists in the specified group
*/
public boolean hasCategory(String name, String group);
/**
* Add a new category to this portlet entry in the default group.
*
* @param name
* the category name
*/
public void addCategory(String name);
/**
* Add a new category to this portlet entry.
*
* @param name
* the category name
* @param group
* the category group name
*/
public void addCategory(String name, String group);
/**
* Remove a category from this portlet entry in the default group.
*
* @param name
* the category name
*/
public void removeCategory(String name);
/**
* Remove a category from this portlet entry in the specified group.
*
* @param name
* the media type name to remove.
* @param group
* the category group name
*/
public void removeCategory(String name, String group);
}