1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.waarp.openr66.s3.taskfactory;
21
22 import org.waarp.common.logging.WaarpLogger;
23 import org.waarp.common.logging.WaarpLoggerFactory;
24 import org.waarp.openr66.context.R66Session;
25 import org.waarp.openr66.context.task.AbstractTask;
26 import org.waarp.openr66.context.task.S3DeleteTask;
27 import org.waarp.openr66.context.task.S3GetAndDeleteTask;
28 import org.waarp.openr66.context.task.S3GetTask;
29 import org.waarp.openr66.context.task.S3PutAndR66DeleteTask;
30 import org.waarp.openr66.context.task.S3PutTask;
31 import org.waarp.openr66.context.task.exception.OpenR66RunnerErrorException;
32 import org.waarp.openr66.context.task.extension.AbstractExtendedTaskFactory;
33
34 import java.util.HashSet;
35 import java.util.Set;
36
37 import static org.waarp.openr66.context.task.TaskType.*;
38
39
40
41
42 public class S3TaskFactory extends AbstractExtendedTaskFactory {
43
44
45
46 private static final WaarpLogger logger =
47 WaarpLoggerFactory.getLogger(S3TaskType.class);
48
49 public enum S3TaskType {
50 S3GET, S3PUT, S3DELETE, S3PUTR66DELETE, S3GETDELETE;
51
52 final String name;
53
54 S3TaskType() {
55 name = name();
56 }
57 }
58
59
60
61
62 public S3TaskFactory() {
63 final S3TaskType[] s3TaskTypes = S3TaskType.values();
64 final Set<String> s3TaskNames = new HashSet<>(s3TaskTypes.length);
65 for (final S3TaskType s3TaskType : s3TaskTypes) {
66 s3TaskNames.add(s3TaskType.name);
67 }
68 create(s3TaskNames);
69 }
70
71 private AbstractTask getTaskFromId(final S3TaskType type,
72 final String argRule, final int delay,
73 final R66Session session)
74 throws OpenR66RunnerErrorException {
75 switch (type) {
76 case S3GET:
77 return new S3GetTask(argRule, delay,
78 session.getRunner().getFileInformation(), session);
79 case S3GETDELETE:
80 return new S3GetAndDeleteTask(argRule, delay,
81 session.getRunner().getFileInformation(),
82 session);
83 case S3PUT:
84 return new S3PutTask(argRule, delay,
85 session.getRunner().getFileInformation(), session);
86 case S3DELETE:
87 return new S3DeleteTask(argRule, delay,
88 session.getRunner().getFileInformation(),
89 session);
90 case S3PUTR66DELETE:
91 return new S3PutAndR66DeleteTask(argRule, delay, session.getRunner()
92 .getFileInformation(),
93 session);
94 default:
95 logger.error(NAME_UNKNOWN + type.name);
96 throw new OpenR66RunnerErrorException(UNVALID_TASK + type.name);
97 }
98 }
99
100 @Override
101 public final String getName() {
102 return S3TaskFactory.class.getSimpleName();
103 }
104
105 @Override
106 public final AbstractTask getTaskFromId(final String name,
107 final String argRule, final int delay,
108 final R66Session session)
109 throws OpenR66RunnerErrorException {
110 final S3TaskType type;
111 try {
112 type = S3TaskType.valueOf(name);
113 } catch (final NullPointerException e) {
114 logger.error("name empty " + name);
115 throw new OpenR66RunnerErrorException(UNVALID_TASK + name);
116 } catch (final IllegalArgumentException e) {
117 logger.error(NAME_UNKNOWN + name);
118 throw new OpenR66RunnerErrorException(UNVALID_TASK + name);
119 }
120 return getTaskFromId(type, argRule, delay, session);
121 }
122
123 @Override
124 public final AbstractTask getTaskFromIdForBusiness(final String name,
125 final String argRule,
126 final int delay,
127 final R66Session session)
128 throws OpenR66RunnerErrorException {
129 final S3TaskType type;
130 try {
131 type = S3TaskType.valueOf(name);
132 } catch (final NullPointerException e) {
133 logger.error("name empty " + name);
134 throw new OpenR66RunnerErrorException(UNVALID_TASK + name);
135 } catch (final IllegalArgumentException e) {
136 logger.error(NAME_UNKNOWN + name);
137 throw new OpenR66RunnerErrorException(UNVALID_TASK + name);
138 }
139 return getTaskFromId(type, argRule, delay, session);
140 }
141 }