1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.waarp.openr66.context.task;
21
22 import org.waarp.common.logging.WaarpLogger;
23 import org.waarp.common.logging.WaarpLoggerFactory;
24 import org.waarp.common.tar.ZipUtility;
25 import org.waarp.openr66.context.R66Session;
26 import org.waarp.openr66.protocol.exception.OpenR66ProtocolSystemException;
27
28 import java.io.File;
29 import java.io.IOException;
30 import java.util.ArrayList;
31 import java.util.List;
32
33
34
35
36 public class ZipTask extends AbstractTask {
37
38
39
40 private static final WaarpLogger logger =
41 WaarpLoggerFactory.getLogger(ZipTask.class);
42
43
44
45
46
47
48
49 public ZipTask(final String argRule, final int delay,
50 final String argTransfer, final R66Session session) {
51 super(TaskType.ZIP, delay, argRule, argTransfer, session);
52 }
53
54 @Override
55 public final void run() {
56 logger.info("ZIP with {}:{}:{} and {}", argRule, argTransfer, delay,
57 session);
58 String finalname = argRule;
59 finalname = getReplacedValue(finalname, BLANK.split(argTransfer));
60 boolean zip;
61 switch (delay) {
62 case 2: {
63
64 final String[] args = BLANK.split(finalname);
65 zip = ZipUtility.createZipFromDirectory(args[1], args[0], true);
66 break;
67 }
68 case 3: {
69
70 final String[] args = BLANK.split(finalname);
71 final List<File> files = new ArrayList<File>(args.length - 1);
72 for (int i = 1; i < args.length; i++) {
73 files.add(new File(args[i]));
74 }
75 zip = ZipUtility.createZipFromFiles(files, args[0]);
76 break;
77 }
78 default: {
79
80
81 final String[] args = BLANK.split(finalname);
82 final File zipFile = new File(args[0]);
83 final File directory = new File(args[1]);
84 try {
85 ZipUtility.unZip(zipFile, directory);
86 zip = true;
87 } catch (final IOException e) {
88 logger.warn("Error while unzip" + " : {}", e.getMessage());
89 zip = false;
90 }
91 break;
92 }
93 }
94 if (!zip) {
95 logger.error(
96 "Zip error with " + argRule + ':' + argTransfer + ':' + delay +
97 " and " + session);
98 futureCompletion.setFailure(
99 new OpenR66ProtocolSystemException("Zip error"));
100 return;
101 }
102 futureCompletion.setSuccess();
103 }
104
105 }