/*- * Copyright 2020 Hochschule für Technik Stuttgart * * 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 de.hft.stuttgart.quality; import java.net.URL; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import javax.xml.namespace.QName; import org.citygml4j.model.gml.feature.AbstractFeature; import org.citygml4j.model.module.ade.ADEModule; import org.citygml4j.model.module.citygml.CityGMLVersion; import de.hft.stuttgart.quality.model.Validation; public class QualityADEModule extends ADEModule { public static final String NAMESPACE_URI = "https://transfer.hft-stuttgart.de/pages/qualityade/0.1"; public static final QualityADEModule V0_1 = new QualityADEModule(); private HashMap> features; private HashSet featureProperties; private static final long serialVersionUID = -8208579547274734280L; public QualityADEModule() { super(NAMESPACE_URI, "qual", CityGMLVersion.v2_0_0); features = new HashMap<>(); features.put("validation", Validation.class); featureProperties = new HashSet<>(); } @Override public URL getSchemaResource() { return QualityADEContext.class.getResource("/qualityAde.xsd"); } @Override public List getJAXBPackageNames() { return Collections.singletonList("de.hft.stuttgart.quality.model.jaxb"); } @Override public boolean hasFeatureProperty(String name) { return featureProperties.contains(name); } @Override public boolean hasFeature(String name) { return features.containsKey(name); } @Override public Class getFeatureClass(String name) { return features.get(name); } @Override public QName getFeatureName(Class featureClass) { for (Map.Entry> entry : features.entrySet()) { if (entry.getValue() == featureClass) return new QName(getNamespaceURI(), entry.getKey()); } return null; } @Override public Map> getFeatures() { return Collections.unmodifiableMap(features); } @Override public boolean isTopLevelFeature(String name) { return false; } }