/* * Copyright 2000-2001,2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jetspeed.modules.actions.portlets; import java.util.List; import java.util.Iterator; import java.util.Map; import java.util.HashMap; import org.apache.jetspeed.portal.portlets.VelocityPortlet; // Turbine stuff import org.apache.turbine.util.RunData; // Velocity Stuff import org.apache.velocity.context.Context; import org.apache.jetspeed.services.forward.ForwardService; import org.apache.jetspeed.services.forward.configuration.Forward; import org.apache.jetspeed.services.forward.configuration.PortletForward; import org.apache.jetspeed.util.ServiceUtil; import org.apache.jetspeed.util.PortletConfigState; import org.apache.jetspeed.util.PortletSessionState; import org.apache.jetspeed.util.HtmlItem; /** * Demo of Forward stuff * * * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a> * @version $Id: ForwardDemoAction.java,v 1.6 2004/02/23 02:56:58 jford Exp $ */ public class ForwardDemoAction extends VelocityPortletAction { private static final String PARAM_NEXT = "fda_next"; private static final String PARAM_TARGET = "fda_target"; private static final String VAR_FORWARDS = "fda_forwards"; private static final String VAR_TARGETS = "fda_targets"; private static final String PORTLET_NAME = "ForwardDemo"; // this is fu'd up /** * Subclasses must override this method to provide default behavior * for the portlet action */ protected void buildNormalContext( VelocityPortlet portlet, Context context, RunData rundata ) { String next = (String)PortletSessionState.getAttribute(rundata, PARAM_NEXT); if (null == next) { next = (String)PortletConfigState.getParameter(portlet, rundata, PARAM_NEXT, "NOT_SET"); PortletSessionState.setAttribute(rundata, PARAM_NEXT, next); } String target = (String)PortletSessionState.getAttribute(rundata, PARAM_TARGET); if (null == target) { target = (String)PortletConfigState.getParameter(portlet, rundata, PARAM_TARGET, "NOT_SET"); PortletSessionState.setAttribute(rundata, PARAM_TARGET, target); } List forwards = (List)PortletSessionState.getAttribute(rundata, VAR_FORWARDS); if (null == forwards) { forwards = getAllForwards(next); PortletSessionState.setAttribute(rundata, VAR_FORWARDS, forwards); } List portletForwards = (List)PortletSessionState.getAttribute(rundata, VAR_TARGETS); if (null == portletForwards) { portletForwards = getPortletForwards(target); PortletSessionState.setAttribute(rundata, VAR_TARGETS, portletForwards); } context.put(VAR_FORWARDS, forwards); context.put(PARAM_NEXT, next); context.put(VAR_TARGETS, portletForwards); context.put(PARAM_TARGET, target); } public void doUpdate(RunData rundata, Context context) { // get posted new target String next = (String)rundata.getParameters().getString(PARAM_NEXT); if (next!=null) { PortletSessionState.setAttribute( rundata, PARAM_NEXT, next); List forwards = (List)PortletSessionState.getAttribute(rundata, VAR_FORWARDS); if (forwards != null) { Iterator it = forwards.iterator(); while (it.hasNext()) { HtmlItem item = (HtmlItem)it.next(); if (item.getName().equals(next)) { item.setSelected(true); } else { item.setSelected(false); } } } ForwardService forward = (ForwardService)ServiceUtil.getServiceByName(ForwardService.SERVICE_NAME); forward.forward(rundata, next); } } private List getAllForwards(String next) { ForwardService fs = (ForwardService)ServiceUtil.getServiceByName(ForwardService.SERVICE_NAME); List vList = new java.util.LinkedList(); Iterator it = fs.getForwards().iterator(); int index = 1; while (it.hasNext()) { Forward forward = (Forward)it.next(); boolean selected = forward.getName().equals(next); vList.add(new HtmlItem(index, forward.getName(), selected)); index++; } return vList; } public void doTarget(RunData rundata, Context context) { // get posted new target String target = (String)rundata.getParameters().getString(PARAM_TARGET); if (target!=null) { PortletSessionState.setAttribute( rundata, PARAM_TARGET, target); List forwards = (List)PortletSessionState.getAttribute(rundata, VAR_TARGETS); if (forwards != null) { Iterator it = forwards.iterator(); while (it.hasNext()) { HtmlItem item = (HtmlItem)it.next(); if (item.getName().equals(target)) { item.setSelected(true); } else { item.setSelected(false); } } } ForwardService fs = (ForwardService)ServiceUtil.getServiceByName(ForwardService.SERVICE_NAME); fs.forward(rundata, PORTLET_NAME, target); } } private List getPortletForwards(String target) { ForwardService fs = (ForwardService)ServiceUtil.getServiceByName(ForwardService.SERVICE_NAME); List vList = new java.util.LinkedList(); Iterator it = fs.getPortletForwards().iterator(); int index = 1; while (it.hasNext()) { PortletForward forward = (PortletForward)it.next(); boolean selected = forward.getTarget().equals(target); vList.add(new HtmlItem(index, forward.getTarget(), selected)); index++; } return vList; } public void doDynamic(RunData rundata, Context context) { Map map = new HashMap(); map.put("dynamic", "33"); ForwardService fs = (ForwardService)ServiceUtil.getServiceByName(ForwardService.SERVICE_NAME); fs.forwardDynamic(rundata, "ApacheGroupNews", map); } public void doDynamic2(RunData rundata, Context context) { Map map = new HashMap(); map.put("dynamic", "44"); map.put("msgok", "no"); map.put("msg", "3"); ForwardService fs = (ForwardService)ServiceUtil.getServiceByName(ForwardService.SERVICE_NAME); fs.forwardDynamic(rundata, PORTLET_NAME, "Success", map); } }