diff flys-client/src/main/java/de/intevation/flys/client/shared/model/ToLoad.java @ 1352:01b18db3b288

In WDiff datacage input make names survive backjumps. flys-client/trunk@3027 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 19 Oct 2011 11:08:03 +0000
parents e47ef0ca8f33
children
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/shared/model/ToLoad.java	Wed Oct 19 09:35:41 2011 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/ToLoad.java	Wed Oct 19 11:08:03 2011 +0000
@@ -9,12 +9,27 @@
 
 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<String, ArtifactFilter>> artifacts;
+    protected Map<String, Map<StringPair, ArtifactFilter>> artifacts;
 
     public ToLoad() {
-        artifacts = new HashMap<String, Map<String, ArtifactFilter>>();
+        artifacts = new HashMap<String, Map<StringPair, ArtifactFilter>>();
     }
 
     public static final String uniqueKey(Map<?, ?> map) {
@@ -32,23 +47,24 @@
         String factory,
         String out,
         String name,
-        String ids
+        String ids,
+        String displayName
     ) {
         if (artifactName == null) {
             artifactName = uniqueKey(artifacts);
         }
 
-        Map<String, ArtifactFilter> artifact = artifacts.get(artifactName);
+        Map<StringPair, ArtifactFilter> artifact = artifacts.get(artifactName);
 
         if (artifact == null) {
-            artifact = new HashMap<String, ArtifactFilter>();
+            artifact = new HashMap<StringPair, ArtifactFilter>();
             artifacts.put(artifactName, artifact);
         }
 
         ArtifactFilter filter = artifact.get(factory);
         if (filter == null) {
             filter = new ArtifactFilter(factory);
-            artifact.put(factory, filter);
+            artifact.put(new StringPair(factory, displayName), filter);
         }
 
         filter.add(out, name, ids);
@@ -61,7 +77,7 @@
     public List<Recommendation> toRecommendations() {
         List<Recommendation> recommendations = new ArrayList<Recommendation>();
 
-        for (Map.Entry<String, Map<String, ArtifactFilter>> all:
+        for (Map.Entry<String, Map<StringPair, ArtifactFilter>> all:
             artifacts.entrySet()
         ) {
             String masterArtifact = all.getKey();
@@ -70,10 +86,11 @@
                 masterArtifact = null;
             }
 
-            for (Map.Entry<String, ArtifactFilter> entry:
+            for (Map.Entry<StringPair, ArtifactFilter> entry:
                 all.getValue().entrySet()
             ) {
-                String         factory        = entry.getKey();
+                StringPair pair         = entry.getKey();
+                String factory = pair.first;
                 ArtifactFilter artifactFilter = entry.getValue();
 
                 String                ids;
@@ -90,6 +107,7 @@
 
                 Recommendation recommendation = new Recommendation(
                     factory, ids, masterArtifact, filter);
+                recommendation.setDisplayName(pair.second);
 
                 recommendations.add(recommendation);
             }

http://dive4elements.wald.intevation.org