summaryrefslogtreecommitdiffstats
path: root/petascope/src/petascope/wcps/server/core/CellDomainElement.java
diff options
context:
space:
mode:
Diffstat (limited to 'petascope/src/petascope/wcps/server/core/CellDomainElement.java')
-rw-r--r--petascope/src/petascope/wcps/server/core/CellDomainElement.java79
1 files changed, 79 insertions, 0 deletions
diff --git a/petascope/src/petascope/wcps/server/core/CellDomainElement.java b/petascope/src/petascope/wcps/server/core/CellDomainElement.java
new file mode 100644
index 0000000..f5e069f
--- /dev/null
+++ b/petascope/src/petascope/wcps/server/core/CellDomainElement.java
@@ -0,0 +1,79 @@
+/*
+ * 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 <http://www.gnu.org/licenses/>.
+ *
+ * For more information please see <http://www.PetaScope.org>
+ * or contact Peter Baumann via <baumann@rasdaman.com>.
+ *
+ * Copyright 2009 Jacobs University Bremen, Peter Baumann.
+ */
+package petascope.wcps.server.core;
+
+import petascope.wcps.server.exceptions.InvalidMetadataException;
+import java.math.BigInteger;
+
+//A coverage axis in pixel coordinates. See the WCPS standard.
+public class CellDomainElement implements Cloneable {
+
+ private BigInteger hi;
+ private BigInteger lo;
+
+ public CellDomainElement(BigInteger lo, BigInteger hi) throws InvalidMetadataException {
+ if ((lo == null) || (hi == null)) {
+ throw new InvalidMetadataException(
+ "Invalid cell domain element: Bounds may not be null");
+ }
+
+ if (lo.compareTo(hi) == 1) {
+ throw new InvalidMetadataException(
+ "Invalid cell domain element: Lower bound cannot be larger than upper bound");
+ }
+
+ this.lo = lo;
+ this.hi = hi;
+
+ }
+
+ public CellDomainElement clone() {
+ try {
+ return new CellDomainElement(BigInteger.ZERO.add(lo),
+ BigInteger.ZERO.add(hi));
+ } catch (InvalidMetadataException ime) {
+ throw new RuntimeException(
+ "Invalid metadata while cloning CellDomainElement. This is a software bug in WCPS.",
+ ime);
+ }
+
+ }
+
+ public boolean equals(CellDomainElement cde) {
+ return lo.equals(cde.lo) && hi.equals(cde.hi);
+
+ }
+
+ public BigInteger getHi() {
+ return hi;
+
+ }
+
+ public BigInteger getLo() {
+ return lo;
+ }
+
+ public String toString() {
+ String result = "CellDomainElement [" + lo + ", " + hi + "]";
+ return result;
+ }
+}