sascha@822: package de.intevation.flys.client.shared.model; sascha@822: sascha@846: import java.util.ArrayList; sascha@846: import java.util.List; sascha@826: import java.util.Map; sascha@826: import java.util.HashMap; sascha@826: sascha@822: import java.io.Serializable; sascha@822: sascha@822: public class ToLoad implements Serializable sascha@822: { sascha@846: public static final String SYNTHETIC_KEY = "key-"; sascha@846: sascha@831: protected Map> artifacts; sascha@826: sascha@831: public ToLoad() { sascha@831: artifacts = new HashMap>(); sascha@822: } sascha@822: sascha@834: public static final String uniqueKey(Map map) { sascha@834: int idx = map.size(); sascha@834: sascha@846: String key = SYNTHETIC_KEY + idx; sascha@834: while (map.containsKey(key)) { sascha@846: key = SYNTHETIC_KEY + ++idx; sascha@834: } sascha@834: return key; sascha@834: } sascha@834: sascha@831: public void add( sascha@831: String artifactName, sascha@831: String factory, sascha@831: String out, sascha@831: String name, sascha@837: String ids sascha@831: ) { sascha@834: if (artifactName == null) { sascha@834: artifactName = uniqueKey(artifacts); sascha@834: } sascha@826: sascha@831: Map artifact = artifacts.get(artifactName); sascha@826: sascha@831: if (artifact == null) { sascha@831: artifact = new HashMap(); sascha@831: artifacts.put(artifactName, artifact); sascha@826: } sascha@826: sascha@831: ArtifactFilter filter = artifact.get(factory); sascha@831: if (filter == null) { sascha@831: filter = new ArtifactFilter(factory); sascha@831: artifact.put(factory, filter); sascha@826: } sascha@822: sascha@837: filter.add(out, name, ids); sascha@822: } sascha@822: sascha@826: public boolean isEmpty() { sascha@831: return artifacts.isEmpty(); sascha@822: } sascha@846: sascha@846: public List toRecommendations() { sascha@846: List recommendations = new ArrayList(); sascha@846: sascha@846: for (Map.Entry> all: sascha@846: artifacts.entrySet() sascha@846: ) { sascha@846: String masterArtifact = all.getKey(); sascha@846: sascha@846: if (masterArtifact.startsWith(SYNTHETIC_KEY)) { // system data sascha@846: masterArtifact = null; sascha@846: } sascha@846: sascha@846: for (Map.Entry entry: sascha@846: all.getValue().entrySet() sascha@846: ) { sascha@846: String factory = entry.getKey(); sascha@846: ArtifactFilter artifactFilter = entry.getValue(); sascha@846: sascha@846: String ids; sascha@846: Recommendation.Filter filter; sascha@846: sascha@846: if (masterArtifact == null) { // system data sascha@846: ids = artifactFilter.collectIds(); sascha@846: filter = null; sascha@846: } sascha@846: else { // user specific sascha@846: ids = null; sascha@846: filter = artifactFilter.toFilter(); sascha@846: } sascha@846: sascha@846: Recommendation recommendation = new Recommendation( sascha@846: factory, ids, masterArtifact, filter); sascha@846: sascha@846: recommendations.add(recommendation); sascha@846: } sascha@846: } sascha@846: sascha@846: return recommendations; sascha@846: } sascha@822: } sascha@822: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :