/* (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.wcs.kvp; import java.util.List; import org.geoserver.ows.KvpParser; import org.geoserver.ows.util.KvpUtils; import org.opengis.geometry.DirectPosition; import org.vfny.geoserver.wcs.WcsException; import org.vfny.geoserver.wcs.WcsException.WcsExceptionCode; /** * Parses the grid origin into a double[] * TODO: consider use a {@link DirectPosition} instead? * @author Andrea Aime */ public class GridOriginKvpParser extends KvpParser { public GridOriginKvpParser() { super("GridOrigin", double[].class); } @Override public Object parse(String value) throws Exception { List values = KvpUtils.readFlat(value); if (values.size() < 2) throw new WcsException("Invalid grid origin, should have at least two values", WcsExceptionCode.InvalidParameterValue, "GridOrigin"); Double[] origins = new Double[values.size()]; for (int i = 0; i < origins.length; i++) { try { origins[i] = Double.parseDouble((String) values.get(i)); } catch (NumberFormatException e) { throw new WcsException("Invalid ordinate " + origins[i], WcsExceptionCode.InvalidParameterValue, "GridOrigin"); } } return origins; } }