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.content.action;
35
36 import info.magnolia.content.observer.ContentImporterModule;
37 import info.magnolia.context.Context;
38 import info.magnolia.importexport.DataTransporter;
39 import info.magnolia.importexport.postprocessors.ActivationStatusImportPostProcessor;
40 import info.magnolia.task.Task;
41 import info.magnolia.task.TasksManager;
42 import info.magnolia.ui.admincentral.shellapp.pulse.task.DefaultTaskDetailPresenter;
43 import info.magnolia.ui.admincentral.shellapp.pulse.task.action.ResolveTaskAction;
44 import info.magnolia.ui.admincentral.shellapp.pulse.task.action.ResolveTaskActionDefinition;
45 import info.magnolia.ui.api.shell.Shell;
46
47 import java.io.File;
48 import java.util.Map;
49
50 import javax.inject.Inject;
51 import javax.jcr.Session;
52
53
54
55
56
57 public class BootstrapAction extends ResolveTaskAction {
58
59 private final Context context;
60
61 @Inject
62 public BootstrapAction(Context context, ResolveTaskActionDefinition definition,
63 Task task, TasksManager taskManager,
64 DefaultTaskDetailPresenter taskPresenter, Shell shell) {
65 super(definition, task, taskManager, taskPresenter, shell);
66 this.context = context;
67 }
68
69 @Override
70 protected void executeTask(TasksManager taskManager, Task task) {
71 super.executeTask(taskManager, task);
72 Map<String, Object> taskContent = task.getContent();
73 String modifiedFilePath = (String) taskContent.get("path");
74 String repository = (String) taskContent.get("repository");
75
76 bootstrapImport(new File(modifiedFilePath), repository);
77 }
78
79
80
81
82 private void bootstrapImport(File file, String repository) {
83 try {
84 DataTransporter.executeBootstrapImport(file, repository);
85 Session session = context.getJCRSession(repository);
86 String node = ContentImporterModule.getJCRPath(file.toPath());
87 new ActivationStatusImportPostProcessor().postProcessNode(session.getNode(node));
88 session.save();
89 } catch (Exception e) {
90 throw new RuntimeException("Failed to import bootstrap content from '{" + file.getPath() + "}'", e);
91 }
92 }
93 }