/* * * Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved. * * This file is part of Entando software. * Entando is a free software; * You can redistribute it and/or modify it * under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; version 2. * * See the file License for the specific language governing permissions * and limitations under the License * * * * Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved. * */ package com.agiletec.plugins.jpmyportalplus.aps.system.services.config; import java.util.List; import org.entando.entando.aps.system.services.widgettype.WidgetType; import org.entando.entando.aps.system.services.widgettype.events.WidgetTypeChangedEvent; import org.entando.entando.aps.system.services.widgettype.events.WidgetTypeChangedObserver; import com.agiletec.aps.system.ApsSystemUtils; import com.agiletec.aps.system.common.AbstractService; import com.agiletec.aps.system.exception.ApsSystemException; import com.agiletec.aps.system.services.baseconfig.ConfigInterface; import com.agiletec.plugins.jpmyportalplus.aps.system.JpmyportalplusSystemConstants; import com.agiletec.plugins.jpmyportalplus.aps.system.services.config.model.MyPortalConfig; import com.agiletec.plugins.jpmyportalplus.aps.system.services.config.parse.MyPortalPlusConfigDOM; import com.agiletec.plugins.jpmyportalplus.aps.system.services.userconfig.IPageUserConfigDAO; /** * @author E.Santoboni */ public class MyPortalConfigManager extends AbstractService implements IMyPortalConfigManager, WidgetTypeChangedObserver { @Override public void init() throws Exception { this.loadConfig(); this.buildCustomizableShowletsSet(); this.syncPageModelUserDatabase(); ApsSystemUtils.getLogger().debug(this.getClass().getName() + ": initialized, the code of the'void showlet' is '"+_voidShowletCode+"'"); } @Override public void updateFromShowletTypeChanged(WidgetTypeChangedEvent event) { try { this.init(); } catch (Throwable t) { ApsSystemUtils.logThrowable(t, this, "updateFromShowletTypeChanged", "Error inittializating manager"); } } private void loadConfig() throws ApsSystemException { try { String xml = this.getConfigManager().getConfigItem(JpmyportalplusSystemConstants.MYPORTALPLUS_CONFIG_ITEM); if (xml == null) { throw new ApsSystemException("Missing configuration item: "+ JpmyportalplusSystemConstants.MYPORTALPLUS_CONFIG_ITEM); } MyPortalPlusConfigDOM configDom = new MyPortalPlusConfigDOM(); this.setConfig(configDom.extractConfig(xml)); } catch (Throwable t) { ApsSystemUtils.logThrowable(t, this, "loadConfig"); throw new ApsSystemException("Error during initialization", t); } } /** * Get from the configuration the list of the showlets that can be customized in a page model. */ private void buildCustomizableShowletsSet() { List<WidgetType> showlets = this.getPageUserConfigDAO().buildCustomizableShowletsList(this.getConfig()); this.setCustomizableShowlets(showlets); } private void syncPageModelUserDatabase() { this.getPageUserConfigDAO().syncCustomization(this.getCustomizableShowlets(), this.getVoidShowletCode()); } @Override public MyPortalConfig getConfig() { return _config; } protected void setConfig(MyPortalConfig config) { this._config = config; } @Override public void saveConfig(MyPortalConfig config) throws ApsSystemException { try { MyPortalPlusConfigDOM configDom = new MyPortalPlusConfigDOM(); String xml = configDom.createConfigXml(config); this.getConfigManager().updateConfigItem(JpmyportalplusSystemConstants.MYPORTALPLUS_CONFIG_ITEM, xml); this.setConfig(config); this.buildCustomizableShowletsSet(); this.syncPageModelUserDatabase(); } catch (Throwable t) { ApsSystemUtils.logThrowable(t, this, "saveConfig"); throw new ApsSystemException("Error saving myportal configuration", t); } } @Override public List<WidgetType> getCustomizableShowlets() { return _customizableShowlets; } public void setCustomizableShowlets(List<WidgetType> customizableShowlets) { this._customizableShowlets = customizableShowlets; } @Override public String getVoidShowletCode() { return _voidShowletCode; } public void setVoidShowletCode(String voidShowletCode) { this._voidShowletCode = voidShowletCode; } protected IPageUserConfigDAO getPageUserConfigDAO() { return _pageUserConfigDAO; } public void setPageUserConfigDAO(IPageUserConfigDAO pageModelUserConfigDAO) { this._pageUserConfigDAO = pageModelUserConfigDAO; } protected ConfigInterface getConfigManager() { return _configManager; } public void setConfigManager(ConfigInterface configManager) { this._configManager = configManager; } private List<WidgetType> _customizableShowlets; private String _voidShowletCode; private ConfigInterface _configManager; private IPageUserConfigDAO _pageUserConfigDAO; private MyPortalConfig _config; }