From 40e12c6af9d05c3413efaf535c35c625b736cbb9 Mon Sep 17 00:00:00 2001 From: Constantin Date: Wed, 2 Jun 2010 20:09:42 +0200 Subject: preparing for joining with rasdaman open source --- .../wcps/server/core/ReduceScalarExpr.java | 68 ++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 petascope/src/petascope/wcps/server/core/ReduceScalarExpr.java (limited to 'petascope/src/petascope/wcps/server/core/ReduceScalarExpr.java') diff --git a/petascope/src/petascope/wcps/server/core/ReduceScalarExpr.java b/petascope/src/petascope/wcps/server/core/ReduceScalarExpr.java new file mode 100644 index 0000000..d7e343c --- /dev/null +++ b/petascope/src/petascope/wcps/server/core/ReduceScalarExpr.java @@ -0,0 +1,68 @@ +/* + * This file is part of PetaScope. + * + * PetaScope is free software: you can redistribute it and/or modify + * it 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. + * + * PetaScope is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with PetaScope. If not, see . + * + * For more information please see + * or contact Peter Baumann via . + * + * Copyright 2009 Jacobs University Bremen, Peter Baumann. + */ +package petascope.wcps.server.core; + +import petascope.wcps.server.exceptions.InvalidCrsException; +import petascope.wcps.server.exceptions.WCPSException; +import org.w3c.dom.*; + +public class ReduceScalarExpr implements IRasNode { + + CoverageExpr expr; + String op; + + public ReduceScalarExpr(Node node, XmlQuery xq) throws WCPSException, InvalidCrsException { + if (node.getNodeName().equals("reduce")) { + node = node.getFirstChild(); + } + while ((node != null) && node.getNodeName().equals("#text")) { + node = node.getNextSibling(); + } + + System.err.println("Trying to parse ReduceScalarExpr "); + String nodeName = node.getNodeName(); + + if (nodeName.equals("all") || nodeName.equals("some") || nodeName.equals("count") + || nodeName.equals("add") || nodeName.equals("avg") || nodeName.equals("min") + || nodeName.equals("max")) { + op = nodeName; + + if (!op.equals("all") && !op.equals("some")) { + op = op + "_cells"; + } + + node = node.getFirstChild(); + + while ((node != null) && (node.getNodeName().equals("#text"))) { + node = node.getNextSibling(); + } + + expr = new CoverageExpr(node, xq); + } else { + throw new WCPSException("invalid ReduceScalarExprType node : " + nodeName); + } + } + + public String toRasQL() { + return op + "(" + expr.toRasQL() + ")"; + } +} -- cgit