/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved. * This code is licensed under the GPL 2.0 license, availible at the root * application directory. */ package org.vfny.geoserver.global; import org.geotools.coverage.grid.GridCoverage2D; import org.geotools.data.DataStore; import org.opengis.coverage.grid.*; import org.opengis.feature.simple.SimpleFeatureType; import org.opengis.feature.type.AttributeDescriptor; import org.vfny.geoserver.config.AttributeTypeInfoConfig; import org.vfny.geoserver.config.CoverageConfig; import org.vfny.geoserver.config.CoverageStoreConfig; import org.vfny.geoserver.config.DataStoreConfig; import org.vfny.geoserver.config.FeatureTypeConfig; import org.vfny.geoserver.config.NameSpaceConfig; import org.vfny.geoserver.config.StyleConfig; import java.util.Locale; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener; /** * Represents a User for GeoServer. * * <p> * Used as a typesafe Session container. This is an alternative to using calls * to request.getAttributes( key ) and casting. * </p> * * <p> * The User object is saved in session scope by ConfigAction: * </p> * <pre><code> * HttpSession session = request.getSession(); * User user = request.getAttributes( UserContainer.WEB_CONTAINER_KEY ); * if( user == null ){ * user = new UserContainer( request.getLocal() ); * session.setAttributes( UserContainer.WEB_CONTAINER_KEY, user ); * } * </code></pre> * * <p> * This class is based on the UserContainer class outlined in the book * "Programming Jakarta Struts" by Chuck Cavaness. * </p> * * @author jgarnett, Refractions Research, Inc. * @author $Author: jive $ (last modification) * @version $Id$ */ public class UserContainer implements HttpSessionBindingListener { public final static String SESSION_KEY = "GEOSERVER.USER"; /** User name for this user */ private String username; /** User's locale */ private Locale locale; /** * Selected dataFormatId * */ private String dataFormatID; /** /** Selected dataStoreId */ private String dataStoreID; /** Selected prefix */ private String prefix; /** * Selected CoverageStoreConfig held in session for creation/editing. * */ private CoverageStoreConfig dataFormatConfig; /** * Selected DataStoreConfig held in session for creation/editing. */ private DataStoreConfig dataStoreConfig; /** * Cached Format being worked on. * * <p> * This should agree with the value of dataFormatConfig. * </p> * */ private Format dataFormat; /** * Cached DataStore being worked on. * * <p> * This should agree with the value of dataStoreConfig. * </p> */ private DataStore dataStore; /** * Cached NamespaceConfig held in session for creation/editing. */ private NameSpaceConfig namespaceConfig; /** Selected styleId */ private StyleConfig style; /** * Selected FeatureType Config held in session for editing/creation. * * <p> * Pending: Make change over to UserContainer. * </p> */ private FeatureTypeConfig featureTypeConfig; /** * */ private CoverageConfig coverageConfig; /** * Cached FeatureType being worked on. * * <p> * This should agree with the value of featureTypeConfig. * </p> * * <p></p> */ private SimpleFeatureType featureType; /** * */ private GridCoverage2D coverage; /** * Selected AttributeDescriptor being worked on. * * <p> * Pending: Make change over to User Container. * </p> * * <p></p> */ private AttributeTypeInfoConfig attributeTypeConfig; /** * Cached AttributeDescriptor being worked on. * * <p> * This should agree with the value of attributeTypeConfig. * </p> * * <p></p> */ private AttributeDescriptor attributeType; /** * New DataStore info before it is added to DataConfig. * * <p> * Unlike the DataStores in DataConfig this one does not yet have to work. * </p> */ private DataStoreConfig newDataStore; /** * Create User Container for the current locale */ public UserContainer() { this(Locale.getDefault()); } /** * Create User Container for the provided locale * * @param local DOCUMENT ME! */ public UserContainer(Locale local) { } /** * User's Locale. * * <p> * Used to format messages. Should be used in conjunction with * internatalization support. * </p> * * @return Locale for the User. */ public Locale getLocale() { return locale; } /** * Set the user's Locale. * * @param locale User's locale. */ public void setLocale(Locale locale) { this.locale = locale; } /** * Session callback. * * @param arg0 * * @see javax.servlet.http.HttpSessionBindingListener#valueBound(javax.servlet.http.HttpSessionBindingEvent) */ public void valueBound(HttpSessionBindingEvent arg0) { // not needed } /** * Clean up user resources when unbound from session. * * @param arg0 * * @see javax.servlet.http.HttpSessionBindingListener#valueUnbound(javax.servlet.http.HttpSessionBindingEvent) */ public void valueUnbound(HttpSessionBindingEvent arg0) { cleanUp(); } /** * Clean up user resources. */ private void cleanUp() { locale = null; dataStoreID = null; } /** * Access attributeType property. * * @return Returns the attributeType. */ public AttributeDescriptor getAttributeType() { return attributeType; } /** * Set attributeType to attributeType. * * @param attributeType The attributeType to set. */ public void setAttributeType(AttributeDescriptor attributeType) { this.attributeType = attributeType; } /** * Access attributeTypeConfig property. * * @return Returns the attributeTypeConfig. */ public AttributeTypeInfoConfig getAttributeTypeConfig() { return attributeTypeConfig; } /** * Set attributeTypeConfig to attributeTypeConfig. * * @param attributeTypeConfig The attributeTypeConfig to set. */ public void setAttributeTypeConfig(AttributeTypeInfoConfig attributeTypeConfig) { this.attributeTypeConfig = attributeTypeConfig; } /** * Access dataStore property. * * @return Returns the dataStore. */ public DataStore getDataStore() { return dataStore; } /** * Set dataStore to dataStore. * * @param dataStore The dataStore to set. */ public void setDataStore(DataStore dataStore) { this.dataStore = dataStore; } /** * Access dataStoreConfig property. * * @return Returns the dataStoreConfig. */ public DataStoreConfig getDataStoreConfig() { return dataStoreConfig; } /** * Set dataStoreConfig to dataStoreConfig. * * @param dataStoreConfig The dataStoreConfig to set. */ public void setDataStoreConfig(DataStoreConfig dataStoreConfig) { this.dataStoreConfig = dataStoreConfig; } /** * Access dataStoreID property. * * @return Returns the dataStoreID. */ public String getDataStoreID() { return dataStoreConfig.getId(); } /** * Access featureType property. * * @return Returns the featureType. */ public SimpleFeatureType getFeatureType() { return featureType; } /** * Access featureTypeConfig property. * * @return Returns the featureTypeConfig. */ public FeatureTypeConfig getFeatureTypeConfig() { return featureTypeConfig; } /** * Access newDataStore property. * * @return Returns the newDataStore. */ public DataStoreConfig getNewDataStore() { return newDataStore; } /** * Set newDataStore to newDataStore. * * @param newDataStore The newDataStore to set. */ public void setNewDataStore(DataStoreConfig newDataStore) { this.newDataStore = newDataStore; } /** * Access username property. * * @return Returns the username. */ public String getUsername() { return username; } /** * Set username to username. * * @param username The username to set. */ public void setUsername(String username) { this.username = username; } /** * Set dataStoreID to dataStoreID. * * @param dataStoreID The dataStoreID to set. */ public void setDataStoreID(String dataStoreID) { this.dataStoreID = dataStoreID; } /** * Set featureType to featureType. * * @param featureType The featureType to set. */ public void setFeatureType(SimpleFeatureType featureType) { this.featureType = featureType; } /** * Set featureTypeConfig to featureTypeConfig. * * @param featureTypeConfig The featureTypeConfig to set. */ public void setFeatureTypeConfig(FeatureTypeConfig featureTypeConfig) { this.featureTypeConfig = featureTypeConfig; } /** * Access namespaceConfig property. * * @return Returns the namespaceConfig. */ public NameSpaceConfig getNamespaceConfig() { return namespaceConfig; } /** * Set namespaceConfig to namespaceConfig. * * @param namespaceConfig The namespaceConfig to set. */ public void setNamespaceConfig(NameSpaceConfig namespaceConfig) { this.namespaceConfig = namespaceConfig; } /** * Access prefix property. * * @return Returns the prefix. */ public String getPrefix() { return prefix; } /** * Set prefix to prefix. * * @param prefix The prefix to set. */ public void setPrefix(String prefix) { this.prefix = prefix; } /** * Access style property. * * @return Returns the style. */ public StyleConfig getStyle() { return style; } /** * Set style to style. * * @param style The style to set. */ public void setStyle(StyleConfig style) { this.style = style; } /** * @return Returns the dataFormat. * */ public Format getDataFormat() { return dataFormat; } /** * @param dataFormat The dataFormat to set. * */ public void setDataFormat(Format dataFormat) { this.dataFormat = dataFormat; } /** * @return Returns the dataFormatConfig. * */ public CoverageStoreConfig getDataFormatConfig() { return dataFormatConfig; } /** * @param dataFormatConfig The dataFormatConfig to set. * */ public void setDataFormatConfig(CoverageStoreConfig dataFormatConfig) { this.dataFormatConfig = dataFormatConfig; } /** * @return Returns the dataFormatID. * */ public String getDataFormatID() { return dataFormatID; } /** * @param dataFormatID The dataFormatID to set. * */ public void setDataFormatID(String dataFormatID) { this.dataFormatID = dataFormatID; } /** * @return Returns the coverageConfig. * */ public CoverageConfig getCoverageConfig() { return coverageConfig; } /** * @param coverageConfig The coverageConfig to set. * */ public void setCoverageConfig(CoverageConfig coverageConfig) { this.coverageConfig = coverageConfig; } /** * @return Returns the coverage. * */ public GridCoverage2D getCoverage() { return coverage; } /** * @param coverage The coverage to set. * */ public void setCoverage(GridCoverage2D coverage) { this.coverage = coverage; } }