Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/LocationSelect.java @ 4215:c179cd02177d
Logout the current user
Add code to the logout button to remove the current user from the session and to
redirect the browser window to the login page.
Part of flys/issue916 (Logout: "Abmelden" Knopf mit Funktion belegen)
author | Björn Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Tue, 23 Oct 2012 09:59:16 +0200 |
parents | d9af29a4bb85 |
children |
line wrap: on
line source
package de.intevation.flys.artifacts.states; import gnu.trove.TDoubleArrayList; import org.apache.log4j.Logger; import org.w3c.dom.Element; import de.intevation.artifacts.Artifact; import de.intevation.artifacts.CallContext; import de.intevation.artifacts.common.utils.XMLUtils; import de.intevation.artifactdatabase.data.StateData; import de.intevation.flys.artifacts.FLYSArtifact; /** * This state is used to realize the input of multiple locations as string. * * The string should be a whitespace separated list of double values where each * double value represents a location. * * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public class LocationSelect extends LocationDistanceSelect { /** The logger used in this class.*/ private static Logger logger = Logger.getLogger(LocationSelect.class); public LocationSelect() { } /** UI Provider (which input method should the client provide to user. */ @Override protected String getUIProvider() { return "location_panel"; } @Override protected Element[] createItems( XMLUtils.ElementCreator cr, Artifact artifact, String name, CallContext context) { double[] minmax = getMinMax(artifact); double minVal = Double.MIN_VALUE; double maxVal = Double.MAX_VALUE; if (minmax != null) { minVal = minmax[0]; maxVal = minmax[1]; } else { logger.warn("Could not read min/max distance values!"); } if (name.equals(LOCATIONS)) { Element min = createItem( cr, new String[] {"min", new Double(minVal).toString()}); Element max = createItem( cr, new String[] {"max", new Double(maxVal).toString()}); return new Element[] { min, max }; } return null; } /** Validates data from artifact. */ @Override public boolean validate(Artifact artifact) throws IllegalArgumentException { logger.debug("LocationSelect.validate"); FLYSArtifact flys = (FLYSArtifact) artifact; StateData data = getData(flys, LOCATIONS); String locationStr = data != null ? (String) data.getValue() : null; if (locationStr == null || locationStr.length() == 0) { logger.error("No locations given."); throw new IllegalArgumentException("error_empty_state"); } double[] minmax = getMinMax(artifact); double[] mm = extractLocations(locationStr); logger.debug("Inserted min location: " + mm[0]); logger.debug("Inserted max location: " + mm[mm.length-1]); return validateBounds(minmax[0], minmax[1], mm[0], mm[mm.length-1], 0d); } /** * This method takes a string that consist of whitespace separated double * values and returns the double values as array. * * @param locationStr The locations inserted in this state. * * @return the locations as array. */ protected double[] extractLocations(String locationStr) { String[] tmp = locationStr.split(" "); TDoubleArrayList locations = new TDoubleArrayList(); for (String l: tmp) { try { locations.add(Double.parseDouble(l)); } catch (NumberFormatException nfe) { logger.warn(nfe, nfe); } } locations.sort(); return locations.toNativeArray(); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :