Skip to content

Commit

Permalink
changes country property by a set of countries, to filter violations …
Browse files Browse the repository at this point in the history
…in the area of interest
  • Loading branch information
Christian Biasuzzi committed Oct 20, 2016
1 parent 48ba95d commit 4309431
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
*/
package eu.itesla_project.modules.constraints;

import java.util.Collections;
import java.util.EnumSet;
import java.util.Set;

Expand All @@ -23,9 +24,9 @@
public class ConstraintsModifierConfig {

public static final Set<LimitViolationType> DEFAULT_VIOLATION_TYPES = EnumSet.of(LimitViolationType.CURRENT);
public static final Country DEFAULT_COUNTRY = null;
public static final Set<Country> DEFAULT_COUNTRIES = Collections.emptySet();

private final Country country;
private final Set<Country> countries;
private final Set<LimitViolationType> violationsTypes;

public static ConstraintsModifierConfig load() {
Expand All @@ -34,41 +35,38 @@ public static ConstraintsModifierConfig load() {

public static ConstraintsModifierConfig load(PlatformConfig platformConfig) {
Set<LimitViolationType> violationsTypes;
Country country;
Set<Country> countries;
if (platformConfig.moduleExists("constraintsModifier")) {
ModuleConfig config = platformConfig.getModuleConfig("constraintsModifier");
violationsTypes = config.getEnumSetProperty("violationsTypes", LimitViolationType.class, DEFAULT_VIOLATION_TYPES);
String countryStr = config.getStringProperty("country", null);
country = ( countryStr == null ) ? DEFAULT_COUNTRY : Country.valueOf(countryStr);
countries = config.getEnumSetProperty("countries", Country.class, DEFAULT_COUNTRIES);
} else {
violationsTypes = DEFAULT_VIOLATION_TYPES;
country = DEFAULT_COUNTRY;
countries = DEFAULT_COUNTRIES;
}
return new ConstraintsModifierConfig(country, violationsTypes);
return new ConstraintsModifierConfig(countries, violationsTypes);
}

public ConstraintsModifierConfig(Country country, Set<LimitViolationType> violationsTypes) {
this.country = country;
public ConstraintsModifierConfig(Set<Country> countries, Set<LimitViolationType> violationsTypes) {
this.countries = countries;
this.violationsTypes = violationsTypes;
}

public Country getCountry() {
return country;
public Set<Country> getCountries() {
return countries;
}

public Set<LimitViolationType> getViolationsTypes() {
return violationsTypes;
}

public boolean isInAreaOfInterest(LimitViolation violation, Network network) {
if ( country != null )
return violation.getCountry() == country;
return true;
return (countries.isEmpty() || countries.contains(violation.getCountry()));
}

@Override
public String toString() {
return "ConstraintsModifierConfig[country="+country+",violation types="+violationsTypes.toString()+"]";
return "ConstraintsModifierConfig[country="+countries+",violation types="+violationsTypes.toString()+"]";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,8 @@
import static org.junit.Assert.assertTrue;

import java.nio.file.FileSystem;
import java.util.Arrays;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;

import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.nio.file.ShrinkWrapFileSystems;
Expand Down Expand Up @@ -58,22 +56,33 @@ public void tearDown() throws Exception {
@Test
public void testNoConfig() throws Exception {
ConstraintsModifierConfig config = ConstraintsModifierConfig.load(platformConfig);
checkValues(config, ConstraintsModifierConfig.DEFAULT_COUNTRY, ConstraintsModifierConfig.DEFAULT_VIOLATION_TYPES);
checkValues(config, ConstraintsModifierConfig.DEFAULT_COUNTRIES, ConstraintsModifierConfig.DEFAULT_VIOLATION_TYPES);
}

@Test
public void testLoadConfig() throws Exception {
Country country = Country.FR;
Set<Country> countries = new HashSet(Arrays.asList(Country.FR));
checkConfig(countries);
}

@Test
public void testLoadConfigMultipleCountries() throws Exception {
Set<Country> countries = new HashSet(Arrays.asList(Country.values()));
checkConfig(countries);
}

private void checkConfig(Set<Country> countries) throws Exception {
LimitViolationType violationType = LimitViolationType.CURRENT;
MapModuleConfig moduleConfig = platformConfig.createModuleConfig("constraintsModifier");
moduleConfig.setStringListProperty("country", Arrays.asList(country.name()));
moduleConfig.setStringListProperty("countries", countries.stream().map(Enum::name).collect(Collectors.toList()));
moduleConfig.setStringListProperty("violationsTypes", Arrays.asList(violationType.name()));
ConstraintsModifierConfig config = ConstraintsModifierConfig.load(platformConfig);
checkValues(config, country, EnumSet.of(violationType));
checkValues(config, countries, EnumSet.of(violationType));
}

private void checkValues(ConstraintsModifierConfig config, Country expectedCountry, Set<LimitViolationType> expectedViolationTypes) {
assertEquals(expectedCountry, config.getCountry());

private void checkValues(ConstraintsModifierConfig config, Set<Country> expectedCountries, Set<LimitViolationType> expectedViolationTypes) {
assertEquals(expectedCountries, config.getCountries());
assertArrayEquals(expectedViolationTypes.toArray(), config.getViolationsTypes().toArray());
for(LimitViolation violation : violations) {
assertTrue(config.isInAreaOfInterest(violation, network));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public void setUp() throws Exception {
Set<LimitViolationType> violationTypes = EnumSet.of(LimitViolationType.CURRENT,
LimitViolationType.HIGH_VOLTAGE,
LimitViolationType.LOW_VOLTAGE);
config = new ConstraintsModifierConfig(ConstraintsModifierConfig.DEFAULT_COUNTRY, violationTypes);
config = new ConstraintsModifierConfig(ConstraintsModifierConfig.DEFAULT_COUNTRIES, violationTypes);
}

private void checkOriginalNetworkLimits() {
Expand Down

0 comments on commit 4309431

Please sign in to comment.