/* * Aipo is a groupware program developed by TOWN, Inc. * Copyright (C) 2004-2015 TOWN, Inc. * http://www.aipo.com * * 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.aimluck.eip.services.rundata; // Java classes import java.util.Stack; import javax.servlet.http.HttpServletRequest; import org.apache.jetspeed.om.profile.Profile; import org.apache.jetspeed.om.profile.ProfileLocator; import org.apache.jetspeed.portal.Portlet; import org.apache.jetspeed.services.Profiler; import org.apache.jetspeed.services.logging.JetspeedLogFactoryService; import org.apache.jetspeed.services.logging.JetspeedLogger; import org.apache.jetspeed.services.rundata.DefaultJetspeedRunData; import org.apache.jetspeed.services.rundata.JetspeedRunData; import org.apache.jetspeed.services.statemanager.SessionState; import com.aimluck.eip.http.HttpServletRequestLocator; /** * */ public class ALJetspeedRunData extends DefaultJetspeedRunData implements JetspeedRunData { @SuppressWarnings("unused") private static final JetspeedLogger logger = JetspeedLogFactoryService .getLogger(ALJetspeedRunData.class.getName()); @Override public Profile getCustomizedProfile() { Profile profile = null; HttpServletRequest request = HttpServletRequestLocator.get(); if (request != null) { try { profile = (Profile) request.getAttribute("customize-profile"); } catch (Throwable ignore) { // } } if (profile != null) { return profile; } try { ProfileLocator locator = (ProfileLocator) getProfile().clone(); String editMediaType = getParameters().getString("mtype"); if (editMediaType != null) { locator.setMediaType(editMediaType); } // get a profile to edit profile = (Profile) Profiler.getProfile(locator).clone(); } catch (Throwable ignore) { // } if (request != null && profile != null) { request.setAttribute("customize-profile", profile); } return profile; } // getCustomizedProfile /** * Set the psml profile being customized. * * @param profile * The Profile being customized. */ @Override public void setCustomizedProfile(Profile profile) { HttpServletRequest request = HttpServletRequestLocator.get(); if (request != null) { request.setAttribute("customize-profile", profile); } } @Override public void cleanupFromCustomization() { // get the customization state for this page SessionState customizationState = getPageSessionState(); // customizationState.removeAttribute("customize-stack"); customizationState.removeAttribute("customize-paneName"); customizationState.removeAttribute("customize-profile"); // customizationState.removeAttribute("customize-type"); customizationState.removeAttribute("customize-columns"); customizationState.removeAttribute("customize-mode"); customizationState.removeAttribute("customize-parameters"); setMode("default"); } // cleanupFromCustomization @Override public Portlet getCustomized() { Portlet p = null; HttpServletRequest request = HttpServletRequestLocator.get(); if (request != null) { try { p = (Portlet) request.getAttribute("customize-portlet"); } catch (Throwable ignore) { // ignore } } if (p != null) { return p; } SessionState customizationState = getPageSessionState(); Stack stack = (Stack) customizationState.getAttribute("customize-stack"); if ((stack != null) && (!stack.empty())) { p = (Portlet) stack.peek(); } /** * Save the title of this currently selected portlet * ------------------------ * -------------------------------------------------- last modified: * 11/06/01 Andreas Kempf, Siemens ICM S CP PE, Munich */ if ((p != null) && (stack.size() > 1)) { customizationState.setAttribute("customize-paneName", p.getTitle()); } else { customizationState.setAttribute("customize-paneName", "*"); } if (request != null) { request.setAttribute("customize-portlet", p); } return p; } @Override public void setCustomized(Portlet p) { HttpServletRequest request = HttpServletRequestLocator.get(); if (request != null) { request.setAttribute("customize-portlet", p); } // customization state info is in the page's session state SessionState customizationState = getPageSessionState(); Stack stack = (Stack) customizationState.getAttribute("customize-stack"); if (stack == null) { stack = new Stack(); customizationState.setAttribute("customize-stack", stack); } if (p == null) { if (!stack.empty()) { stack.pop(); } customizationState.setAttribute("customize-paneName", "*"); } else { if (stack.size() > 0) { Portlet last = (Portlet) stack.peek(); if ((last != null) && (p.getName().equals(last.getName())) && (p.getTitle().equals(last.getTitle()))) { // System.out.println ("Portlet already used!!!"); } else { stack.push(p); } } else { stack.push(p); } /** * Save the title of this currently selected portlet * ---------------------- * ---------------------------------------------------- last modified: * 11/06/01 Andreas Kempf, Siemens ICM S CP PE, Munich */ customizationState.setAttribute("customize-paneName", p.getTitle()); customizationState.setAttribute("customize-stack", stack); } } }