package NFP.Algorithms; import java.util.List; import seg.jUCMNav.nfp.generated.*; public class AggregateJurisdiction { private List Jurisdictions; private Jurisdiction aggregatedJurisdiction; public Jurisdiction getAggregateJurisdiction(List Jurisdictions){ this.Jurisdictions=Jurisdictions; initialize(); for (Jurisdiction Jur : this.Jurisdictions) { aggregatedJurisdiction = CountryIntersection(aggregatedJurisdiction,Jur); for (Country aggregatedCountry : aggregatedJurisdiction.getCountries()) { Country c = new Country(); for(Country ac : Jur.getCountries()){ if(aggregatedCountry.getCode() == ac.getCode()){ c = ac; break; } } if(!aggregatedCountry.getTerritories().isEmpty() & !c.getTerritories().isEmpty()){ aggregatedCountry.getTerritories().retainAll(c.getTerritories()); if(aggregatedCountry.getTerritories().isEmpty()){ aggregatedJurisdiction.getCountries().remove(aggregatedCountry); } } else { for(Territory tr : c.getTerritories()){ if(!aggregatedCountry.getTerritories().contains(tr)) aggregatedCountry.getTerritories().add(tr); } } } } return aggregatedJurisdiction; } private Jurisdiction CountryIntersection(Jurisdiction first, Jurisdiction second){ Jurisdiction result = new Jurisdiction(); for(Country c1 : first.getCountries()){ for(Country c2 : second.getCountries()){ if(c1.getCode()==c2.getCode()) result.getCountries().add(c1); } } return result; } private void initialize() { aggregatedJurisdiction= new Jurisdiction(); aggregatedJurisdiction= Jurisdictions.get(0); } }