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.importexport.command;
35
36 import info.magnolia.commands.impl.BaseRepositoryCommand;
37 import info.magnolia.context.Context;
38 import info.magnolia.importexport.DataTransporter;
39 import info.magnolia.module.delta.BootstrapFileUtil;
40
41 import java.io.InputStream;
42
43 import javax.jcr.ImportUUIDBehavior;
44 import javax.jcr.Node;
45
46 import org.apache.commons.io.FilenameUtils;
47 import org.apache.commons.io.IOUtils;
48 import org.apache.commons.lang3.StringUtils;
49
50
51
52
53 public class JcrImportCommand extends BaseRepositoryCommand {
54
55 private boolean saveAfterImport = true;
56 private int identifierBehavior = ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW;
57 private String fileName;
58 private String importPath;
59 private InputStream stream;
60
61 @Override
62 public boolean execute(Context context) throws Exception {
63 try {
64 final Node node = context.getJCRSession(getRepository()).getNode(getPath());
65 final String extension = FilenameUtils.getExtension(getFileName());
66
67 if (StringUtils.equalsIgnoreCase(JcrExportCommand.Format.YAML.name(), extension)) {
68 DataTransporter.importYamlStream(getStream(), node, node.getSession().getWorkspace().getName(), node.getPath(), getImportPath(), getFileName(), false, isSaveAfterImport(), true);
69 } else {
70 final InputStream stream = importPath == null ? getStream() : BootstrapFileUtil.getElementAsStream(fileName, importPath);
71 DataTransporter.importXmlStream(stream, node.getSession().getWorkspace().getName(), node.getPath(), getFileName(), false, false, getIdentifierBehavior(), isSaveAfterImport(), true);
72 }
73 } finally {
74 if (stream != null) {
75 IOUtils.closeQuietly(stream);
76 }
77 }
78 return true;
79 }
80
81 public boolean isSaveAfterImport() {
82 return saveAfterImport;
83 }
84
85 public void setSaveAfterImport(boolean saveAfterImport) {
86 this.saveAfterImport = saveAfterImport;
87 }
88
89 public int getIdentifierBehavior() {
90 return identifierBehavior;
91 }
92
93 public void setIdentifierBehavior(int identifierBehavior) {
94 this.identifierBehavior = identifierBehavior;
95 }
96
97 public String getFileName() {
98 return fileName;
99 }
100
101 public void setFileName(String fileName) {
102 this.fileName = fileName;
103 }
104
105 public String getImportPath() {
106 return importPath;
107 }
108
109 public void setImportPath(String subPathToImport) {
110 this.importPath = subPathToImport;
111 }
112
113 public InputStream getStream() {
114 return stream;
115 }
116
117 public void setStream(InputStream stream) {
118 this.stream = stream;
119 }
120
121
122
123 }