Skip to content

Commit

Permalink
Check resource loader update/Global Polygon Filter (osmlab#52)
Browse files Browse the repository at this point in the history
* Overriding check loading for country/group

* Global polygon filter
  • Loading branch information
jklamer authored and MikeGost committed Jul 16, 2018
1 parent bfd74a3 commit 5ef6488
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,8 @@ public abstract class BaseCheck<T> implements Check, Serializable
private final Set<T> flaggedIdentifiers = ConcurrentHashMap.newKeySet();
private final Locale locale;
private final String name = this.getClass().getSimpleName();
private final AtlasEntityPolygonsFilter polygonFilter;
private final AtlasEntityPolygonsFilter checkPolygonFilter;
private final AtlasEntityPolygonsFilter globalPolygonFilter;
private TaggableFilter tagFilter = null;

/**
Expand Down Expand Up @@ -99,7 +100,8 @@ public BaseCheck(final Configuration configuration)
.registerTypeAdapter(Challenge.class, new ChallengeDeserializer()).create();
this.challenge = gson.fromJson(gson.toJson(challengeMap), Challenge.class);
}
this.polygonFilter = AtlasEntityPolygonsFilter.forConfigurationValues(
this.globalPolygonFilter = AtlasEntityPolygonsFilter.forConfiguration(configuration);
this.checkPolygonFilter = AtlasEntityPolygonsFilter.forConfigurationValues(
configurationValue(configuration, AtlasEntityPolygonsFilter.INCLUDED_POLYGONS_KEY,
Collections.emptyMap()),
configurationValue(configuration,
Expand Down Expand Up @@ -135,7 +137,8 @@ public final Predicate<AtlasObject> checkObjectFilter()
{
return object -> this.validCheckForObject(object) && this.tagFilter.test(object)
&& (!(object instanceof AtlasEntity)
|| this.polygonFilter.test((AtlasEntity) object))
|| this.checkPolygonFilter.test((AtlasEntity) object)
&& this.globalPolygonFilter.test((AtlasEntity) object))
&& (this.acceptPier() || !ManMadeTag.isPier(object));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -217,18 +217,21 @@ public <T extends Check> Set<T> loadChecks()
return loadChecks(this::isEnabledByConfiguration, this.configuration);
}

public <T extends Check> Set<T> loadChecksForCountry(final Predicate<Class> isEnabled,
final String country)
public <T extends Check> Set<T> loadChecksForCountry(final String country)
{
return loadChecks(isEnabled, this.getConfigurationForCountry(country));
final Configuration countryConfiguration = this.getConfigurationForCountry(country);
return loadChecks(
checkClass -> this.isEnabledByConfiguration(countryConfiguration, checkClass),
countryConfiguration);
}

public <T extends Check> Set<T> loadChecksForCountry(final String country)
private boolean isEnabledByConfiguration(final Class checkClass)
{
return loadChecksForCountry(this::isEnabledByConfiguration, country);
return isEnabledByConfiguration(this.configuration, checkClass);
}

private boolean isEnabledByConfiguration(final Class checkClass)
private boolean isEnabledByConfiguration(final Configuration configuration,
final Class checkClass)
{
final String key = String.format(enabledKeyTemplate, checkClass.getSimpleName());
return configuration.get(key, enabledByDefault).value();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,4 +130,21 @@ public void testGroupedCountryCheckLoading()
Assert.assertEquals("Hi", country2Var2);
Assert.assertEquals("Bye", country3Var2);
}

@Test
public void testGroupedAndCountryCheckDisabling()
{
final String configSource = "{\"CheckResourceLoader.scanUrls\": [\"org.openstreetmap.atlas.checks.base.checks\"],\"groups\":{\"alphabetEnds\":[\"ABC\",\"XYZ\"]},\"CheckResourceLoaderTestCheck\":{\"enabled\": true,\"var1\":1,\"var2\":\"Hi\",\"override.DEF.enabled\":false,\"override.alphabetEnds.enabled\":false}}";
final String country1 = "ABC";
final String country2 = "DEF";
final String country3 = "XYZ";
final String country4 = "JKL";
final Configuration configuration = ConfigurationResolver.inlineConfiguration(configSource);
final CheckResourceLoader checkResourceLoader = new CheckResourceLoader(configuration);

Assert.assertTrue(checkResourceLoader.loadChecksForCountry(country1).isEmpty());
Assert.assertTrue(checkResourceLoader.loadChecksForCountry(country2).isEmpty());
Assert.assertTrue(checkResourceLoader.loadChecksForCountry(country3).isEmpty());
Assert.assertEquals(1, checkResourceLoader.loadChecksForCountry(country4).size());
}
}

0 comments on commit 5ef6488

Please sign in to comment.