1 package fr.in2p3.jsaga.impl.job;
2
3 import fr.in2p3.jsaga.adaptor.job.control.JobControlAdaptor;
4 import fr.in2p3.jsaga.adaptor.job.control.description.JobDescriptionTranslator;
5 import fr.in2p3.jsaga.adaptor.job.monitor.JobMonitorAdaptor;
6 import fr.in2p3.jsaga.engine.factories.JobAdaptorFactory;
7 import fr.in2p3.jsaga.engine.factories.JobMonitorAdaptorFactory;
8 import fr.in2p3.jsaga.engine.job.monitor.JobMonitorService;
9 import fr.in2p3.jsaga.impl.context.ContextImpl;
10 import fr.in2p3.jsaga.impl.job.description.SAGAJobDescriptionImpl;
11 import fr.in2p3.jsaga.impl.job.service.JobServiceImpl;
12 import fr.in2p3.jsaga.impl.session.SessionImpl;
13 import fr.in2p3.jsaga.sync.job.SyncJobFactory;
14 import org.ogf.saga.error.*;
15 import org.ogf.saga.job.*;
16 import org.ogf.saga.session.Session;
17 import org.ogf.saga.url.URL;
18
19 import java.util.Map;
20
21
22
23
24
25
26
27
28
29
30
31
32
33 public abstract class AbstractSyncJobFactoryImpl extends JobFactory implements SyncJobFactory {
34 private JobAdaptorFactory m_adaptorFactory;
35 private JobMonitorAdaptorFactory m_monitorAdaptorFactory;
36
37 public AbstractSyncJobFactoryImpl(JobAdaptorFactory adaptorFactory, JobMonitorAdaptorFactory monitorAdaptorFactory) {
38 m_adaptorFactory = adaptorFactory;
39 m_monitorAdaptorFactory = monitorAdaptorFactory;
40 }
41
42 protected JobDescription doCreateJobDescription() throws NotImplementedException {
43 try {
44 return new SAGAJobDescriptionImpl();
45 } catch (Exception e) {
46 throw new NotImplementedException("INTERNAL ERROR: Unexpected exception");
47 }
48 }
49
50
51 public JobService doCreateJobServiceSync(Session session, URL rm) throws NotImplementedException, BadParameterException, IncorrectURLException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, TimeoutException, NoSuccessException {
52 if (rm!=null && !rm.toString().equals("")) {
53
54 ContextImpl context;
55 try {
56 context = ((SessionImpl)session).getBestMatchingContext(rm);
57 } catch (DoesNotExistException e) {
58 throw new NoSuccessException(e);
59 }
60
61
62 JobControlAdaptor controlAdaptor = m_adaptorFactory.getJobControlAdaptor(rm, context);
63 JobMonitorAdaptor monitorAdaptor = m_monitorAdaptorFactory.getJobMonitorAdaptor(controlAdaptor);
64
65
66 Map attributes = m_adaptorFactory.getAttribute(rm, context);
67
68
69 m_adaptorFactory.connect(rm, controlAdaptor, attributes, context);
70 m_monitorAdaptorFactory.connect(rm, monitorAdaptor, attributes, context);
71
72
73 JobDescriptionTranslator translator = controlAdaptor.getJobDescriptionTranslator();
74 if (rm.getHost()!=null) {
75 translator.setAttribute(JobDescriptionTranslator.HOSTNAME, rm.getHost());
76 }
77 for (Object o : attributes.entrySet()) {
78 Map.Entry attr = (Map.Entry) o;
79 translator.setAttribute(""+attr.getKey(), ""+attr.getValue());
80 }
81
82
83 JobMonitorService monitorService = new JobMonitorService(rm, monitorAdaptor, attributes);
84 JobServiceImpl jobService = new JobServiceImpl(session, rm, controlAdaptor, monitorService, translator);
85
86
87 context.registerJobService(jobService);
88 return jobService;
89 } else {
90 throw new NotImplementedException("Resource discovery not yet implemented");
91 }
92 }
93 }