001 //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/src/org/deegree/portal/portlet/modules/actions/LoginUser.java $
002 /*---------------- FILE HEADER ------------------------------------------
003
004 This file is part of deegree.
005 Copyright (C) 2001-2008 by:
006 EXSE, Department of Geography, University of Bonn
007 http://www.giub.uni-bonn.de/deegree/
008 lat/lon GmbH
009 http://www.lat-lon.de
010
011 This library is free software; you can redistribute it and/or
012 modify it under the terms of the GNU Lesser General Public
013 License as published by the Free Software Foundation; either
014 version 2.1 of the License, or (at your option) any later version.
015
016 This library is distributed in the hope that it will be useful,
017 but WITHOUT ANY WARRANTY; without even the implied warranty of
018 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
019 Lesser General Public License for more details.
020
021 You should have received a copy of the GNU Lesser General Public
022 License along with this library; if not, write to the Free Software
023 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
024
025 Contact:
026
027 Andreas Poth
028 lat/lon GmbH
029 Aennchenstr. 19
030 53177 Bonn
031 Germany
032 E-Mail: poth@lat-lon.de
033
034 Prof. Dr. Klaus Greve
035 Department of Geography
036 University of Bonn
037 Meckenheimer Allee 166
038 53115 Bonn
039 Germany
040 E-Mail: greve@giub.uni-bonn.de
041
042 ---------------------------------------------------------------------------*/
043 package org.deegree.portal.portlet.modules.actions;
044
045 import java.io.File;
046
047 import javax.servlet.ServletContext;
048 import javax.servlet.http.HttpSession;
049
050 import org.deegree.portal.context.ViewContext;
051 import org.deegree.portal.context.WebMapContextFactory;
052 import org.deegree.security.drm.model.User;
053
054 /**
055 * This class can be used within listener classes that will be called if a user logs in into a
056 * portal. It reads the context documents from the users context directory that are storing the
057 * state of the maps when the users has logged out the last time. <BR>
058 * At the moment a concrete listener is available for Jetspeed 1.6
059 *
060 * @see org.deegree.portal.portlet.modules.actions.IGeoJetspeed16LoginUser
061 *
062 *
063 * @version $Revision: 9346 $
064 * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
065 * @author last edited by: $Author: apoth $
066 *
067 * @version $Revision: 9346 $, $Date: 2007-12-27 17:39:07 +0100 (Do, 27 Dez 2007) $
068 */
069 class LoginUser {
070
071 /**
072 * validates if a WMC directory for the passed user is already available and creates it if not.
073 * The user's WMC directory will be returned as in instance of <@link File>
074 *
075 * @param user
076 * @param sc
077 * @return user's WMC directory
078 */
079 File ensureDirectory( ServletContext sc, String user ) {
080
081 File dir = new File( sc.getRealPath( "WEB-INF/wmc/" + user ) );
082 if ( !dir.exists() ) {
083 dir.mkdir();
084 }
085
086 return dir;
087 }
088
089 /**
090 *
091 * @param dir
092 * @param ses
093 * @param user
094 */
095 void readContextDocuments( File dir, HttpSession ses, User user ) {
096 File[] files = dir.listFiles();
097 // we have to look for all files stored in the user's WMC
098 // directory and read those which can be identified as stored
099 // when the has been logged out the last time. These files will
100 // read and stored in the users session where the file name
101 // ( without extension ) is the attributes key and will
102 // be used by the portlets to access the assigned WMC
103 if ( files != null ) {
104 for ( int i = 0; i < files.length; i++ ) {
105 String name = files[i].getName();
106 if ( name.endsWith( AbstractPortletPerform.CURRENT_WMC + ".xml" ) ) {
107
108 int pos = name.lastIndexOf( '.' );
109 name = name.substring( 0, pos );
110 ViewContext vc = null;
111 try {
112 vc = WebMapContextFactory.createViewContext( files[i].toURL(), user, null );
113 } catch ( Exception e ) {
114 e.printStackTrace();
115 }
116 ses.setAttribute( name, vc );
117
118 }
119 }
120 }
121 }
122
123 }