001 package tecgraf.openbus.opendreams;
002
003 import java.util.Arrays;
004 import java.util.HashMap;
005 import java.util.List;
006
007 import tecgraf.openbus.DRMAA.FileTransferMode;
008 import tecgraf.openbus.DRMAA.JobSubmissionState;
009 import tecgraf.openbus.DRMAA.JobTemplateImpl;
010
011 /**
012 * A classe <code>OpenDreamsJobTemplateImpl</code> implementa um
013 * <code>OpenDreamsJobTemplate</code>.
014 *
015 * Um job template do OpenDreams possui, além dos atributos default do job
016 * template, outros atributos que são específicos para execução de algoritmos ou
017 * fluxo de algoritmos no OpenDreams. Esses atributos adicionais são:
018 * <ul>
019 * <li>jobParameters: o conjunto de chave-valor que define os parâmetros dos
020 * algoritmos.
021 * </ul>
022 *
023 * @author Tecgraf PUC-Rio
024 *
025 */
026 public class OpenDreamsJobTemplateImpl extends OpenDreamsJobTemplate {
027
028 /** Mapa com os parâmetros para execução do job */
029 protected HashMap<String, String> jobParametersMap;
030
031 /**
032 * Construtor.
033 */
034 public OpenDreamsJobTemplateImpl() {
035 this.id = new TStamp().toLong();
036 this.remoteCommand = "";
037 this.args = new String[0];
038 this.jobSubmissionState = JobSubmissionState.ACTIVE_STATE;
039 this.jobEnvironment = new String[0][0];
040 this.email = new String[0];
041 this.blockEmail = false;
042 this.transferFiles = new FileTransferMode(false, false, false);
043 this.jobParameters = new String[0][0];
044 this.jobParametersMap = new HashMap<String, String>();
045 this.jobCategory = "CSBase";
046 }
047
048 @Override
049 public boolean equals(Object o) {
050 if (o == null) {
051 return false;
052 }
053 if (!OpenDreamsJobTemplateImpl.class.isInstance(o)) {
054 return false;
055 }
056 OpenDreamsJobTemplateImpl other = OpenDreamsJobTemplateImpl.class.cast(o);
057 return this.id == other.id;
058 }
059
060 @Override
061 public int hashCode() {
062 return (int) id;
063 }
064
065 @Override
066 public String[] attributeNames() {
067 List<String> allAttributes =
068 Arrays.asList(JobTemplateImpl.getAttributeNames());
069 allAttributes.add("job_parameters");
070 allAttributes.add("job_description");
071 allAttributes.add("job_priority");
072 return allAttributes.toArray(new String[0]);
073 }
074 }