/* | |
* Copyright 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.pluto.driver.services.impl.resource; | |
import org.apache.commons.logging.Log; | |
import org.apache.commons.logging.LogFactory; | |
import org.apache.pluto.driver.services.portal.PortletApplicationConfig; | |
import org.apache.pluto.driver.services.portal.PortletWindowConfig; | |
import org.apache.pluto.driver.services.portal.RenderConfig; | |
import java.util.*; | |
/** | |
* Encapsulation of the Pluto Driver ResourceConfig Info. | |
* | |
* @author <a href="ddewolf@apache.org">David H. DeWolf</a> | |
* @version 1.0 | |
* @since Sep 23, 2004 | |
*/ | |
public class ResourceConfig { | |
/** Internal Logger. */ | |
private static final Log LOG = | |
LogFactory.getLog(ResourceConfig.class); | |
/** The name of the portal. */ | |
private String portalName; | |
/** The Version of the Portal. */ | |
private String portalVersion; | |
/** The name of the container wrapped by this portal. */ | |
private String containerName; | |
/** The portlet modes we will support. */ | |
private Set supportedPortletModes; | |
/** The window states we will support. */ | |
private Set supportedWindowStates; | |
/** The portlet applications registered with us. */ | |
private Map portletApplications; | |
/** Encapsulation of render configuration data. */ | |
private RenderConfig renderConfig; | |
/** | |
* Default Constructor. | |
*/ | |
public ResourceConfig() { | |
this.supportedWindowStates = new HashSet(); | |
this.supportedPortletModes = new HashSet(); | |
this.portletApplications = new java.util.HashMap(); | |
} | |
/** | |
* Standard Getter. | |
* @return the name of the portal. | |
*/ | |
public String getPortalName() { | |
return portalName; | |
} | |
/** | |
* Standard Getter. | |
* @param portalName the name of the portal. | |
*/ | |
public void setPortalName(String portalName) { | |
this.portalName = portalName; | |
} | |
/** | |
* Standard Getter. | |
* @return the portal version. | |
*/ | |
public String getPortalVersion() { | |
return portalVersion; | |
} | |
/** | |
* Standard Setter. | |
* @param portalVersion the portal version. | |
*/ | |
public void setPortalVersion(String portalVersion) { | |
this.portalVersion = portalVersion; | |
} | |
/** | |
* Standard Getter. | |
* @return the name of the container. | |
*/ | |
public String getContainerName() { | |
return containerName; | |
} | |
/** | |
* Standard Setter. | |
* @param containerName the name of the container. | |
*/ | |
public void setContainerName(String containerName) { | |
this.containerName = containerName; | |
} | |
/** | |
* Standard Getter. | |
* @return the names of the supported portlet modes. | |
*/ | |
public Set getSupportedPortletModes() { | |
return supportedPortletModes; | |
} | |
/** | |
* Standard Setter. | |
* @param supportedPortletModes the names of the supported portlet modes. | |
*/ | |
public void setSupportedPortletModes(Set supportedPortletModes) { | |
this.supportedPortletModes = supportedPortletModes; | |
} | |
/** | |
* Add the named supported portlet mode to the list of supported modes. | |
* @param mode a supported mode. | |
*/ | |
public void addSupportedPortletMode(String mode) { | |
supportedPortletModes.add(mode); | |
} | |
/** | |
* Standard Getter. | |
* @return the names of the supported window states. | |
*/ | |
public Set getSupportedWindowStates() { | |
return supportedWindowStates; | |
} | |
/** | |
* Standard Setter. | |
* @param supportedWindowStates the names of the supported window states. | |
*/ | |
public void setSupportedWindowStates(Set supportedWindowStates) { | |
this.supportedWindowStates = supportedWindowStates; | |
} | |
/** | |
* Add the named supported window state to the list of supported states. | |
* @param state the name of the supported state. | |
*/ | |
public void addSupportedWindowState(String state) { | |
this.supportedWindowStates.add(state); | |
} | |
/** | |
* Standard Getter. | |
* @return the configuration data of all configured portlet applications. | |
*/ | |
public Set getPortletApplications() { | |
return new HashSet(portletApplications.values()); | |
} | |
/** | |
* Add a porltet applicaiton conofiguration to this list of portlet apps. | |
* @param app portlet application coniguration data. | |
*/ | |
public void addPortletApp(PortletApplicationConfig app) { | |
if (LOG.isDebugEnabled()) { | |
LOG.debug( | |
" - - Adding PortletApp ResourceConfig for: " + | |
app.getContextPath()); | |
} | |
portletApplications.put(app.getContextPath(), app); | |
} | |
/** | |
* Retrieve the portlet application with the given id. | |
* @param id the id of the portlet application. | |
* @return the portlet application configuration data. | |
*/ | |
public PortletApplicationConfig getPortletApp(String id) { | |
return (PortletApplicationConfig) portletApplications.get(id); | |
} | |
/** | |
* Retrieve the window configuration associated with the given id. | |
* @param id the id of the portlet window. | |
* @return the portlet window configuration data. | |
*/ | |
public PortletWindowConfig getPortletWindowConfig(String id) { | |
if (id == null) { | |
return null; | |
} | |
String context = getContextFromPortletId(id); | |
String portlet = getPortletNameFromPortletId(id); | |
PortletApplicationConfig app = getPortletApp(context); | |
if (app == null) { | |
if (LOG.isErrorEnabled()) { | |
LOG.error("Portlet Application '" + context + "' not found."); | |
} | |
return null; | |
} | |
return app.getPortlet(portlet); | |
} | |
/** | |
* Standard Getter. | |
* @return the render configuration. | |
*/ | |
public RenderConfig getRenderConfig() { | |
return renderConfig; | |
} | |
/** | |
* Standard Setter. | |
* @param renderConfig the render configuration. | |
*/ | |
public void setRenderConfig(RenderConfig renderConfig) { | |
this.renderConfig = renderConfig; | |
} | |
/** | |
* Retrieve the id of the context from the portlet id. | |
* @param portletId the id of the portlet. | |
* @return the context, derived from the portlet id. | |
*/ | |
private String getContextFromPortletId(String portletId) { | |
if (portletId == null) { | |
throw new NullPointerException("Portlet ID must not be null."); | |
} | |
int idx = portletId.lastIndexOf("."); | |
if (idx < 0) { | |
throw new IllegalArgumentException("Portlet ID does not contain a dot."); | |
} | |
return portletId.substring(0, idx); | |
} | |
/** | |
* Retreive the porlet name from the given portletId. | |
* @param portletId the portlet id. | |
* @return the name of the portlet. | |
*/ | |
private String getPortletNameFromPortletId(String portletId) { | |
if (portletId == null) { | |
throw new NullPointerException("Portlet ID must not be null."); | |
} | |
int idx = portletId.lastIndexOf("."); | |
if (idx < 0) { | |
throw new IllegalArgumentException("Portlet ID does not contain a dot."); | |
} | |
return portletId.substring(idx + 1); | |
} | |
} | |