extensions/net.sf.basedb.opengrid/trunk/src/net/sf/basedb/opengrid/JobIdentifier.java

Code
Comments
Other
Rev Date Author Line
4203 02 Nov 16 nicklas 1 package net.sf.basedb.opengrid;
4203 02 Nov 16 nicklas 2
4203 02 Nov 16 nicklas 3 import net.sf.basedb.core.Job;
4203 02 Nov 16 nicklas 4
4203 02 Nov 16 nicklas 5 /**
4203 02 Nov 16 nicklas 6   Represents an identifier for a job on an Open Grid Scheduler
4203 02 Nov 16 nicklas 7   cluster. The cluster id and job id is required while the BASE
4203 02 Nov 16 nicklas 8   job id is optional.
4203 02 Nov 16 nicklas 9   
4203 02 Nov 16 nicklas 10   @author nicklas
4203 02 Nov 16 nicklas 11   @since 1.0
4203 02 Nov 16 nicklas 12 */
4203 02 Nov 16 nicklas 13 public class JobIdentifier 
4203 02 Nov 16 nicklas 14 {
4203 02 Nov 16 nicklas 15
4203 02 Nov 16 nicklas 16   private final String clusterId;
4203 02 Nov 16 nicklas 17   private final String clusterJobId;
4203 02 Nov 16 nicklas 18   private final int baseJobId;
4203 02 Nov 16 nicklas 19   
4203 02 Nov 16 nicklas 20   /**
4203 02 Nov 16 nicklas 21     Creates a job identifier for a job on a cluster that has
4203 02 Nov 16 nicklas 22     a known job in BASE.
4203 02 Nov 16 nicklas 23   */
4203 02 Nov 16 nicklas 24   public JobIdentifier(String clusterId, String clusterJobId, int baseJobId)
4203 02 Nov 16 nicklas 25   {
4203 02 Nov 16 nicklas 26     this.clusterId = clusterId;
4203 02 Nov 16 nicklas 27     this.clusterJobId = clusterJobId;
4203 02 Nov 16 nicklas 28     this.baseJobId = baseJobId;
4203 02 Nov 16 nicklas 29   }
4203 02 Nov 16 nicklas 30   
4203 02 Nov 16 nicklas 31   /**
4203 02 Nov 16 nicklas 32     Creates a job identifier for a job on a cluster that has
4203 02 Nov 16 nicklas 33     no known job in BASE.
4203 02 Nov 16 nicklas 34   */
4203 02 Nov 16 nicklas 35   public JobIdentifier(String clusterId, String clusterJobId)
4203 02 Nov 16 nicklas 36   {
4203 02 Nov 16 nicklas 37     this(clusterId, clusterJobId, 0);
4203 02 Nov 16 nicklas 38   }
4203 02 Nov 16 nicklas 39   
4203 02 Nov 16 nicklas 40   /**
4203 02 Nov 16 nicklas 41     Creates a job identifier for a job on a cluster that has
4203 02 Nov 16 nicklas 42     a known job in BASE.
4203 02 Nov 16 nicklas 43   */
4203 02 Nov 16 nicklas 44   public JobIdentifier(String clusterId, String clusterJobId, Job baseJob)
4203 02 Nov 16 nicklas 45   {
4203 02 Nov 16 nicklas 46     this(clusterId, clusterJobId, baseJob == null ? 0 : baseJob.getId());
4203 02 Nov 16 nicklas 47   }
4203 02 Nov 16 nicklas 48
4203 02 Nov 16 nicklas 49   /**
4203 02 Nov 16 nicklas 50     Get the ID of the cluster the job is located on.
4203 02 Nov 16 nicklas 51   */
4203 02 Nov 16 nicklas 52   public String getClusterId()
4203 02 Nov 16 nicklas 53   {
4203 02 Nov 16 nicklas 54     return clusterId;
4203 02 Nov 16 nicklas 55   }
4203 02 Nov 16 nicklas 56   
4203 02 Nov 16 nicklas 57   /**
4203 02 Nov 16 nicklas 58     Get the (Open Grid Schedulre) ID of the job.
4203 02 Nov 16 nicklas 59   */
4203 02 Nov 16 nicklas 60   public String getClusterJobId()
4203 02 Nov 16 nicklas 61   {
4203 02 Nov 16 nicklas 62     return clusterJobId;
4203 02 Nov 16 nicklas 63   }
4203 02 Nov 16 nicklas 64   
4203 02 Nov 16 nicklas 65   /**
4203 02 Nov 16 nicklas 66     Get the corresponding job id in BASE.
4203 02 Nov 16 nicklas 67   */
4203 02 Nov 16 nicklas 68   public int getBaseJobId()
4203 02 Nov 16 nicklas 69   {
4203 02 Nov 16 nicklas 70     return baseJobId;
4203 02 Nov 16 nicklas 71   }
4203 02 Nov 16 nicklas 72
4203 02 Nov 16 nicklas 73   /**
4203 02 Nov 16 nicklas 74     Equality is based on the cluster id and job id only. BASE internal id is
4203 02 Nov 16 nicklas 75     ignored.
4203 02 Nov 16 nicklas 76   */
4203 02 Nov 16 nicklas 77   @Override
4203 02 Nov 16 nicklas 78   public boolean equals(Object other) 
4203 02 Nov 16 nicklas 79   {
4203 02 Nov 16 nicklas 80     if (other == null) return false;
4203 02 Nov 16 nicklas 81     if (other.getClass() != this.getClass()) return false;
4203 02 Nov 16 nicklas 82     JobIdentifier o = (JobIdentifier)other;
4203 02 Nov 16 nicklas 83     return clusterId.equals(o.clusterId) && clusterJobId.equals(o.clusterJobId);
4203 02 Nov 16 nicklas 84   }
4203 02 Nov 16 nicklas 85
4203 02 Nov 16 nicklas 86   @Override
4203 02 Nov 16 nicklas 87   public int hashCode() 
4203 02 Nov 16 nicklas 88   {
4203 02 Nov 16 nicklas 89     return 7 * clusterId.hashCode() + clusterJobId.hashCode();
4203 02 Nov 16 nicklas 90   }
4203 02 Nov 16 nicklas 91
4203 02 Nov 16 nicklas 92   @Override
4203 02 Nov 16 nicklas 93   public String toString() 
4203 02 Nov 16 nicklas 94   {
4203 02 Nov 16 nicklas 95     return "JobIdentifier#"+clusterJobId+"#"+baseJobId+"["+clusterId+"]";
4203 02 Nov 16 nicklas 96   }
4203 02 Nov 16 nicklas 97   
4203 02 Nov 16 nicklas 98 }