Some initial work for im/export ui

Former-commit-id: 6313ef9ab2
pull/7/head
Jens Pelzetter 2020-12-02 20:06:04 +01:00
parent dacca9c2a5
commit d3c0a322b3
5 changed files with 81 additions and 9 deletions

View File

@ -89,9 +89,9 @@ public class ImportExport {
*
* @see CcmFilesConfiguration#dataPath
*/
public void exportEntities(final List<Exportable> entities,
final String exportName) {
public void exportEntities(
final List<Exportable> entities, final String exportName
) {
final JsonObjectBuilder manifestBuilder = Json.createObjectBuilder();
manifestBuilder.add("created",
LocalDateTime.now(ZoneId.of("UTC")).toString());
@ -152,6 +152,14 @@ public class ImportExport {
}
}
public List<String> getExportableEntityTypes() {
return imExporters
.stream()
.map(imexporter -> imexporter.getEntityClass().getName())
.sorted()
.collect(Collectors.toList());
}
@SuppressWarnings("unchecked")
private JsonArrayBuilder createExportedEntities(
final String exportName,
@ -254,12 +262,12 @@ public class ImportExport {
}
final List<AbstractEntityImExporter<?>> imExportersList
= new ArrayList<>();
= new ArrayList<>();
imExporters.forEach(imExporter -> imExportersList.add(imExporter));
try {
final EntityImExporterTreeManager treeManager
= new EntityImExporterTreeManager();
= new EntityImExporterTreeManager();
final List<EntityImExporterTreeNode> tree = treeManager
.generateTree(imExportersList);
final List<EntityImExporterTreeNode> 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<String> types = new ArrayList<>();
for(int i = 0; i < typesArray.size(); i++) {
for (int i = 0; i < typesArray.size(); i++) {
types.add(typesArray.getString(i));
}

View File

@ -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;
@ -36,11 +41,30 @@ import javax.ws.rs.Path;
@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";
}
}

View File

@ -0,0 +1,40 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<ui:composition template="/WEB-INF/views/org/libreccm/ui/admin/ccm-admin.xhtml">
<ui:param name="activePage" value="imexport" />
<ui:param name="title" value="#{AdminMessages['imexport.label']}" />
<ui:define name="breadcrumb">
<li class="breadcrumb-item">
<a href="#{mvc.uri('ImExportController#getImExportDashboard')}">
#{AdminMessages['imexport.label']}
</a>
</li>
<li class="breadcrumb-item active">
#{AdminMessages['imexport.export.label']}
</li>
</ui:define>
<ui:define name="main">
<div class="container">
<h1>#{AdminMessages['imexport.export.label']}</h1>
<p>Exportable classes</p>
<ul>
<c:forEach items="#{exportables}" var="exportable">
<li><code>${exportable}</code></li>
</c:forEach>
</ul>
<p>Placeholder</p>
</div>
</ui:define>
</ui:composition>
</html>