view flys-client/src/main/java/de/intevation/flys/client/shared/model/ToLoad.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 01b18db3b288
children
line wrap: on
line source
package de.intevation.flys.client.shared.model;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.HashMap;

import java.io.Serializable;

public class ToLoad implements Serializable
{

    public class StringPair {
        public String first;
        public String second;
        public StringPair(String first, String second) {
            this.first = first;
            this.second = second;
        }
        public int hashCode() {
            return first.hashCode() + second.hashCode();
        }
        public boolean equals(StringPair other) {
            return (this.second.equals(other.second)) && (this.first.equals(other.first));
        }
    }
    public static final String SYNTHETIC_KEY = "key-";

    protected Map<String, Map<StringPair, ArtifactFilter>> artifacts;

    public ToLoad() {
        artifacts = new HashMap<String, Map<StringPair, ArtifactFilter>>();
    }

    public static final String uniqueKey(Map<?, ?> map) {
        int idx = map.size();

        String key = SYNTHETIC_KEY + idx;
        while (map.containsKey(key)) {
            key = SYNTHETIC_KEY + ++idx;
        }
        return key;
    }

    public void add(
        String artifactName,
        String factory,
        String out,
        String name,
        String ids,
        String displayName
    ) {
        if (artifactName == null) {
            artifactName = uniqueKey(artifacts);
        }

        Map<StringPair, ArtifactFilter> artifact = artifacts.get(artifactName);

        if (artifact == null) {
            artifact = new HashMap<StringPair, ArtifactFilter>();
            artifacts.put(artifactName, artifact);
        }

        ArtifactFilter filter = artifact.get(factory);
        if (filter == null) {
            filter = new ArtifactFilter(factory);
            artifact.put(new StringPair(factory, displayName), filter);
        }

        filter.add(out, name, ids);
    }

    public boolean isEmpty() {
        return artifacts.isEmpty();
    }

    public List<Recommendation> toRecommendations() {
        List<Recommendation> recommendations = new ArrayList<Recommendation>();

        for (Map.Entry<String, Map<StringPair, ArtifactFilter>> all:
            artifacts.entrySet()
        ) {
            String masterArtifact = all.getKey();

            if (masterArtifact.startsWith(SYNTHETIC_KEY)) { // system data
                masterArtifact = null;
            }

            for (Map.Entry<StringPair, ArtifactFilter> entry:
                all.getValue().entrySet()
            ) {
                StringPair pair         = entry.getKey();
                String factory = pair.first;
                ArtifactFilter artifactFilter = entry.getValue();

                String                ids;
                Recommendation.Filter filter;

                if (masterArtifact == null) { // system data
                    ids    = artifactFilter.collectIds();
                    filter = null;
                }
                else { // user specific
                    ids    = null;
                    filter = artifactFilter.toFilter();
                }

                Recommendation recommendation = new Recommendation(
                    factory, ids, masterArtifact, filter);
                recommendation.setDisplayName(pair.second);

                recommendations.add(recommendation);
            }
        }

        return recommendations;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org