franta-hg@1: /* ================================================================ franta-hg@1: * Cewolf : Chart enabling Web Objects Framework franta-hg@1: * ================================================================ franta-hg@1: * franta-hg@1: * Project Info: http://cewolf.sourceforge.net franta-hg@1: * Project Lead: Guido Laures (guido@laures.de); franta-hg@1: * franta-hg@1: * (C) Copyright 2002, by Guido Laures franta-hg@1: * franta-hg@1: * This library is free software; you can redistribute it and/or modify it under the terms franta-hg@1: * of the GNU Lesser General Public License as published by the Free Software Foundation; franta-hg@1: * either version 2.1 of the License, or (at your option) any later version. franta-hg@1: * franta-hg@1: * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; franta-hg@1: * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. franta-hg@1: * See the GNU Lesser General Public License for more details. franta-hg@1: * franta-hg@1: * You should have received a copy of the GNU Lesser General Public License along with this franta-hg@1: * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, franta-hg@1: * Boston, MA 02111-1307, USA. franta-hg@1: */ franta-hg@1: package de.laures.cewolf.storage; franta-hg@1: franta-hg@1: import java.io.Serializable; franta-hg@1: franta-hg@1: import javax.servlet.ServletContext; franta-hg@1: import javax.servlet.http.HttpServletRequest; franta-hg@1: import javax.servlet.http.HttpSession; franta-hg@1: import javax.servlet.jsp.PageContext; franta-hg@1: franta-hg@1: import de.laures.cewolf.CewolfException; franta-hg@1: import de.laures.cewolf.ChartImage; franta-hg@1: import de.laures.cewolf.Storage; franta-hg@1: import de.laures.cewolf.taglib.util.KeyGenerator; franta-hg@1: franta-hg@1: /** franta-hg@1: * Storage stores images in session, but expires them after a certain time. franta-hg@1: * This expiration time defaults to 300 seconds, and can be changed by adding franta-hg@1: * the timeout="xxx" parameter to and tags. franta-hg@1: * franta-hg@1: * @author brianf franta-hg@1: */ franta-hg@1: public class LongTermSessionStorage implements Storage franta-hg@1: { franta-hg@1: franta-hg@1: public final String getKey( ChartImage cid ) franta-hg@1: { franta-hg@1: return String.valueOf(KeyGenerator.generateKey((Serializable) cid)); franta-hg@1: } franta-hg@1: franta-hg@1: /* franta-hg@1: * (non-Javadoc) franta-hg@1: * franta-hg@1: * @see de.laures.cewolf.Storage#storeChartImage(de.laures.cewolf.ChartImage, franta-hg@1: * javax.servlet.jsp.PageContext) franta-hg@1: */ franta-hg@1: public String storeChartImage( ChartImage chartImage, PageContext pageContext ) throws CewolfException franta-hg@1: { franta-hg@1: HttpSession session = pageContext.getSession(); franta-hg@1: SessionStorageGroup ssg = (SessionStorageGroup) session.getAttribute("CewolfCharts"); franta-hg@1: if ( ssg == null ) franta-hg@1: { franta-hg@1: ssg = new SessionStorageGroup(); franta-hg@1: session.setAttribute("CewolfCharts", ssg); franta-hg@1: } franta-hg@1: String cid = getKey(chartImage); franta-hg@1: SessionStorageItem ssi = new SessionStorageItem(chartImage, cid, chartImage.getTimeoutTime()); franta-hg@1: ssg.put(cid, ssi); franta-hg@1: franta-hg@1: return cid; franta-hg@1: } franta-hg@1: franta-hg@1: /* franta-hg@1: * (non-Javadoc) franta-hg@1: * franta-hg@1: * @see de.laures.cewolf.Storage#getChartImage(java.lang.String, franta-hg@1: * javax.servlet.http.HttpServletRequest) franta-hg@1: */ franta-hg@1: public ChartImage getChartImage( String id, HttpServletRequest request ) franta-hg@1: { franta-hg@1: HttpSession session = request.getSession(); franta-hg@1: ChartImage chart = null; franta-hg@1: SessionStorageGroup ssg = (SessionStorageGroup) session.getAttribute("CewolfCharts"); franta-hg@1: if ( ssg != null ) franta-hg@1: { franta-hg@1: SessionStorageItem ssi = (SessionStorageItem) ssg.get(id); franta-hg@1: if ( ssi != null ) franta-hg@1: { franta-hg@1: chart = ssi.getChart(); franta-hg@1: } franta-hg@1: } franta-hg@1: franta-hg@1: return chart; franta-hg@1: } franta-hg@1: /* franta-hg@1: * (non-Javadoc) franta-hg@1: * franta-hg@1: * @see de.laures.cewolf.Storage#init(javax.servlet.ServletContext) franta-hg@1: */ franta-hg@1: public void init( ServletContext servletContext ) throws CewolfException { franta-hg@1: } franta-hg@1: franta-hg@1: /** franta-hg@1: * @see de.laures.cewolf.Storage#removeChartImage(java.lang.String, javax.servlet.jsp.PageContext) franta-hg@1: */ franta-hg@1: public String removeChartImage(String cid, HttpServletRequest request) throws CewolfException { franta-hg@1: HttpSession session = request.getSession(); franta-hg@1: // No session exit franta-hg@1: if (session == null) franta-hg@1: { franta-hg@1: return cid; franta-hg@1: } franta-hg@1: SessionStorageGroup ssg = (SessionStorageGroup) session.getAttribute("CewolfCharts"); franta-hg@1: if ( ssg == null ) franta-hg@1: { franta-hg@1: // No group exit franta-hg@1: return cid; franta-hg@1: } franta-hg@1: ssg.remove(cid); franta-hg@1: return cid; franta-hg@1: } franta-hg@1: }