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 }