You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@samza.apache.org by jg...@apache.org on 2014/07/14 23:22:54 UTC

git commit: SAMZA-331: SystemStreamPartition should implement Comparable for sorting goodness

Repository: incubator-samza
Updated Branches:
  refs/heads/master ffb282784 -> 610ee8492


SAMZA-331: SystemStreamPartition should implement Comparable for sorting goodness


Project: http://git-wip-us.apache.org/repos/asf/incubator-samza/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-samza/commit/610ee849
Tree: http://git-wip-us.apache.org/repos/asf/incubator-samza/tree/610ee849
Diff: http://git-wip-us.apache.org/repos/asf/incubator-samza/diff/610ee849

Branch: refs/heads/master
Commit: 610ee8492e0ef537d8a109262bd1ed65aeac1eb8
Parents: ffb2827
Author: Jakob Homan <jg...@apache.org>
Authored: Mon Jul 14 14:22:48 2014 -0700
Committer: Jakob Homan <jg...@apache.org>
Committed: Mon Jul 14 14:22:48 2014 -0700

----------------------------------------------------------------------
 .../main/java/org/apache/samza/Partition.java   | 12 ++++++++-
 .../samza/system/SystemStreamPartition.java     | 26 ++++++++++++++++++--
 2 files changed, 35 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-samza/blob/610ee849/samza-api/src/main/java/org/apache/samza/Partition.java
----------------------------------------------------------------------
diff --git a/samza-api/src/main/java/org/apache/samza/Partition.java b/samza-api/src/main/java/org/apache/samza/Partition.java
index 66d517d..864f9bd 100644
--- a/samza-api/src/main/java/org/apache/samza/Partition.java
+++ b/samza-api/src/main/java/org/apache/samza/Partition.java
@@ -22,7 +22,7 @@ package org.apache.samza;
 /**
  * A numbered, ordered partition of a stream.
  */
-public class Partition {
+public class Partition implements Comparable<Partition> {
   private final int partition;
 
   /**
@@ -60,4 +60,14 @@ public class Partition {
   public String toString() {
     return "Partition [partition=" + partition + "]";
   }
+
+  @Override
+  public int compareTo(Partition that) {
+    if (partition < that.partition) {
+      return -1;
+    } else if (partition > that.partition) {
+      return 1;
+    }
+    return 0;
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-samza/blob/610ee849/samza-api/src/main/java/org/apache/samza/system/SystemStreamPartition.java
----------------------------------------------------------------------
diff --git a/samza-api/src/main/java/org/apache/samza/system/SystemStreamPartition.java b/samza-api/src/main/java/org/apache/samza/system/SystemStreamPartition.java
index 4fed4dc..8dcea09 100644
--- a/samza-api/src/main/java/org/apache/samza/system/SystemStreamPartition.java
+++ b/samza-api/src/main/java/org/apache/samza/system/SystemStreamPartition.java
@@ -24,9 +24,9 @@ import org.apache.samza.Partition;
 /**
  * Aggregate object representing a both the {@link org.apache.samza.system.SystemStream} and {@link org.apache.samza.Partition}.
  */
-public class SystemStreamPartition extends SystemStream {
+public class SystemStreamPartition extends SystemStream implements Comparable<SystemStreamPartition> {
   protected final Partition partition;
-  protected final int hash;
+  protected final int hash;  // precomputed as instances are immutable and often stored in hash-addressed data structures
 
   /**
    * Constructs a Samza stream partition object from specified components.
@@ -98,4 +98,26 @@ public class SystemStreamPartition extends SystemStream {
   public String toString() {
     return "SystemStreamPartition ["+ system + ", " + stream + ", " + partition.getPartitionId() + "]";
   }
+
+  @Override
+  public int compareTo(SystemStreamPartition that) {
+    if (this.system.compareTo(that.system) < 0) {
+      return -1;
+    } else if (this.system.compareTo(that.system) > 0) {
+      return 1;
+    }
+
+    if (this.stream.compareTo(that.stream) < 0) {
+      return -1;
+    } else if (this.stream.compareTo(that.stream) > 0) {
+      return 1;
+    }
+
+    if (this.partition.compareTo(that.partition) < 0) {
+      return -1;
+    } else if (this.partition.compareTo(that.partition) > 0) {
+      return 1;
+    }
+    return 0;
+  }
 }