package denominator.profile;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
final class Regions {
private final Map<String, Collection<String>> all;
private final String lastRegion;
private final String lastTerritory;
private final List<String> exceptLastTerritory;
Regions(Map<String, Collection<String>> input) {
all = input;
String[] names = input.keySet().toArray(new String[input.size()]);
lastRegion = names[names.length - 1];
exceptLastTerritory = new ArrayList<String>(input.get(lastRegion));
lastTerritory = exceptLastTerritory.remove(exceptLastTerritory.size() - 1);
}
Map<String, Collection<String>> allButLastTerritory() {
Map<String, Collection<String>> result = new LinkedHashMap<String, Collection<String>>(all);
if (exceptLastTerritory.isEmpty()) {
result.remove(lastRegion);
} else {
result.put(lastRegion, exceptLastTerritory);
}
return result;
}
Map<String, Collection<String>> onlyLastTerritory() {
Map<String, Collection<String>> result = new LinkedHashMap<String, Collection<String>>(1);
result.put(lastRegion, Arrays.asList(lastTerritory));
return result;
}
Map<String, Collection<String>> plusLastTerritory(Map<String, Collection<String>> input) {
Map<String, Collection<String>> result = new LinkedHashMap<String, Collection<String>>(input);
if (result.containsKey(lastRegion)) {
List<String> moreTerritories = new ArrayList<String>(result.get(lastRegion));
moreTerritories.add(lastTerritory);
result.put(lastRegion, moreTerritories);
} else {
result.put(lastRegion, Arrays.asList(lastTerritory));
}
return result;
}
}