CreatePackageStep.java 4 KB
/*
 * 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;
    }
}