Add comparison options on Java Scilab datatypes (.equals(obj)) 41/1141/2
Sylvestre Ledru [Mon, 28 Jun 2010 16:17:21 +0000 (18:17 +0200)]
Change-Id: Id00a390b4de21bcb6a0793a6e714f334347c940f

scilab/modules/types/src/java/org/scilab/modules/types/scilabTypes/ScilabBoolean.java
scilab/modules/types/src/java/org/scilab/modules/types/scilabTypes/ScilabDouble.java
scilab/modules/types/src/java/org/scilab/modules/types/scilabTypes/ScilabInteger.java
scilab/modules/types/src/java/org/scilab/modules/types/scilabTypes/ScilabString.java
scilab/modules/types/src/java/org/scilab/modules/types/scilabTypes/ScilabType.java

index 96ee9b9..04c5f5b 100644 (file)
@@ -13,6 +13,8 @@
 
 package org.scilab.modules.types.scilabTypes;
 
+import java.util.Arrays;
+
 /**
  * This class provides a wrapping on the Scilab boolean datatype
  */
@@ -100,6 +102,17 @@ public class ScilabBoolean implements ScilabType {
     
 
     /**
+        * @see org.scilab.modules.types.scilabTypes.ScilabType#equals(Object)
+     */
+    public boolean equals(Object obj) {
+        if (obj instanceof ScilabBoolean) {
+            return Arrays.deepEquals(this.getData(), ((ScilabBoolean)obj).getData());
+        } else {
+            return false;
+        }
+    }
+
+    /**
      * Display the matrix
      *
      * @return the pretty print
index a1d82ca..c316e27 100644 (file)
@@ -13,6 +13,8 @@
 
 package org.scilab.modules.types.scilabTypes;
 
+import java.util.Arrays;
+
 /**
  * This class provides a wrapping on the Scilab Double datatype<br />
  * Note that double is the default datatype in Scilab
@@ -152,6 +154,23 @@ public class ScilabDouble implements ScilabType {
                return realPart[0].length;
        }
 
+    /**
+        * @see org.scilab.modules.types.scilabTypes.ScilabType#equals(Object)
+     */
+    public boolean equals(Object obj) {
+        if (obj instanceof ScilabDouble) {
+            if (this.isReal()) {
+                return Arrays.deepEquals(this.getRealPart(), ((ScilabDouble)obj).getRealPart());
+            } else {
+                /* Complex */
+                return Arrays.deepEquals(this.getRealPart(), ((ScilabDouble)obj).getRealPart()) && Arrays.deepEquals(this.getImaginaryPart(), ((ScilabDouble)obj).getImaginaryPart());
+            }
+        } else {
+            return false;
+        }
+    }
+
+
        /**
         * @return a Scilab-like String representation of the data.
         * @see java.lang.Object#toString()
index 483ede8..f92d1ab 100644 (file)
@@ -12,6 +12,8 @@
 
 package org.scilab.modules.types.scilabTypes;
 
+import java.util.Arrays;
+
 /**
  * This class provides a wrapping on the Scilab Integer datatype
  */
@@ -246,6 +248,17 @@ public class ScilabInteger implements ScilabType {
     }
        
     /**
+        * @see org.scilab.modules.types.scilabTypes.ScilabType#equals(Object)
+     */
+    public boolean equals(Object obj) {
+        if (obj instanceof ScilabInteger) {
+            return Arrays.deepEquals(this.getData(), ((ScilabInteger)obj).getData());
+        } else {
+            return false;
+        }
+    }
+
+    /**
      * @return the pretty-printed values 
      * @see java.lang.Object#toString()
      */
index e93a031..4a454f9 100644 (file)
@@ -12,6 +12,8 @@
 
 package org.scilab.modules.types.scilabTypes;
 
+import java.util.Arrays;
+
 /**
  * This class provides a wrapping on the Scilab String datatype
  */
@@ -111,6 +113,17 @@ public class ScilabString implements ScilabType {
        return (data == null);
     }
     
+    /**
+        * @see org.scilab.modules.types.scilabTypes.ScilabType#equals(Object)
+     */
+    public boolean equals(Object obj) {
+        if (obj instanceof ScilabString) {
+            return Arrays.deepEquals(this.getData(), ((ScilabString)obj).getData());
+        } else {
+            return false;
+        }
+    }
+
        /**
         * @return a Scilab-like String representation of the data.
         * @see java.lang.Object#toString()
index 2db531a..60d7643 100644 (file)
@@ -40,6 +40,14 @@ public interface ScilabType extends Serializable, Cloneable {
         */
        boolean isEmpty();
        
+
+    /**
+     * Compare if obj is the same object or not
+     * @param obj the object we want to compare
+     * @return true if the two objects are equals, false otherwise
+     */
+    public boolean equals(Object obj);
+
     /**
      * Display the data
      *