1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.waarp.vitam.dip;
22
23 import fr.gouv.vitam.access.external.client.AccessExternalClient;
24 import fr.gouv.vitam.common.exception.InvalidParseOperationException;
25 import org.apache.commons.cli.CommandLine;
26 import org.apache.commons.cli.CommandLineParser;
27 import org.apache.commons.cli.DefaultParser;
28 import org.apache.commons.cli.HelpFormatter;
29 import org.apache.commons.cli.Options;
30 import org.apache.commons.cli.ParseException;
31 import org.waarp.common.logging.WaarpLogger;
32 import org.waarp.common.logging.WaarpLoggerFactory;
33 import org.waarp.common.utility.Version;
34 import org.waarp.openr66.configuration.FileBasedConfiguration;
35 import org.waarp.openr66.context.task.AbstractExecJavaTask;
36 import org.waarp.openr66.protocol.configuration.Configuration;
37 import org.waarp.vitam.common.WaarpCommon;
38 import org.waarp.vitam.common.WaarpCommon.TaskOption;
39
40 import java.io.File;
41
42
43
44
45
46 public class DipTask {
47
48
49
50 private static final WaarpLogger logger =
51 WaarpLoggerFactory.getLogger(DipTask.class);
52 private static File waarpConfigurationFile;
53 private static int statusMain;
54 private final TaskOption taskOption;
55 private final DipRequestFactory factory;
56 private final DipManager dipManager;
57
58
59
60
61
62
63
64
65 public DipTask(final TaskOption taskOption, final DipRequestFactory factory,
66 final DipManager dipManager) {
67 this.taskOption = taskOption;
68 this.factory = factory;
69 this.dipManager = dipManager;
70 }
71
72
73
74
75
76
77
78 public static void main(String[] args) {
79 Options options = getOptions();
80
81 if (args.length == 0 || WaarpCommon.checkHelp(args)) {
82 printHelp(options);
83 statusMain = 2;
84 return;
85 }
86 final DipTask dipTask;
87 try {
88 dipTask = getDipTask(options, args);
89 } catch (ParseException e) {
90 logger.error("Error while initializing " + DipTask.class.getSimpleName(),
91 e);
92 printHelp(options);
93 statusMain = 2;
94 return;
95 }
96 if (!FileBasedConfiguration
97 .setSubmitClientConfigurationFromXml(Configuration.configuration,
98 waarpConfigurationFile
99 .getAbsolutePath())) {
100 logger.error("Cannot load Waarp Configuration");
101 statusMain = 2;
102 return;
103 }
104 statusMain = dipTask.invoke();
105 }
106
107
108
109
110
111
112 private static Options getOptions() {
113 Options options = new Options();
114 TaskOption.setStandardTaskOptions(options);
115 options.addOption(DipRequestFactory.getDirectoryOption());
116 return options;
117 }
118
119
120
121
122
123
124 private static void printHelp(Options options) {
125 HelpFormatter formatter = new HelpFormatter();
126 formatter.printHelp(DipTask.class.getSimpleName(),
127 "Version: " + Version.fullIdentifier(), options,
128 WaarpCommon.FOR_MANDATORY_ARGUMENTS, true);
129 }
130
131
132
133
134
135
136
137
138
139
140
141 private static DipTask getDipTask(Options options, String[] args)
142 throws ParseException {
143 CommandLineParser parser = new DefaultParser();
144 CommandLine cmd = parser.parse(options, args);
145 DipRequestFactory.parseDirectoryOption(cmd);
146 TaskOption taskOption = TaskOption.getTaskOption(cmd, args);
147 waarpConfigurationFile = new File(taskOption.getWaarpConfigurationFile());
148 return new DipTask(taskOption, DipRequestFactory.getInstance(),
149 new DipManager());
150 }
151
152
153
154
155
156
157 public int invoke() {
158 try (AccessExternalClient client = factory.getClient()) {
159 DipRequestDipRequest">DipRequest dipRequest = new DipRequest(taskOption, factory);
160 return dipManager.select(factory, dipRequest, client);
161 } catch (InvalidParseOperationException e) {
162 logger.error("Issue since DipRequest cannot be saved", e);
163 }
164 return 2;
165 }
166
167
168
169
170 public static class JavaTask extends AbstractExecJavaTask {
171 @Override
172 public void run() {
173 String[] args;
174 if (!fullarg.contains("-s ") && !fullarg.contains("--session ")) {
175 try {
176 String key = this.session.getRunner().getKey();
177 args = BLANK.split(fullarg + " -s " + key);
178 } catch (Throwable e) {
179 args = BLANK.split(fullarg);
180 }
181 } else {
182 args = BLANK.split(fullarg);
183 }
184 main(args);
185 status = statusMain;
186 }
187 }
188 }