Skip to content

Commit 3d7ca98

Browse files
authored
Merge pull request #1293 from WildMeOrg/1279_remove_duplicate_labeledkeywords
SiteSettings api: make LabeledKeyword values unique (and sorted)
2 parents ef61621 + 9d49083 commit 3d7ca98

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

src/main/java/org/ecocean/api/SiteSettings.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.io.IOException;
44
import java.util.ArrayList;
55
import java.util.Arrays;
6+
import java.util.Collections;
67
import java.util.HashMap;
78
import java.util.HashSet;
89
import java.util.List;
@@ -180,10 +181,22 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
180181
}
181182
settings.put("keywordId", kwIdArr);
182183

183-
JSONObject lkeyword = new JSONObject();
184+
// we map to a Set here so we keep values unique (remove duplicates: issue 1279)
185+
Map<String,Set<String>> allLK = new HashMap<String, Set<String>>();
184186
for (LabeledKeyword lkw : myShepherd.getAllLabeledKeywords()) {
185-
if (!lkeyword.has(lkw.getLabel())) lkeyword.put(lkw.getLabel(), new JSONArray());
186-
lkeyword.getJSONArray(lkw.getLabel()).put(lkw.getValue());
187+
if (!allLK.containsKey(lkw.getLabel())) allLK.put(lkw.getLabel(), new HashSet<String>());
188+
allLK.get(lkw.getLabel()).add(lkw.getValue());
189+
}
190+
JSONObject lkeyword = new JSONObject();
191+
for (String lkKey : allLK.keySet()) {
192+
// sort our Set of values so it is not chaotic
193+
List<String> lkValues = new ArrayList<String>(allLK.get(lkKey));
194+
Collections.sort(lkValues);
195+
JSONArray lkArr = new JSONArray();
196+
for (String lkVal : lkValues) {
197+
lkArr.put(lkVal);
198+
}
199+
lkeyword.put(lkKey, lkArr);
187200
}
188201
settings.put("labeledKeyword", lkeyword);
189202
// these are values which are allowed for a given labeledKeyword

0 commit comments

Comments
 (0)