/** * 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 java.util.ArrayList; import java.util.Collections; import java.util.List; import org.exoplatform.portal.mop.ProtectedContainer; import org.exoplatform.portal.pom.config.Utils; import org.exoplatform.portal.pom.data.ComponentData; import org.exoplatform.portal.pom.data.ContainerData; import org.exoplatform.portal.pom.data.ModelData; /** * @author Tuan Nguyen **/ public class Container extends ModelObject { protected String id; protected String name; protected String icon; protected String template; protected String factoryId; protected String title; protected String description; protected String width; protected String height; // Here to please jibx binding but not used anymore protected String decorator; protected String[] accessPermissions; protected String[] moveAppsPermissions; protected String[] moveContainersPermissions; protected ArrayList<ModelObject> children; public Container() { setDefaultPermissions(); children = new ArrayList<ModelObject>(); } public Container(String storageId) { super(storageId); setDefaultPermissions(); // this.children = new ArrayList<ModelObject>(); } public Container(ContainerData data) { super(data.getStorageId()); // ArrayList<ModelObject> children = new ArrayList<ModelObject>(); for (ComponentData child : data.getChildren()) { children.add(ModelObject.build(child)); } // this.id = data.getId(); this.name = data.getName(); this.icon = data.getIcon(); this.template = data.getTemplate(); this.factoryId = data.getFactoryId(); this.title = data.getTitle(); this.description = data.getDescription(); this.width = data.getWidth(); this.height = data.getHeight(); this.accessPermissions = data.getAccessPermissions().toArray(new String[data.getAccessPermissions().size()]); List<String> permisssions = data.getMoveAppsPermissions(); this.moveAppsPermissions = permisssions != null ? permisssions.toArray(new String[permisssions.size()]) : null; permisssions = data.getMoveContainersPermissions(); this.moveContainersPermissions = permisssions != null ? permisssions.toArray(new String[permisssions.size()]) : null; this.children = children; } private void setDefaultPermissions() { List<String> permissions = ProtectedContainer.DEFAULT_MOVE_APPLICATIONS_PERMISSIONS; this.moveAppsPermissions = permissions.toArray(new String[permissions.size()]); permissions = ProtectedContainer.DEFAULT_MOVE_CONTAINERS_PERMISSIONS; this.moveContainersPermissions = permissions.toArray(new String[permissions.size()]); } public String getId() { return id; } public void setId(String s) { id = s; } public String getName() { return name; } public void setName(String s) { name = s; } public String getIcon() { return icon; } public void setIcon(String icon) { this.icon = icon; } public ArrayList<ModelObject> getChildren() { return children; } public void setChildren(ArrayList<ModelObject> children) { this.children = children; } public String getHeight() { return height; } public void setHeight(String height) { this.height = height; } public String getWidth() { return width; } public void setWidth(String width) { this.width = width; } public String getDescription() { return description; } public void setDescription(String des) { description = des; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getFactoryId() { return factoryId; } public void setFactoryId(String factoryId) { this.factoryId = factoryId; } public String getTemplate() { return template; } public void setTemplate(String template) { this.template = template; } public String[] getAccessPermissions() { return accessPermissions; } public void setAccessPermissions(String[] accessPermissions) { this.accessPermissions = accessPermissions; } public String[] getMoveAppsPermissions() { return moveAppsPermissions; } public void setMoveAppsPermissions(String[] moveAppsPermissions) { this.moveAppsPermissions = moveAppsPermissions; } public String[] getMoveContainersPermissions() { return moveContainersPermissions; } public void setMoveContainersPermissions(String[] moveContainersPermissions) { this.moveContainersPermissions = moveContainersPermissions; } public String getDecorator() { // Here to please jibx binding but not used anymore return null; } // Here to please jibx binding but not used anymore public void setDecorator(String decorator) { // Here to please jibx binding but not used anymore } @Override public ContainerData build() { List<ComponentData> children = buildChildren(); return new ContainerData(storageId, id, name, icon, template, factoryId, title, description, width, height, Utils.safeImmutableList(accessPermissions), Utils.safeImmutableList(moveAppsPermissions), Utils.safeImmutableList(moveContainersPermissions), children); } protected List<ComponentData> buildChildren() { if (children != null && children.size() > 0) { ArrayList<ComponentData> dataChildren = new ArrayList<ComponentData>(children.size()); for (int i = 0; i < children.size(); i++) { ModelObject node = children.get(i); ModelData data = node.build(); dataChildren.add((ComponentData) data); } return Collections.unmodifiableList(dataChildren); } else { return Collections.emptyList(); } } }