Skip to content

Commit 7b96472

Browse files
authored
Merge pull request #1230 from WildMeOrg/1227_country_list
fix for incorrect country list (in react-based validation)
2 parents 1d712a3 + 07675c4 commit 7b96472

File tree

3 files changed

+29
-2
lines changed

3 files changed

+29
-2
lines changed

src/main/java/org/ecocean/Util.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
import java.util.Arrays;
55
import java.util.Calendar;
66
import java.util.Collection;
7+
import java.util.Collections;
78
import java.util.Enumeration;
89
import java.util.List;
10+
import java.util.Locale;
911
import java.util.Properties;
1012
import java.util.UUID;
1113

@@ -1216,4 +1218,18 @@ public static String getISO8601Date(final String date) {
12161218
if (iso8601.length() == 16) iso8601 += 'Z';
12171219
return iso8601;
12181220
}
1221+
1222+
// from issue #1227, there are a couple ways to derive a list of valid countries (e.g. for validating
1223+
// bulk import data), including some based on CommonConfiguration. for now we are using a canned list
1224+
// but might be adjusted later to allow customization
1225+
public static List<String> getCountries() {
1226+
List<String> cnames = new ArrayList<String>();
1227+
1228+
for (String code : Locale.getISOCountries()) {
1229+
Locale obj = new Locale("", code);
1230+
cnames.add(obj.getDisplayCountry());
1231+
}
1232+
Collections.sort(cnames);
1233+
return cnames;
1234+
}
12191235
}

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
9090
CommonConfiguration.getIndexedPropertyValues("lifeStage", context));
9191
settings.put("livingStatus",
9292
CommonConfiguration.getIndexedPropertyValues("livingStatus", context));
93-
settings.put("country",
94-
CommonConfiguration.getIndexedPropertyValues("country", context));
93+
settings.put("country", Util.getCountries());
9594
settings.put("annotationViewpoint", Annotation.getAllValidViewpointsSorted());
9695
settings.put("patterningCode",
9796
CommonConfiguration.getIndexedPropertyValues("patterningCode", context));

src/test/java/org/ecocean/UtilTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.ecocean;
22

33
import java.util.Calendar;
4+
import java.util.List;
45
import org.junit.jupiter.api.Test;
56
import static org.junit.Assert.*;
67

@@ -43,4 +44,15 @@ class UtilTest {
4344
assertTrue(Util.dateIsInFuture(year, month, day + 1));
4445
assertTrue(Util.dateIsInFuture(year + 1, month, day));
4546
}
47+
48+
// some of these assertions may fail if the world collapses
49+
// into political chaos
50+
@Test void testCountries() {
51+
List<String> cs = Util.getCountries();
52+
53+
assertNotNull(cs);
54+
assertTrue(cs.size() > 100);
55+
assertTrue(cs.contains("Palestinian Territories"));
56+
assertTrue(cs.contains("United States"));
57+
}
4658
}

0 commit comments

Comments
 (0)