/* * 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; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.citygml4j.model.module.citygml.CityGMLModule; import org.citygml4j.model.module.citygml.CityGMLVersion; import org.citygml4j.model.module.gml.GMLModule; import org.citygml4j.model.module.xal.XALModule; public class ModuleContext { private HashMap<ModuleType, Module> modules = new HashMap<ModuleType, Module>(); public ModuleContext() { this(CityGMLVersion.DEFAULT); } public ModuleContext(CityGMLVersion version) { for (ModuleType type : Modules.modules.keySet()) modules.put(type, null); for (Module module : version.getModules()) modules.put(module.getType(), module); } public ModuleContext(ModuleContext moduleContext) { for (Module module : moduleContext.getModules()) modules.put(module.getType(), module); } public Module getModule(ModuleType type) { return modules.get(type); } public boolean contains(Module module) { return modules.values().contains(module); } public List<Module> getModules() { List<Module> modules = new ArrayList<Module>(); for (Module module : this.modules.values()) if (module != null) modules.add((Module)module); return modules; } public List<CityGMLModule> getCityGMLModules() { List<CityGMLModule> modules = new ArrayList<CityGMLModule>(); for (Module module : this.modules.values()) if (module instanceof CityGMLModule) modules.add((CityGMLModule)module); return modules; } public List<GMLModule> getGMLModules() { List<GMLModule> modules = new ArrayList<GMLModule>(); for (Module module : this.modules.values()) if (module instanceof GMLModule) modules.add((GMLModule)module); return modules; } public List<XALModule> getXALModules() { List<XALModule> modules = new ArrayList<XALModule>(); for (Module module : this.modules.values()) if (module instanceof XALModule) modules.add((XALModule)module); return modules; } public boolean setModule(Module module) { for (Module dependency : module.getDependencies()) if (!contains(dependency)) return false; modules.put(module.getType(), module); return true; } public void setModules(ModuleContext moduleContext) { modules.clear(); for (Module module : moduleContext.getModules()) modules.put(module.getType(), module); } public void setCityGMLVersion(CityGMLVersion version) { for (ModuleType type : Modules.modules.keySet()) modules.put(type, null); for (Module module : version.getModules()) modules.put(module.getType(), module); } }