package mil.nga.giat.geowave.cli.osm.osmfeature.types.features; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import mil.nga.giat.geowave.cli.osm.osmfeature.types.attributes.AttributeDefinition; public class FeatureDefinition { public String name = null; public FeatureType type = null; public final Map<String, List<String>> mappings = new HashMap<>(); public final Map<String, List<Map<String, List<String>>>> subMappings = new HashMap<>(); public final List<AttributeDefinition> attributes = new ArrayList<>(); public final List<Map<String, List<String>>> filters = new ArrayList<>(); public final List<String> mappingKeys = new ArrayList<>(); private static final String WILDCARD_ATTRIBUTE = "__any__"; public String getMappingName() { for (AttributeDefinition ad : attributes) { if (ad.type.equals("mapping_value")) { return ad.name; } } return null; } public AttributeDefinition getMappingAttribute() { for (AttributeDefinition ad : attributes) { if (ad.type.equals("mapping_value")) { return ad; } } return null; } public String getQualifiedSubMappings() { for (AttributeDefinition ad : attributes) { if (ad.type.equals("mapping_key")) { return ad.name; } } return null; } public AttributeDefinition getSubMappingAttribute() { for (AttributeDefinition ad : attributes) { if (ad.type.equals("mapping_key")) { return ad; } } return null; } public boolean isMappedValue( String val ) { for (Map.Entry<String, List<String>> map : mappings.entrySet()) { if (map.getValue().contains( WILDCARD_ATTRIBUTE) || map.getValue().contains( val)) { return true; } } return false; } public String getSubMappingClass( String key, String val ) { for (Map.Entry<String, List<Map<String, List<String>>>> m : subMappings.entrySet()) { for (Map<String, List<String>> m2 : m.getValue()) { for (Map.Entry<String, List<String>> m3 : m2.entrySet()) { if (m3.getKey().equals( key)) { if (m3.getValue().contains( WILDCARD_ATTRIBUTE) || m3.getValue().contains( val)) { return m3.getKey(); } } } } } return null; } }