/**
* 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.pom.config.Utils;
import org.exoplatform.portal.pom.data.ApplicationData;
import org.exoplatform.portal.pom.data.ModelData;
import org.exoplatform.portal.pom.spi.gadget.Gadget;
import org.exoplatform.portal.pom.spi.portlet.Portlet;
import org.exoplatform.portal.pom.spi.wsrp.WSRP;
/**
* May 13, 2004
*
* @author: Tuan Nguyen
* @email: tuan08@users.sourceforge.net
* @version: $Id: Portlet.java,v 1.7 2004/09/30 01:00:05 tuan08 Exp $
**/
public class Application<S> extends ModelObject {
/** The application state. */
private ApplicationState<S> state;
private String id;
private String title;
private String icon;
private String description;
private boolean showInfoBar;
private boolean showApplicationState = true;
private boolean showApplicationMode = true;
private String theme;
private String width;
private String height;
private Properties properties;
private String[] accessPermissions;
private boolean isModifiable;
/** We cannot allow the type to change once the object is created. */
private final ApplicationType<S> type;
public Application(ApplicationData<S> data) {
super(data.getStorageId());
// For now here, need to make a real NAME and
// remove disturbing storage name
this.storageName = data.getStorageName();
//
this.state = data.getState();
this.id = data.getId();
this.title = data.getTitle();
this.icon = data.getIcon();
this.description = data.getDescription();
this.showInfoBar = data.isShowInfoBar();
this.showApplicationState = data.isShowApplicationState();
this.showApplicationMode = data.isShowApplicationMode();
this.theme = data.getTheme();
this.width = data.getWidth();
this.height = data.getHeight();
this.properties = new Properties(data.getProperties());
this.accessPermissions = data.getAccessPermissions().toArray(new String[data.getAccessPermissions().size()]);
this.type = data.getType();
}
public Application(ApplicationType<S> type, String storageId) {
super(storageId);
//
this.type = type;
}
public Application(ApplicationType<S> type) {
super();
//
this.type = type;
}
public ApplicationType<S> getType() {
return type;
}
public String getWidth() {
return width;
}
public void setWidth(String s) {
width = s;
}
public String getHeight() {
return height;
}
public void setHeight(String s) {
height = s;
}
public String getId() {
return id;
}
public void setId(String value) {
id = value;
}
public String[] getAccessPermissions() {
return accessPermissions;
}
public void setAccessPermissions(String[] accessPermissions) {
this.accessPermissions = accessPermissions;
}
public boolean isModifiable() {
return isModifiable;
}
public void setModifiable(boolean modifiable) {
isModifiable = modifiable;
}
public ApplicationState<S> getState() {
return state;
}
public void setState(ApplicationState<S> value) {
state = value;
}
public boolean getShowInfoBar() {
return showInfoBar;
}
public void setShowInfoBar(boolean b) {
showInfoBar = b;
}
public boolean getShowApplicationState() {
return showApplicationState;
}
public void setShowApplicationState(boolean b) {
showApplicationState = b;
}
public boolean getShowApplicationMode() {
return showApplicationMode;
}
public void setShowApplicationMode(boolean b) {
showApplicationMode = b;
}
public String getIcon() {
return icon;
}
public void setIcon(String value) {
icon = value;
}
public String getDescription() {
return description;
}
public void setDescription(String des) {
description = des;
}
public String getTitle() {
return title;
}
public void setTitle(String value) {
title = value;
}
public Properties getProperties() {
if (properties == null)
properties = new Properties();
return properties;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
public String getTheme() {
return theme;
}
public void setTheme(String theme) {
this.theme = theme;
}
@Override
public ModelData build() {
return new ApplicationData<S>(storageId, storageName, getType(), state, id, title, icon, description, showInfoBar,
showApplicationState, showApplicationMode, theme, width, height, Utils.safeImmutableMap(properties),
Utils.safeImmutableList(accessPermissions));
}
public static Application<Gadget> createGadgetApplication(ApplicationData<Gadget> data) {
return new Application<Gadget>(data);
}
public static Application<Gadget> createGadgetApplication(String storageId) {
return new Application<Gadget>(ApplicationType.GADGET, storageId);
}
public static Application<Gadget> createGadgetApplication() {
return new Application<Gadget>(ApplicationType.GADGET);
}
public static Application<Portlet> createPortletApplication(ApplicationData<Portlet> data) {
return new Application<Portlet>(data);
}
public static Application<Portlet> createPortletApplication(String storageId) {
return new Application<Portlet>(ApplicationType.PORTLET, storageId);
}
public static Application<Portlet> createPortletApplication() {
return new Application<Portlet>(ApplicationType.PORTLET);
}
public static Application<WSRP> createWSRPApplication(ApplicationData<WSRP> wsrpwsrpIdApplicationData) {
return new Application<WSRP>(wsrpwsrpIdApplicationData);
}
public static Application<WSRP> createWSRPApplication() {
return new Application<WSRP>(ApplicationType.WSRP_PORTLET);
}
public static Application<WSRP> createWSRPApplication(String storageId) {
return new Application<WSRP>(ApplicationType.WSRP_PORTLET, storageId);
}
}