|
3 | 3 | import java.io.IOException; |
4 | 4 | import java.util.ArrayList; |
5 | 5 | import java.util.Arrays; |
| 6 | +import java.util.Collections; |
6 | 7 | import java.util.HashMap; |
7 | 8 | import java.util.HashSet; |
8 | 9 | import java.util.List; |
@@ -180,10 +181,22 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) |
180 | 181 | } |
181 | 182 | settings.put("keywordId", kwIdArr); |
182 | 183 |
|
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>>(); |
184 | 186 | 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); |
187 | 200 | } |
188 | 201 | settings.put("labeledKeyword", lkeyword); |
189 | 202 | // these are values which are allowed for a given labeledKeyword |
|
0 commit comments