/*
* Copyright (C) 2003-2007 eXo Platform SAS.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see<http://www.gnu.org/licenses/>.
*/
package org.exoplatform.ecm.webui.component.admin;
import java.util.ArrayList;
import java.util.List;
import javax.portlet.PortletPreferences;
import org.exoplatform.services.log.Log;
import org.exoplatform.ecm.webui.utils.Utils;
import org.exoplatform.services.jcr.RepositoryService;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.webui.application.portlet.PortletRequestContext;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.core.UIComponent;
import org.exoplatform.webui.core.UIContainer;
import org.exoplatform.webui.ext.manager.UIAbstractManager;
import org.exoplatform.webui.ext.manager.UIAbstractManagerComponent;
/**
* Created by The eXo Platform SARL
* Author : Tran The Trong
* trongtt@gmail.com
* Sep 19, 2006
* 8:30:33 AM
*/
@ComponentConfig(
template = "app:/groovy/webui/component/admin/UIECMAdminWorkingArea.gtmpl"
)
public class UIECMAdminWorkingArea extends UIContainer {
/**
* Logger.
*/
private static final Log LOG = ExoLogger.getLogger(UIECMAdminWorkingArea.class.getName());
private String renderedCompId_ ;
public String getRenderedCompId() { return renderedCompId_ ; }
public void setRenderedCompId(String renderedId) { this.renderedCompId_ = renderedId ; }
public <T extends UIComponent> void setChild(Class<T> type) {
renderedCompId_ = getChild(type).getId();
setRenderedChild(type);
}
public UIECMAdminWorkingArea() throws Exception {}
public void init() throws Exception {
UIECMAdminPortlet portlet = getAncestorOfType(UIECMAdminPortlet.class);
UIECMAdminControlPanel controlPanel = portlet.getChild(UIECMAdminControlPanel.class);
List<UIAbstractManagerComponent> managers = controlPanel.getManagers();
List<UIAbstractManagerComponent> rejectedManagers = null;
if (managers == null) {
return;
}
for (UIAbstractManagerComponent manager : managers) {
UIAbstractManager uiManager = getChild(manager.getUIAbstractManagerClass());
if (uiManager == null) {
uiManager = addChild(manager.getUIAbstractManagerClass(), null, null);
if (renderedCompId_ == null) {
try {
uiManager.init();
renderedCompId_ = uiManager.getId();
} catch (Exception e) {
if (LOG.isErrorEnabled()) {
LOG.error("The manager " + uiManager.getClass() + " cannot be initialized, it will be unregistered", e);
}
if (rejectedManagers == null) {
rejectedManagers = new ArrayList<UIAbstractManagerComponent>();
}
rejectedManagers.add(manager);
removeChild(manager.getUIAbstractManagerClass());
}
} else {
uiManager.setRendered(false);
}
} else {
uiManager.refresh();
}
}
if (rejectedManagers != null) {
for (UIAbstractManagerComponent manager : rejectedManagers) {
controlPanel.unregister(manager);
}
}
}
public void checkRepository() throws Exception{
PortletRequestContext pcontext = (PortletRequestContext) WebuiRequestContext
.getCurrentInstance();
PortletPreferences pref = pcontext.getRequest().getPreferences();
try {
getApplicationComponent(RepositoryService.class).getCurrentRepository();
} catch (Exception e) {
String defaultRepo = getApplicationComponent(RepositoryService.class).getCurrentRepository()
.getConfiguration().getName();
pref.setValue(Utils.REPOSITORY, defaultRepo);
pref.store();
}
}
}