From 5caacee0e8b697d031c0cd68d98e76510a795615 Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Wed, 2 Dec 2020 20:06:04 +0100 Subject: [PATCH] Some initial work for im/export ui --- ccm-core/pom.xml | 2 +- .../org/libreccm/imexport/ImportExport.java | 22 ++++++---- .../ui/admin/imexport/ImExportController.java | 26 +++++++++++- .../libreccm/ui/admin/imexport/export.xhtml | 40 +++++++++++++++++++ .../ui/admin/{ => imexport}/imexport.xhtml | 0 5 files changed, 81 insertions(+), 9 deletions(-) create mode 100644 ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/imexport/export.xhtml rename ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/{ => imexport}/imexport.xhtml (100%) 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.export.label']}

+ +

Exportable classes

+
    + +
  • ${exportable}
  • +
    +
+ +

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