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