CreatePackageStep.java
4 KB
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* com.day.jcr.vault.fs.api.PathFilterSet
* com.day.jcr.vault.fs.api.ProgressTrackerListener
* com.day.jcr.vault.fs.api.WorkspaceFilter
* com.day.jcr.vault.fs.config.DefaultWorkspaceFilter
* com.day.jcr.vault.packaging.JcrPackage
* com.day.jcr.vault.packaging.JcrPackageDefinition
* com.day.jcr.vault.packaging.JcrPackageManager
* com.day.jcr.vault.packaging.PackagingService
* com.day.jcr.vault.util.HtmlProgressListener
* javax.jcr.Node
* javax.jcr.Session
* org.apache.felix.scr.annotations.Component
* org.apache.felix.scr.annotations.Properties
* org.apache.felix.scr.annotations.Property
* org.apache.felix.scr.annotations.Service
* org.apache.sling.api.resource.ResourceResolver
*/
package com.day.cq.wcm.siteimporter.internal.steps;
import com.day.cq.wcm.siteimporter.ImporterContext;
import com.day.cq.wcm.siteimporter.ImporterStep;
import com.day.cq.wcm.siteimporter.internal.steps.AbstractImporterStep;
import com.day.jcr.vault.fs.api.PathFilterSet;
import com.day.jcr.vault.fs.api.ProgressTrackerListener;
import com.day.jcr.vault.fs.api.WorkspaceFilter;
import com.day.jcr.vault.fs.config.DefaultWorkspaceFilter;
import com.day.jcr.vault.packaging.JcrPackage;
import com.day.jcr.vault.packaging.JcrPackageDefinition;
import com.day.jcr.vault.packaging.JcrPackageManager;
import com.day.jcr.vault.packaging.PackagingService;
import com.day.jcr.vault.util.HtmlProgressListener;
import java.io.PrintWriter;
import java.io.Writer;
import java.util.List;
import javax.jcr.Node;
import javax.jcr.Session;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.ResourceResolver;
@Component(metatype=0)
@Service(value={ImporterStep.class})
@Properties(value={@Property(name="importerstep.order", intValue={800})})
public class CreatePackageStep
extends AbstractImporterStep {
@Override
public boolean execute(ImporterContext ctx) {
ctx.output("Creating Package", "heading");
ctx.doIndent();
try {
String name = ctx.getProjectName();
Session sess = (Session)ctx.getResolver().adaptTo(Session.class);
JcrPackageManager packMgr = PackagingService.getPackageManager((Session)sess);
String packPath = name + "/" + name + ".zip";
Node packages = packMgr.getPackageRoot();
if (packages.hasNode(packPath)) {
if (ctx.isOverwrite()) {
packages.getNode(packPath).remove();
packages.getSession().save();
} else {
ctx.error("Could not create package, maybe tick overwrite option");
ctx.undoIndent();
return false;
}
}
JcrPackage pack = packMgr.create(name, name);
pack.getDefinition().set("cqVersion", "5.5", true);
ctx.output("Created Content Package");
DefaultWorkspaceFilter filters = new DefaultWorkspaceFilter();
for (String path : ctx.getPaths()) {
filters.add(new PathFilterSet(path));
}
pack.getDefinition().setFilter((WorkspaceFilter)filters, true);
packMgr.assemble(pack, (ProgressTrackerListener)new HtmlProgressListener((Writer)ctx.getWriter()));
ctx.output("Added Paths to Package");
String path2 = ctx.getContextPath() + pack.getNode().getPath();
ctx.output("Download the final <a href=\"" + path2 + "\">package</a> or open <a href=\"" + path2 + ".html\">package manager</a>");
}
catch (Exception e) {
ctx.error("Repository Failure during Package creation: " + e.getMessage(), e);
ctx.undoIndent();
return false;
}
ctx.output("Created Content Package");
ctx.undoIndent();
return true;
}
}