src/core/net/sf/basedb/util/jobagent/JobInfo.java

Code
Comments
Other
Rev Date Author Line
4070 18 Dec 07 nicklas 1 /**
4070 18 Dec 07 nicklas 2   $Id$
4070 18 Dec 07 nicklas 3
4070 18 Dec 07 nicklas 4   Copyright (C) Authors contributing to this file.
4070 18 Dec 07 nicklas 5
4070 18 Dec 07 nicklas 6   This file is part of BASE - BioArray Software Environment.
4070 18 Dec 07 nicklas 7   Available at http://base.thep.lu.se/
4070 18 Dec 07 nicklas 8
4070 18 Dec 07 nicklas 9   BASE is free software; you can redistribute it and/or
4070 18 Dec 07 nicklas 10   modify it under the terms of the GNU General Public License
4479 05 Sep 08 jari 11   as published by the Free Software Foundation; either version 3
4070 18 Dec 07 nicklas 12   of the License, or (at your option) any later version.
4070 18 Dec 07 nicklas 13
4070 18 Dec 07 nicklas 14   BASE is distributed in the hope that it will be useful,
4070 18 Dec 07 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
4070 18 Dec 07 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4070 18 Dec 07 nicklas 17   GNU General Public License for more details.
4070 18 Dec 07 nicklas 18
4070 18 Dec 07 nicklas 19   You should have received a copy of the GNU General Public License
4515 11 Sep 08 jari 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
4070 18 Dec 07 nicklas 21 */
4070 18 Dec 07 nicklas 22 package net.sf.basedb.util.jobagent;
4070 18 Dec 07 nicklas 23
4070 18 Dec 07 nicklas 24 import java.util.List;
4070 18 Dec 07 nicklas 25 import java.util.Map;
4070 18 Dec 07 nicklas 26
4070 18 Dec 07 nicklas 27 import net.sf.basedb.core.Job;
4070 18 Dec 07 nicklas 28
4070 18 Dec 07 nicklas 29 /**
4070 18 Dec 07 nicklas 30   Hold information about a job that is running on a job agent.
4070 18 Dec 07 nicklas 31
4070 18 Dec 07 nicklas 32   @author nicklas
4070 18 Dec 07 nicklas 33   @version 2.6
4070 18 Dec 07 nicklas 34   @base.modified $Date$
4070 18 Dec 07 nicklas 35 */
4070 18 Dec 07 nicklas 36 public class JobInfo
4070 18 Dec 07 nicklas 37 {
4070 18 Dec 07 nicklas 38   private int jobId;
4070 18 Dec 07 nicklas 39   private Job.ExecutionTime slot;
4070 18 Dec 07 nicklas 40   
4070 18 Dec 07 nicklas 41   /**
4070 18 Dec 07 nicklas 42     Create a new JobInfo object. 
4070 18 Dec 07 nicklas 43   */
4070 18 Dec 07 nicklas 44   public JobInfo(Job job, Job.ExecutionTime slot)
4070 18 Dec 07 nicklas 45   {
4070 18 Dec 07 nicklas 46     this.jobId = job.getId();
4070 18 Dec 07 nicklas 47     this.slot = slot;
4070 18 Dec 07 nicklas 48   }
4070 18 Dec 07 nicklas 49
4070 18 Dec 07 nicklas 50   /**
4070 18 Dec 07 nicklas 51     Create a new JobInfo object using information from the answer to a
4070 18 Dec 07 nicklas 52     {@link JobAgentConnection} request.
4070 18 Dec 07 nicklas 53   */
4070 18 Dec 07 nicklas 54   JobInfo(int jobId, Map<String, List<String>> headers)
4070 18 Dec 07 nicklas 55   {
4070 18 Dec 07 nicklas 56     this.jobId = jobId;
4070 18 Dec 07 nicklas 57     String slotHeader = getValue(headers, "Job." + jobId + ".slot");
4070 18 Dec 07 nicklas 58     this.slot = slotHeader == null ? 
4070 18 Dec 07 nicklas 59         null : Job.ExecutionTime.valueOf(slotHeader);  
4070 18 Dec 07 nicklas 60   }
4070 18 Dec 07 nicklas 61   
4070 18 Dec 07 nicklas 62   /**
4070 18 Dec 07 nicklas 63     Get the ID of the job.
4070 18 Dec 07 nicklas 64   */
4070 18 Dec 07 nicklas 65   public int getJobId()
4070 18 Dec 07 nicklas 66   {
4070 18 Dec 07 nicklas 67     return jobId;
4070 18 Dec 07 nicklas 68   }
4070 18 Dec 07 nicklas 69   
4070 18 Dec 07 nicklas 70   /**
4070 18 Dec 07 nicklas 71     Get the slot the job is using on the job agent.
4070 18 Dec 07 nicklas 72   */
4070 18 Dec 07 nicklas 73   public Job.ExecutionTime getSlot()
4070 18 Dec 07 nicklas 74   {
4070 18 Dec 07 nicklas 75     return slot;
4070 18 Dec 07 nicklas 76   }
4070 18 Dec 07 nicklas 77   
4070 18 Dec 07 nicklas 78   /**
4070 18 Dec 07 nicklas 79     Convert the information to a string that is suitable for sening as an
4070 18 Dec 07 nicklas 80     answer to a {@link JobAgentConnection} object.
4070 18 Dec 07 nicklas 81   */
4070 18 Dec 07 nicklas 82   @Override
4070 18 Dec 07 nicklas 83   public String toString()
4070 18 Dec 07 nicklas 84   {
4070 18 Dec 07 nicklas 85     StringBuilder sb = new StringBuilder();
4070 18 Dec 07 nicklas 86     sb.append("Job:").append(jobId).append("\n");
4070 18 Dec 07 nicklas 87     if (slot != null) 
4070 18 Dec 07 nicklas 88     {
4070 18 Dec 07 nicklas 89       sb.append("Job.").append(jobId).append(".slot:").append(slot.name()).append("\n");
4070 18 Dec 07 nicklas 90     }
4070 18 Dec 07 nicklas 91     return sb.toString();
4070 18 Dec 07 nicklas 92   }
4070 18 Dec 07 nicklas 93
4070 18 Dec 07 nicklas 94   private String getValue(Map<String, List<String>> headers, String header)
4070 18 Dec 07 nicklas 95   {
4070 18 Dec 07 nicklas 96     List<String> values = headers.get(header);
4070 18 Dec 07 nicklas 97     String value = null;
4070 18 Dec 07 nicklas 98     if (values != null && values.size() > 0)
4070 18 Dec 07 nicklas 99     {
4070 18 Dec 07 nicklas 100       value = values.get(0);
4070 18 Dec 07 nicklas 101     }
4070 18 Dec 07 nicklas 102     return value;
4070 18 Dec 07 nicklas 103   }
4070 18 Dec 07 nicklas 104
4070 18 Dec 07 nicklas 105   @Override
4070 18 Dec 07 nicklas 106   public boolean equals(Object other)
4070 18 Dec 07 nicklas 107   {
4070 18 Dec 07 nicklas 108     if (this == other) return true;
4070 18 Dec 07 nicklas 109     if (!(other instanceof JobInfo)) return false;
4070 18 Dec 07 nicklas 110     return this.jobId == ((JobInfo)other).jobId;
4070 18 Dec 07 nicklas 111   }
4070 18 Dec 07 nicklas 112   
4070 18 Dec 07 nicklas 113   @Override
4070 18 Dec 07 nicklas 114   public int hashCode()
4070 18 Dec 07 nicklas 115   {
4070 18 Dec 07 nicklas 116     return jobId;
4070 18 Dec 07 nicklas 117   }
4070 18 Dec 07 nicklas 118   
4070 18 Dec 07 nicklas 119 }