1 package fr.in2p3.jsaga.impl.job.instance.stream;
2
3 import fr.in2p3.jsaga.adaptor.job.control.JobControlAdaptor;
4 import fr.in2p3.jsaga.adaptor.job.control.interactive.*;
5 import fr.in2p3.jsaga.impl.job.instance.AbstractSyncJobImpl;
6 import org.ogf.saga.error.*;
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public class StreamFactory {
21 public static Stdin createStdin(AbstractSyncJobImpl job, JobControlAdaptor adaptor) throws NotImplementedException, DoesNotExistException, TimeoutException, NoSuccessException {
22 if (adaptor instanceof StreamableJobInteractiveSet) {
23 return new PostconnectedStdinOutputStream(job);
24 } else {
25 return new JobStdinOutputStream(job);
26 }
27 }
28
29 public static Stdout createStdout(AbstractSyncJobImpl job, JobControlAdaptor adaptor, JobIOHandler ioHandler) throws NotImplementedException, PermissionDeniedException, DoesNotExistException, TimeoutException, NoSuccessException {
30 if (adaptor instanceof StreamableJobInteractiveGet) {
31 return new GetterInputStream(((JobIOGetterInteractive)ioHandler).getStdout());
32 } else if (adaptor instanceof StreamableJobInteractiveSet) {
33 return new PreconnectedStdoutInputStream(job);
34 } else if (adaptor instanceof StreamableJobBatch) {
35 return new JobStdoutInputStream(job, ioHandler);
36 } else {
37 throw new NotImplementedException("Unsupported streamable interface: "+adaptor.getClass().getName());
38 }
39 }
40
41 public static Stdout createStderr(AbstractSyncJobImpl job, JobControlAdaptor adaptor, JobIOHandler ioHandler) throws NotImplementedException, PermissionDeniedException, DoesNotExistException, TimeoutException, NoSuccessException {
42 if (adaptor instanceof StreamableJobInteractiveGet) {
43 return new GetterInputStream(((JobIOGetterInteractive)ioHandler).getStderr());
44 } else if (adaptor instanceof StreamableJobInteractiveSet) {
45 return new PreconnectedStderrInputStream(job);
46 } else if (adaptor instanceof StreamableJobBatch) {
47 return new JobStderrInputStream(job, ioHandler);
48 } else {
49 throw new NotImplementedException("Unsupported streamable interface: "+adaptor.getClass().getName());
50 }
51 }
52 }