1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.module.delta;
35
36 import info.magnolia.init.MagnoliaConfigurationProperties;
37 import info.magnolia.module.InstallContext;
38 import info.magnolia.objectfactory.Components;
39 import info.magnolia.repository.RepositoryConstants;
40
41 import java.io.File;
42 import java.io.IOException;
43
44 import javax.jcr.Node;
45 import javax.jcr.RepositoryException;
46 import javax.jcr.Session;
47
48 import org.apache.commons.io.FileUtils;
49
50
51
52
53 public class RemoveInstallFilesTask extends AbstractRepositoryTask {
54
55 protected static final String INSTALL_FILES_PATH = "/server/install/mgnl-files/";
56 private final String filesPath;
57
58 public RemoveInstallFilesTask(String name, String filesPath) {
59 this(name, String.format("Removes install files '%s'.", filesPath), filesPath);
60 }
61
62 public RemoveInstallFilesTask(String name, String description, String filesPath) {
63 super(name, description);
64 this.filesPath = filesPath;
65 }
66
67 @Override
68 protected void doExecute(InstallContext ctx) throws RepositoryException, TaskExecutionException {
69
70 final Session session = ctx.getJCRSession(RepositoryConstants.CONFIG);
71
72 if (!session.nodeExists(INSTALL_FILES_PATH + filesPath)) {
73 ctx.warn(String.format("Was supposed to remove md5 for file '%s' but the md5 node '%s' was not found.", filesPath, INSTALL_FILES_PATH + filesPath));
74 } else {
75 Node remove = session.getNode(INSTALL_FILES_PATH + filesPath);
76 remove.remove();
77 }
78
79 String fileSystemPath = Components.getComponent(MagnoliaConfigurationProperties.class).getProperty("magnolia.home");
80 File file = new File(fileSystemPath + "/" + filesPath);
81
82 if (!file.exists()) {
83 ctx.warn(String.format("Was supposed to remove file '%s' but the file was not found.", file));
84 return;
85 }
86 try {
87 if (file.isDirectory()) {
88 FileUtils.deleteDirectory(file);
89 } else {
90 file.delete();
91 }
92 } catch (IOException e) {
93 ctx.error(String.format("Was supposed to remove file '%s' but failed with exception:", file), e);
94 }
95 }
96 }