diff --git a/ccm-core/pom.xml b/ccm-core/pom.xml
index 76d8f3c02..49f1dedf2 100644
--- a/ccm-core/pom.xml
+++ b/ccm-core/pom.xml
@@ -165,7 +165,7 @@
org.bouncycastle
bcprov-jdk16
-
+
net.sf.jtidy
jtidy
diff --git a/ccm-core/src/main/java/org/libreccm/imexport/ImportExport.java b/ccm-core/src/main/java/org/libreccm/imexport/ImportExport.java
index 4a57a6593..1975136cc 100644
--- a/ccm-core/src/main/java/org/libreccm/imexport/ImportExport.java
+++ b/ccm-core/src/main/java/org/libreccm/imexport/ImportExport.java
@@ -89,9 +89,9 @@ public class ImportExport {
*
* @see CcmFilesConfiguration#dataPath
*/
- public void exportEntities(final List entities,
- final String exportName) {
-
+ public void exportEntities(
+ final List entities, final String exportName
+ ) {
final JsonObjectBuilder manifestBuilder = Json.createObjectBuilder();
manifestBuilder.add("created",
LocalDateTime.now(ZoneId.of("UTC")).toString());
@@ -151,6 +151,14 @@ public class ImportExport {
entry.getValue());
}
}
+
+ public List getExportableEntityTypes() {
+ return imExporters
+ .stream()
+ .map(imexporter -> imexporter.getEntityClass().getName())
+ .sorted()
+ .collect(Collectors.toList());
+ }
@SuppressWarnings("unchecked")
private JsonArrayBuilder createExportedEntities(
@@ -254,12 +262,12 @@ public class ImportExport {
}
final List> imExportersList
- = new ArrayList<>();
+ = new ArrayList<>();
imExporters.forEach(imExporter -> imExportersList.add(imExporter));
try {
final EntityImExporterTreeManager treeManager
- = new EntityImExporterTreeManager();
+ = new EntityImExporterTreeManager();
final List tree = treeManager
.generateTree(imExportersList);
final List orderedNodes = treeManager
@@ -332,7 +340,7 @@ public class ImportExport {
type,
fileName);
try (final InputStream inputStream
- = ccmFiles.createInputStream(filePath)) {
+ = ccmFiles.createInputStream(filePath)) {
final String data = new BufferedReader(
new InputStreamReader(inputStream, StandardCharsets.UTF_8))
@@ -429,7 +437,7 @@ public class ImportExport {
// .collect(Collectors.toList());
final JsonArray typesArray = manifestJson.getJsonArray("types");
final List types = new ArrayList<>();
- for(int i = 0; i < typesArray.size(); i++) {
+ for (int i = 0; i < typesArray.size(); i++) {
types.add(typesArray.getString(i));
}
diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/imexport/ImExportController.java b/ccm-core/src/main/java/org/libreccm/ui/admin/imexport/ImExportController.java
index a89b01927..51e40a6dc 100644
--- a/ccm-core/src/main/java/org/libreccm/ui/admin/imexport/ImExportController.java
+++ b/ccm-core/src/main/java/org/libreccm/ui/admin/imexport/ImExportController.java
@@ -18,12 +18,17 @@
*/
package org.libreccm.ui.admin.imexport;
+import com.arsdigita.ui.admin.importexport.ImportExportMonitor;
+
import org.libreccm.core.CoreConstants;
+import org.libreccm.imexport.ImportExport;
import org.libreccm.security.AuthorizationRequired;
import org.libreccm.security.RequiresPrivilege;
import javax.enterprise.context.RequestScoped;
+import javax.inject.Inject;
import javax.mvc.Controller;
+import javax.mvc.Models;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@@ -35,12 +40,31 @@ import javax.ws.rs.Path;
@Controller
@Path("/imexport")
public class ImExportController {
+
+ @Inject
+ private ImportExport importExport;
+
+ @Inject
+ private ImportExportMonitor importExportMonitor;
+ @Inject
+ private Models models;
+
@GET
@Path("/")
@AuthorizationRequired
@RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
public String getImExportDashboard() {
- return "org/libreccm/ui/admin/imexport.xhtml";
+ return "org/libreccm/ui/admin/imexport/imexport.xhtml";
+ }
+
+ @GET
+ @Path("/export")
+ @AuthorizationRequired
+ @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
+ public String exportEntities() {
+ models.put("exportables", importExport.getExportableEntityTypes());
+
+ return "org/libreccm/ui/admin/imexport/export.xhtml";
}
}
diff --git a/ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/imexport/export.xhtml b/ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/imexport/export.xhtml
new file mode 100644
index 000000000..e02320160
--- /dev/null
+++ b/ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/imexport/export.xhtml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+ #{AdminMessages['imexport.label']}
+
+
+
+ #{AdminMessages['imexport.export.label']}
+
+
+
+
+
+
+
#{AdminMessages['imexport.export.label']}
+
+
Exportable classes
+
+
+
Placeholder
+
+
+
+
+
+
diff --git a/ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/imexport.xhtml b/ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/imexport/imexport.xhtml
similarity index 100%
rename from ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/imexport.xhtml
rename to ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/imexport/imexport.xhtml