/* * This file is part of rasdaman community. * * Rasdaman community is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Rasdaman community 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with rasdaman community. If not, see . * * Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann / rasdaman GmbH. * * For more information please see * or contact Peter Baumann via . */ package petascope.wcps.server.core; //A single component of a coverage's range. See the WCPS standard for more information. import petascope.wcps.server.exceptions.InvalidMetadataException; public class RangeElement implements Cloneable { private String name; private String type; public RangeElement(String name, String type) throws InvalidMetadataException { if ((name == null) || (type == null)) { throw new InvalidMetadataException( "Invalid range element: Element name and type cannot be null"); } if (name.equals("")) { throw new InvalidMetadataException( "Invalid range element: Element name cannot be empty"); } if (!(type.equals("boolean") || type.equals("char") || type.equals("unsigned char") || type.equals("short") || type.equals("unsigned short") || type.equals("int") || type.equals("unsigned int") || type.equals("long") || type.equals("unsigned long") || type.equals("float") || type.equals("double") || type.equals("complex") || type.equals("complex2"))) { throw new InvalidMetadataException( "Invalid range element: Invalid element type:" + type); } this.name = name; this.type = type; } public RangeElement clone() { try { return new RangeElement(new String(name), new String(type)); } catch (InvalidMetadataException ime) { throw new RuntimeException( "Invalid metadata while cloning RangeElement. This is a software bug in WCPS.", ime); } } public boolean equals(RangeElement re) { return name.equals(re.type); } public String getName() { return name; } public String getType() { return type; } public boolean isBoolean() { return type.equals("boolean"); } public static boolean isBoolean(String type) { return type.equals("boolean"); } public boolean isComplex() { return type.equals("complex") || type.equals("complex2"); } public static boolean isComplex(String type) { return type.equals("complex") || type.equals("complex2"); } public boolean isIntegral() { return type.equals("char") || type.equals("short") || type.equals("unsigned short") || type.equals("int") || type.equals("unsigned int") || type.equals("long") || type.equals("unsigend long"); } public static boolean isIntegral(String type) { return type.equals("char") || type.equals("short") || type.equals("unsigned short") || type.equals("int") || type.equals("unsigned int") || type.equals("long") || type.equals("unsigend long"); } public boolean isFloating() { return type.equals("float") || type.equals("double"); } public static boolean isFloating(String type) { return type.equals("float") || type.equals("double"); } public boolean isNumeric() { return type.equals("char") || type.equals("short") || type.equals("unsigned short") || type.equals("int") || type.equals("unsigned int") || type.equals("long") || type.equals("unsigend long") || type.equals("float") || type.equals("double") || type.equals("complex") || type.equals("complex2"); } public static boolean isNumeric(String type) { return type.equals("char") || type.equals("short") || type.equals("unsigned short") || type.equals("int") || type.equals("unsigned int") || type.equals("long") || type.equals("unsigend long") || type.equals("float") || type.equals("double") || type.equals("complex") || type.equals("complex2"); } public void setType(String type) throws InvalidMetadataException { if (!(type.equals("boolean") || type.equals("char") || type.equals("unsigned char") || type.equals("short") || type.equals("unsigned short") || type.equals("int") || type.equals("unsigned int") || type.equals("long") || type.equals("unsigned long") || type.equals("float") || type.equals("double") || type.equals("complex") || type.equals("complex2"))) { throw new InvalidMetadataException( "Invalid range element: Invalid element type:" + type); } this.type = type; } public String toString() { String r = "Range Element { Name '" + name + "', Type '" + type + "'}"; return r; } }