/* * Copyright (c) 2015 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: * Data Harmonisation Panel <http://www.dhpanel.eu> */ package eu.esdihumboldt.hale.io.appschema.writer.internal; import static eu.esdihumboldt.hale.io.appschema.writer.AppSchemaMappingUtils.getSourceProperty; import static eu.esdihumboldt.hale.io.appschema.writer.AppSchemaMappingUtils.getTransformationParameter; import eu.esdihumboldt.cst.functions.geometric.extent.ExtentFunction; import eu.esdihumboldt.cst.functions.geometric.extent.ExtentTransformation; import eu.esdihumboldt.hale.common.align.model.ParameterValue; import eu.esdihumboldt.hale.common.align.model.Property; /** * Translates a property cell specifying a {@link ExtentTransformation} * transformation function to an app-schema attribute mapping. * * @author Stefano Costa, GeoSolutions */ public class ExtentHandler extends AbstractPropertyTransformationHandler { /** * @see eu.esdihumboldt.hale.io.appschema.writer.internal.AbstractPropertyTransformationHandler#getSourceExpressionAsCQL() */ @Override protected String getSourceExpressionAsCQL() { Property source = getSourceProperty(propertyCell); ParameterValue extentTypeParam = getTransformationParameter(propertyCell, ExtentFunction.PARAM_TYPE); String extentType = (extentTypeParam != null) ? extentTypeParam.as(String.class, ExtentFunction.PARAM_BOUNDING_BOX) : ExtentFunction.PARAM_BOUNDING_BOX; String extentFunction = ""; if (extentType.equals(ExtentFunction.PARAM_BOUNDING_BOX)) { extentFunction = "envelope"; } else if (extentType.equals(ExtentFunction.PARAM_CONVEX_HULL)) { extentFunction = "convexHull"; } else { throw new IllegalArgumentException("Extent type not supported: " + extentType); } String geomProperty = source.getDefinition().getDefinition().getName().getLocalPart(); String cqlExpression = String.format("%s(%s)", extentFunction, geomProperty); return getConditionalExpression(source.getDefinition(), cqlExpression); } }