Location.java
package no.nav.data.team.location.domain;
import lombok.Getter;
import lombok.val;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@Getter
public class Location {
private final String code;
private final String description;
private final String displayName;
private final LocationType type;
private final Location parent;
private final List<Location> subLocations = new LinkedList<>();
public Location(String code, String description, LocationType type){
this.code = code;
this.description = this.displayName = description;
this.type = type;
this.parent = null;
}
public Location(String code, String description, LocationType type, Location parent){
this.code = code;
this.description = description;
this.type = type;
this.parent = parent;
this.displayName = parent.getDisplayName()+", "+ description;
}
public Location newSubLocation(String locationCode, String locationDescription, LocationType locationType){
val subLocation = new Location(this.code+"-"+locationCode,
locationDescription, locationType, this);
subLocations.add(subLocation);
return subLocation;
}
public Location build(){
return parent;
}
public Map<String, Location> flatMap(){
val map = new HashMap<String, Location>();
subLocations.forEach(l -> map.putAll(l.flatMap()));
map.put(code, this);
return map;
}
}