/* * citygml4j - The Open Source Java API for CityGML * https://github.com/citygml4j * * Copyright 2013-2017 Claus Nagel <claus.nagel@gmail.com> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.citygml4j.model.module.citygml; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import org.citygml4j.model.citygml.CityGML; import org.citygml4j.model.citygml.building.Building; import org.citygml4j.model.citygml.building.BuildingFurniture; import org.citygml4j.model.citygml.building.BuildingInstallation; import org.citygml4j.model.citygml.building.BuildingPart; import org.citygml4j.model.citygml.building.CeilingSurface; import org.citygml4j.model.citygml.building.ClosureSurface; import org.citygml4j.model.citygml.building.Door; import org.citygml4j.model.citygml.building.FloorSurface; import org.citygml4j.model.citygml.building.GroundSurface; import org.citygml4j.model.citygml.building.IntBuildingInstallation; import org.citygml4j.model.citygml.building.InteriorWallSurface; import org.citygml4j.model.citygml.building.OuterCeilingSurface; import org.citygml4j.model.citygml.building.OuterFloorSurface; import org.citygml4j.model.citygml.building.RoofSurface; import org.citygml4j.model.citygml.building.Room; import org.citygml4j.model.citygml.building.WallSurface; import org.citygml4j.model.citygml.building.Window; import org.citygml4j.model.module.Module; public class BuildingModule extends AbstractCityGMLModule { private static final List<BuildingModule> instances = new ArrayList<BuildingModule>(); public static final BuildingModule v2_0_0; public static final BuildingModule v1_0_0; private BuildingModule ( CityGMLModuleType type, CityGMLModuleVersion version, String namespaceURI, String namespacePrefix, String schemaLocation, Module... dependencies) { super(type, version, namespaceURI, namespacePrefix, schemaLocation, dependencies); instances.add(this); } static { v2_0_0 = new BuildingModule ( CityGMLModuleType.BUILDING, CityGMLModuleVersion.v2_0_0, "http://www.opengis.net/citygml/building/2.0", "bldg", "http://schemas.opengis.net/citygml/building/2.0/building.xsd", CoreModule.v2_0_0); v1_0_0 = new BuildingModule ( CityGMLModuleType.BUILDING, CityGMLModuleVersion.v1_0_0, "http://www.opengis.net/citygml/building/1.0", "bldg", "http://schemas.opengis.net/citygml/building/1.0/building.xsd", CoreModule.v1_0_0); v2_0_0.elementMap = new HashMap<String, Class<? extends CityGML>>(); v2_0_0.elementMap.put("Building", Building.class); v2_0_0.elementMap.put("BuildingPart", BuildingPart.class); v2_0_0.elementMap.put("Room", Room.class); v2_0_0.elementMap.put("IntBuildingInstallation", IntBuildingInstallation.class); v2_0_0.elementMap.put("BuildingInstallation", BuildingInstallation.class); v2_0_0.elementMap.put("BuildingFurniture", BuildingFurniture.class); v2_0_0.elementMap.put("InteriorWallSurface", InteriorWallSurface.class); v2_0_0.elementMap.put("RoofSurface", RoofSurface.class); v2_0_0.elementMap.put("ClosureSurface", ClosureSurface.class); v2_0_0.elementMap.put("WallSurface", WallSurface.class); v2_0_0.elementMap.put("FloorSurface", FloorSurface.class); v2_0_0.elementMap.put("CeilingSurface", CeilingSurface.class); v2_0_0.elementMap.put("GroundSurface", GroundSurface.class); v2_0_0.elementMap.put("Window", Window.class); v2_0_0.elementMap.put("Door", Door.class); v1_0_0.elementMap = v2_0_0.elementMap; v2_0_0.elementMap.put("OuterFloorSurface", OuterFloorSurface.class); v2_0_0.elementMap.put("OuterCeilingSurface", OuterCeilingSurface.class); v2_0_0.propertySet = new HashSet<String>(); v2_0_0.propertySet.add("address"); v2_0_0.propertySet.add("boundedBy"); v2_0_0.propertySet.add("opening"); v2_0_0.propertySet.add("outerBuildingInstallation"); v2_0_0.propertySet.add("interiorBuildingInstallation"); v2_0_0.propertySet.add("interiorRoom"); v2_0_0.propertySet.add("consistsOfBuildingPart"); v2_0_0.propertySet.add("interiorFurniture"); v2_0_0.propertySet.add("roomInstallation"); v1_0_0.propertySet = v2_0_0.propertySet; } public static List<BuildingModule> getInstances() { return instances; } public static BuildingModule getInstance(CityGMLModuleVersion version) { switch (version) { case v2_0_0: return v2_0_0; case v1_0_0: return v1_0_0; default: return null; } } }