/* * Copyright (c) 2012 Data Harmonisation Panel * * All rights reserved. This program and the accompanying materials are made * available under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of the License, * or (at your option) any later version. * * You should have received a copy of the GNU Lesser General Public License * along with this distribution. If not, see <http://www.gnu.org/licenses/>. * * Contributors: * HUMBOLDT EU Integrated Project #030962 * Data Harmonisation Panel <http://www.dhpanel.eu> */ package eu.esdihumboldt.hale.io.gml.geometry; import java.util.Collection; import java.util.Collections; import eu.esdihumboldt.hale.common.schema.model.TypeConstraint; import eu.esdihumboldt.hale.common.schema.model.TypeDefinition; /** * Base class for geometry handlers that provide fixed type constraints. * * @author Simon Templer */ public abstract class FixedConstraintsGeometryHandler extends AbstractGeometryHandler { private Iterable<TypeConstraint> constraints; /** * @see GeometryHandler#getTypeConstraints(TypeDefinition) */ @Override public Iterable<TypeConstraint> getTypeConstraints(TypeDefinition type) throws GeometryNotSupportedException { checkType(type); if (constraints == null) { constraints = Collections.unmodifiableCollection(initConstraints()); } return constraints; } /** * Check if the given type definition is supported by the geometry handler. * This implementation assumes the type is valid. Override to change this * behavior. * * @param type the type definition to check * @throws GeometryNotSupportedException if the check failed */ @SuppressWarnings("unused") protected void checkType(TypeDefinition type) throws GeometryNotSupportedException { // by default assume the type is valid } /** * Create the associated type constraints. * * @return the type constraints to set on an associated geometry type */ protected abstract Collection<? extends TypeConstraint> initConstraints(); }