>From Ali Alsuliman <[email protected]>:

Ali Alsuliman has submitted this change. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17233 )

Change subject: [ASTERIXDB-3046][COMP] Make ICost comparable
......................................................................

[ASTERIXDB-3046][COMP] Make ICost comparable

- user model changes: no
- storage format changes: no
- interface changes: no


Change-Id: I230d731d510c8da395539acab8901ee2a388c88c
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17233
Reviewed-by: Ali Alsuliman <[email protected]>
Reviewed-by: Wail Alkowaileet <[email protected]>
Tested-by: Jenkins <[email protected]>
---
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java
2 files changed, 51 insertions(+), 44 deletions(-)

Approvals:
  Wail Alkowaileet: Looks good to me, approved
  Ali Alsuliman: Looks good to me, but someone else must approve
  Jenkins: Verified




diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java
index 7e74f91..5dda277 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java
@@ -22,8 +22,6 @@
 public class Cost implements ICost {

     public static final double MAX_CARD = 1.0e200;
-    protected static final int COST_GT = 1;
-    protected static final int COST_LT = -1;
     protected static final int COST_EQ = 0;

     private final double cost;
@@ -37,63 +35,57 @@
     }

     @Override
-    public Cost zeroCost() {
+    public ICost zeroCost() {
         return new Cost();
     }

     @Override
-    public Cost maxCost() {
+    public ICost maxCost() {
         return new Cost(MAX_CARD);
     }

     @Override
-    public Cost costAdd(ICost iCost2) {
-        return new Cost(this.computeTotalCost() + iCost2.computeTotalCost());
+    public ICost costAdd(ICost cost) {
+        return new Cost(computeTotalCost() + cost.computeTotalCost());
     }

     @Override
-    public Cost costAdd(ICost iCost2, ICost iCost3) {
-        return this.costAdd(iCost2.costAdd(iCost3));
+    public boolean costEQ(ICost cost) {
+        return compareTo(cost) == COST_EQ;
     }

     @Override
-    public int costCompare(ICost iCost2) {
-        if (this.computeTotalCost() > iCost2.computeTotalCost()) {
-            return COST_GT;
-        } else if (this.computeTotalCost() < iCost2.computeTotalCost()) {
-            return COST_LT;
-        } else {
-            return COST_EQ;
-        }
+    public boolean costLT(ICost cost) {
+        return compareTo(cost) < COST_EQ;
     }

     @Override
-    public boolean costEQ(ICost iCost2) {
-        return this.costCompare(iCost2) == COST_EQ;
+    public boolean costGT(ICost cost) {
+        return compareTo(cost) > COST_EQ;
     }

     @Override
-    public boolean costLT(ICost iCost2) {
-        return this.costCompare(iCost2) == COST_LT;
+    public boolean costLE(ICost cost) {
+        return compareTo(cost) <= COST_EQ;
     }

     @Override
-    public boolean costGT(ICost iCost2) {
-        return this.costCompare(iCost2) == COST_GT;
-    }
-
-    @Override
-    public boolean costLE(ICost iCost2) {
-        return this.costLT(iCost2) || this.costEQ(iCost2);
-    }
-
-    @Override
-    public boolean costGE(ICost iCost2) {
-        return this.costGT(iCost2) || this.costEQ(iCost2);
+    public boolean costGE(ICost cost) {
+        return compareTo(cost) >= COST_EQ;
     }

     @Override
     public double computeTotalCost() {
-        return this.cost;
+        return cost;
+    }
+
+    @Override
+    public int compareTo(ICost cost) {
+        return Double.compare(computeTotalCost(), cost.computeTotalCost());
+    }
+
+    @Override
+    public String toString() {
+        return Double.toString(cost);
     }
 }
diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java
index 6f4c7d7..99c3362 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java
@@ -19,27 +19,24 @@
 
 package org.apache.asterix.optimizer.cost;

-public interface ICost {
+public interface ICost extends Comparable<ICost> {

     ICost zeroCost();

     ICost maxCost();

-    ICost costAdd(ICost cost2);
+    ICost costAdd(ICost cost);

-    ICost costAdd(ICost cost2, ICost cost3);
+    boolean costEQ(ICost cost);

-    int costCompare(ICost cost2);
+    boolean costLT(ICost cost);

-    boolean costEQ(ICost cost2);
+    boolean costGT(ICost cost);

-    boolean costLT(ICost cost2);
+    boolean costLE(ICost cost);

-    boolean costGT(ICost cost2);
-
-    boolean costLE(ICost cost2);
-
-    boolean costGE(ICost cost2);
+    boolean costGE(ICost cost);

     double computeTotalCost();
+
 }

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17233
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I230d731d510c8da395539acab8901ee2a388c88c
Gerrit-Change-Number: 17233
Gerrit-PatchSet: 3
Gerrit-Owner: Ali Alsuliman <[email protected]>
Gerrit-Reviewer: Ali Alsuliman <[email protected]>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Glenn Galvizo <[email protected]>
Gerrit-Reviewer: Jenkins <[email protected]>
Gerrit-Reviewer: Vijay Sarathy <[email protected]>
Gerrit-Reviewer: Wail Alkowaileet <[email protected]>
Gerrit-Reviewer: [email protected]
Gerrit-MessageType: merged

Reply via email to