/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.portal.model.impl;
import com.liferay.portal.kernel.model.EventDefinition;
import com.liferay.portal.kernel.model.Portlet;
import com.liferay.portal.kernel.model.PortletApp;
import com.liferay.portal.kernel.model.PortletFilter;
import com.liferay.portal.kernel.model.PortletURLListener;
import com.liferay.portal.kernel.model.PublicRenderParameter;
import com.liferay.portal.kernel.model.SpriteImage;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.xml.QName;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import javax.servlet.ServletContext;
import javax.xml.XMLConstants;
/**
* @author Brian Wing Shun Chan
*/
public class PortletAppImpl implements PortletApp {
public PortletAppImpl(String servletContextName) {
_servletContextName = servletContextName;
if (Validator.isNotNull(_servletContextName)) {
_contextPath = StringPool.SLASH.concat(_servletContextName);
_warFile = true;
}
else {
_warFile = false;
}
}
@Override
public void addEventDefinition(EventDefinition eventDefinition) {
_eventDefinitions.add(eventDefinition);
}
@Override
public void addPortlet(Portlet portlet) {
_portlets.add(portlet);
}
@Override
public void addPortletFilter(PortletFilter portletFilter) {
_portletFilters.add(portletFilter);
_portletFiltersByFilterName.put(
portletFilter.getFilterName(), portletFilter);
}
@Override
public void addPortletURLListener(PortletURLListener portletURLListener) {
_portletURLListeners.add(portletURLListener);
_portletURLListenersByListenerClass.put(
portletURLListener.getListenerClass(), portletURLListener);
}
@Override
public void addPublicRenderParameter(
PublicRenderParameter publicRenderParameter) {
_publicRenderParametersByIdentifier.put(
publicRenderParameter.getIdentifier(), publicRenderParameter);
}
@Override
public void addPublicRenderParameter(String identifier, QName qName) {
PublicRenderParameter publicRenderParameter =
new PublicRenderParameterImpl(identifier, qName, this);
addPublicRenderParameter(publicRenderParameter);
}
@Override
public void addServletURLPatterns(Set<String> servletURLPatterns) {
_servletURLPatterns.addAll(servletURLPatterns);
}
@Override
public Map<String, String[]> getContainerRuntimeOptions() {
return _containerRuntimeOptions;
}
@Override
public String getContextPath() {
return _contextPath;
}
@Override
public Map<String, String> getCustomUserAttributes() {
return _customUserAttributes;
}
@Override
public String getDefaultNamespace() {
return _defaultNamespace;
}
@Override
public Set<EventDefinition> getEventDefinitions() {
return _eventDefinitions;
}
@Override
public PortletFilter getPortletFilter(String filterName) {
return _portletFiltersByFilterName.get(filterName);
}
@Override
public Set<PortletFilter> getPortletFilters() {
return _portletFilters;
}
@Override
public List<Portlet> getPortlets() {
return new ArrayList<>(_portlets);
}
@Override
public PortletURLListener getPortletURLListener(String listenerClass) {
return _portletURLListenersByListenerClass.get(listenerClass);
}
@Override
public Set<PortletURLListener> getPortletURLListeners() {
return _portletURLListeners;
}
@Override
public PublicRenderParameter getPublicRenderParameter(String identifier) {
return _publicRenderParametersByIdentifier.get(identifier);
}
@Override
public ServletContext getServletContext() {
return _servletContext;
}
@Override
public String getServletContextName() {
return _servletContextName;
}
@Override
public Set<String> getServletURLPatterns() {
return _servletURLPatterns;
}
@Override
public SpriteImage getSpriteImage(String fileName) {
return _spriteImagesMap.get(fileName);
}
@Override
public Set<String> getUserAttributes() {
return _userAttributes;
}
@Override
public boolean isWARFile() {
return _warFile;
}
@Override
public void removePortlet(Portlet portletModel) {
_portlets.remove(portletModel);
}
@Override
public void setDefaultNamespace(String defaultNamespace) {
_defaultNamespace = defaultNamespace;
}
@Override
public void setServletContext(ServletContext servletContext) {
_servletContext = servletContext;
_contextPath = _servletContext.getContextPath();
}
@Override
public void setSpriteImages(String spriteFileName, Properties properties) {
for (Map.Entry<Object, Object> entry : properties.entrySet()) {
String key = (String)entry.getKey();
String value = (String)entry.getValue();
int[] values = StringUtil.split(value, 0);
int offset = values[0];
int height = values[1];
int width = values[2];
SpriteImage spriteImage = new SpriteImage(
spriteFileName, key, offset, height, width);
_spriteImagesMap.put(key, spriteImage);
}
}
@Override
public void setWARFile(boolean warFile) {
_warFile = warFile;
}
private final Map<String, String[]> _containerRuntimeOptions =
new HashMap<>();
private String _contextPath = StringPool.BLANK;
private final Map<String, String> _customUserAttributes =
new LinkedHashMap<>();
private String _defaultNamespace = XMLConstants.NULL_NS_URI;
private final Set<EventDefinition> _eventDefinitions =
new LinkedHashSet<>();
private final Set<PortletFilter> _portletFilters = new LinkedHashSet<>();
private final Map<String, PortletFilter> _portletFiltersByFilterName =
new HashMap<>();
private final Set<Portlet> _portlets = new LinkedHashSet<>();
private final Set<PortletURLListener> _portletURLListeners =
new LinkedHashSet<>();
private final Map<String, PortletURLListener>
_portletURLListenersByListenerClass = new HashMap<>();
private final Map<String, PublicRenderParameter>
_publicRenderParametersByIdentifier = new HashMap<>();
private ServletContext _servletContext;
private final String _servletContextName;
private final Set<String> _servletURLPatterns = new LinkedHashSet<>();
private final Map<String, SpriteImage> _spriteImagesMap = new HashMap<>();
private final Set<String> _userAttributes = new LinkedHashSet<>();
private boolean _warFile;
}