/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.wcs2_0.kvp; import java.util.List; import net.opengis.wcs20.ScaleToSizeType; import net.opengis.wcs20.TargetAxisSizeType; import net.opengis.wcs20.Wcs20Factory; import org.geoserver.wcs2_0.exception.WCS20Exception; /** * Parses the WCS 2.0 {@link ScaleToSizeType} from KVP * * @author Andrea Aime - GeoSolutions * */ public class ScaleSizeKvpParser extends AbstractAxisValueKvpParser<TargetAxisSizeType> { public ScaleSizeKvpParser() { super("scalesize", ScaleToSizeType.class); } @Override public Object parse(String value) throws Exception { ScaleToSizeType sabf = Wcs20Factory.eINSTANCE.createScaleToSizeType(); List<TargetAxisSizeType> items = parseItem(value); sabf.getTargetAxisSize().addAll(items); return sabf; } @Override protected TargetAxisSizeType buildItem(String axisName, String value) { TargetAxisSizeType tas = Wcs20Factory.eINSTANCE.createTargetAxisSizeType(); try { tas.setAxis(axisName.trim()); tas.setTargetSize(Double.valueOf(value)); } catch (NumberFormatException e) { throwInvalidSyntaxException(null); } return tas; } @Override protected void throwInvalidSyntaxException(Exception e) { WCS20Exception ex = new WCS20Exception( "Invalid ScaleSize syntax, expecting a comma separate list of axisName(size)*", WCS20Exception.WCS20ExceptionCode.InvalidEncodingSyntax, "scaleSize"); if (e != null) { ex.initCause(e); } throw ex; } }