/** * Copyright (C) 2009 eXo Platform SAS. * * This 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 software 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. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.exoplatform.portal.config.model; import org.exoplatform.portal.mop.SiteType; import org.exoplatform.portal.pom.config.Utils; import org.exoplatform.portal.pom.data.PortalData; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * May 13, 2004 * @author: Tuan Nguyen * @email: tuan08@users.sourceforge.net * @version: $Id: PortalConfig.java,v 1.7 2004/08/06 03:02:29 tuan08 Exp $ **/ public class PortalConfig extends ModelObject { final public static String USER_TYPE = SiteType.USER.getName(); final public static String GROUP_TYPE = SiteType.GROUP.getName(); final public static String PORTAL_TYPE = SiteType.PORTAL.getName(); final public static Container DEFAULT_LAYOUT = initDefaultLayout(); private String name; /** Added for new POM . */ private String type; private String locale; private String label; private String description; private String[] accessPermissions; private String editPermission; private Properties properties; private String skin; private Container portalLayout; private transient boolean modifiable; public PortalConfig() { this(PORTAL_TYPE); } public PortalConfig(String type) { this(type, null); } public PortalConfig(String type, String ownerId) { this(type, ownerId, null); } public PortalConfig(String type, String ownerId, String storageId) { super(storageId); // this.type = type; this.name = ownerId; this.portalLayout = new Container(); } public PortalConfig(PortalData data) { super(data.getStorageId()); // this.name = data.getName(); this.type = data.getType(); this.locale = data.getLocale(); this.label = data.getLabel(); this.description = data.getDescription(); this.accessPermissions = data.getAccessPermissions().toArray(new String[data.getAccessPermissions().size()]); this.editPermission = data.getEditPermission(); this.properties = new Properties(data.getProperties()); this.skin = data.getSkin(); this.portalLayout = new Container(data.getPortalLayout()); } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getName() { return name; } public void setName(String s) { name = s; } public String getLocale() { return locale; } public void setLocale(String s) { locale = s; } public String[] getAccessPermissions() { return accessPermissions; } public void setAccessPermissions(String[] s) { accessPermissions = s; } public String getEditPermission() { return editPermission; } public void setEditPermission(String editPermission) { this.editPermission = editPermission; } public String getSkin() { if (skin == null || skin.length() < 1) return "Default"; return skin; } public void setSkin(String s) { skin = s; } public Container getPortalLayout() { return portalLayout; } public void setPortalLayout(Container container) { portalLayout = container; } public boolean isModifiable() { return modifiable; } public void setModifiable(boolean b) { modifiable = b; } public Properties getProperties() { return properties; } public void setProperties(Properties props) { properties = props; } public String getProperty(String name) { if (name == null) throw new NullPointerException(); if (properties == null || !properties.containsKey(name)) return null; return properties.get(name); } public String getProperty(String name, String defaultValue) { String value = getProperty(name); if (value != null) return value; return defaultValue; } public void setProperty(String name, String value) { if (name == null || properties == null) throw new NullPointerException(); if (value == null) properties.remove(name); else properties.setProperty(name, value); } public void removeProperty(String name) { if (name == null || properties == null) throw new NullPointerException(); properties.remove(name); } public String getSessionAlive() { return getProperty(PortalProperties.SESSION_ALIVE, PortalProperties.SESSION_ON_DEMAND); } public void setSessionAlive(String type) { setProperty(PortalProperties.SESSION_ALIVE, type); } public Boolean isShowInfobar() { String value = getProperty(PortalProperties.SHOW_PORTLET_INFO, "1"); if (Integer.parseInt(value) == 1) { return true; } return false; } public void setShowInfobar(Boolean value) { if (value) { setProperty(PortalProperties.SHOW_PORTLET_INFO, "1"); } else { setProperty(PortalProperties.SHOW_PORTLET_INFO, "0"); } } public void setDescription(String description) { this.description = description; } public String getDescription() { return description; } public void setLabel(String label) { this.label = label; } public String getLabel() { return label; } static public class PortalConfigSet { private ArrayList<PortalConfig> portalConfigs; public ArrayList<PortalConfig> getPortalConfigs() { return portalConfigs; } public void setPortalConfigs(ArrayList<PortalConfig> list) { portalConfigs = list; } } @Override public String toString() { return "PortalConfig[name=" + name + ",type=" + type + "]"; } /** * Retuns Container that contains only PageBody * @return */ private static Container initDefaultLayout() { Container container = new Container(); ArrayList<ModelObject> children = new ArrayList<ModelObject>(); children.add(new PageBody()); container.setChildren(children); return container; } public PortalData build() { List<String> accessPermissions = Utils.safeImmutableList(this.accessPermissions); Map<String, String> properties = Utils.safeImmutableMap(this.properties); return new PortalData( storageId, name, type, locale, label, description, accessPermissions, editPermission, properties, skin, portalLayout.build()); } }