Some improvements for the exporSome improvements for the exportt

git-svn-id: https://svn.libreccm.org/ccm/trunk@5715 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2018-10-26 15:32:11 +00:00
parent 8769dc6b68
commit 7bb93b2a46
14 changed files with 105 additions and 34 deletions

View File

@ -58,6 +58,8 @@ public class CategoriesExporter extends AbstractDomainObjectsExporter<Category>
try (JsonGenerator jsonGenerator = jsonFactory
.createGenerator(targetFile, JsonEncoding.UTF8)) {
setPrettyPrinter(jsonGenerator);
jsonGenerator.writeStartObject();
jsonGenerator.writeNumberField("objectId",

View File

@ -90,6 +90,8 @@ public class CategorizationsExporter
try (JsonGenerator jsonGenerator = jsonFactory
.createGenerator(targetFile, JsonEncoding.UTF8)) {
setPrettyPrinter(jsonGenerator);
jsonGenerator.writeStartObject();
jsonGenerator.writeNumberField("categorizationId",

View File

@ -43,6 +43,8 @@ public abstract class AbstractResourceTypesExporter<T extends ResourceType>
try (JsonGenerator jsonGenerator = jsonFactory
.createGenerator(targetFilePath.toFile(), JsonEncoding.UTF8)) {
setPrettyPrinter(jsonGenerator);
jsonGenerator.writeStartObject();
jsonGenerator.writeNumberField("resourceTypeId",

View File

@ -8,6 +8,9 @@ import com.arsdigita.persistence.Session;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.web.WebConfig;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.util.ArrayList;
@ -120,13 +123,23 @@ public abstract class AbstractDomainObjectsExporter<T extends DomainObject> {
.resolve(String.format("%s.json", uuid));
}
protected void setPrettyPrinter(final JsonGenerator jsonGenerator) {
final DefaultPrettyPrinter prettyPrinter
= new DefaultPrettyPrinter();
prettyPrinter.indentArraysWith(
DefaultPrettyPrinter.Lf2SpacesIndenter.instance);
jsonGenerator.setPrettyPrinter(prettyPrinter);
}
/**
* Retrieves all {@link DomainObject}s of the type returned by
* {@link #exportsBaseDataObjectType()} and calls
* {@link #exportDomainObject(com.arsdigita.domain.DomainObject, java.nio.file.Path)}
* for each of them.
*
*
* @param targetDir target directory for the export.
*
* @return The list of uuids of the the exported entites.
*/
@SuppressWarnings("unchecked")
@ -143,11 +156,15 @@ public abstract class AbstractDomainObjectsExporter<T extends DomainObject> {
final DomainObject domainObject = DomainObjectFactory
.newInstance(dataObject);
if (!(exportsType().isAssignableFrom(domainObject.getClass()))) {
throw new ExportException(String.format(
"DomainObject is not of type \"%s\" but of type \"%s\".",
exportsType().getName(),
domainObject.getClass().getName()));
// if (!(exportsType().isAssignableFrom(domainObject.getClass()))) {
// throw new ExportException(String.format(
// "DomainObject is not of type \"%s\" but of type \"%s\".",
// exportsType().getName(),
// domainObject.getClass().getName()));
// }
if (!exportsType().equals(domainObject.getClass())) {
// Is not exact type (sub class?). Skip.
continue;
}
domainObjects.add((T) domainObject);
@ -155,6 +172,8 @@ public abstract class AbstractDomainObjectsExporter<T extends DomainObject> {
final List<String> uuids = new ArrayList<>();
for (final T domainObject : domainObjects) {
System.out.printf("Exporting domain object %s...%n",
domainObject.getOID().toString());
final List<String> createdUuids = exportDomainObject(domainObject,
targetDir);
uuids.addAll(createdUuids);

View File

@ -11,8 +11,13 @@ import java.util.Map;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
import com.fasterxml.jackson.core.util.MinimalPrettyPrinter;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.io.IOException;
import java.io.StringWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.time.LocalDateTime;
@ -86,9 +91,14 @@ public final class ExportManager {
try (final JsonGenerator manifestGenerator = jsonFactory
.createGenerator(manifestFilePath.toFile(), JsonEncoding.UTF8)) {
manifestGenerator.writeStartObject();
final DefaultPrettyPrinter prettyPrinter
= new DefaultPrettyPrinter();
prettyPrinter.indentArraysWith(
DefaultPrettyPrinter.Lf2SpacesIndenter.instance);
manifestGenerator.setPrettyPrinter(prettyPrinter);
manifestGenerator.writeStartObject();
manifestGenerator.writeStringField(
"created",
LocalDateTime.now(ZoneId.of("UTC")).toString());
@ -102,7 +112,7 @@ public final class ExportManager {
manifestGenerator.writeString(type);
}
manifestGenerator.writeEndObject();
manifestGenerator.writeEndArray();
manifestGenerator.writeObjectFieldStart("entities");
@ -121,7 +131,6 @@ public final class ExportManager {
manifestGenerator.writeEndObject();
manifestGenerator.writeEndObject();
} catch (IOException ex) {
throw new UncheckedWrapperException(ex);
}

View File

@ -69,6 +69,8 @@ public class GroupMembershipsExporter
try (final JsonGenerator jsonGenerator = jsonFactory
.createGenerator(targetFilePath.toFile(), JsonEncoding.UTF8)) {
setPrettyPrinter(jsonGenerator);
jsonGenerator.writeStartObject();
jsonGenerator.writeNumberField("membershipId",
IdSequence.getInstance().nextId());

View File

@ -49,6 +49,8 @@ public class GroupsExporter extends AbstractDomainObjectsExporter<Group> {
try (final JsonGenerator jsonGenerator = jsonFactory
.createGenerator(targetFile, JsonEncoding.UTF8)) {
setPrettyPrinter(jsonGenerator);
jsonGenerator.writeStartObject();
jsonGenerator.writeNumberField("partyId",
IdSequence.getInstance().nextId());

View File

@ -3,9 +3,14 @@ package org.libreccm.security;
import com.arsdigita.domain.DomainObject;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.kernel.Group;
import com.arsdigita.kernel.Role;
import com.arsdigita.kernel.RoleCollection;
import com.arsdigita.kernel.permissions.Permission;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.Filter;
import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.Session;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.util.UncheckedWrapperException;
import com.arsdigita.web.WebConfig;
@ -82,6 +87,8 @@ public class PermissionsExporter extends AbstractDomainObjectsExporter<Permissio
try (JsonGenerator jsonGenerator = jsonFactory
.createGenerator(targetFilePath.toFile(), JsonEncoding.UTF8)) {
setPrettyPrinter(jsonGenerator);
jsonGenerator.writeStartObject();
jsonGenerator.writeNumber(IdSequence.getInstance().nextId());
@ -124,13 +131,13 @@ public class PermissionsExporter extends AbstractDomainObjectsExporter<Permissio
if (granteeDomainObj instanceof Group) {
final Group group = (Group) granteeDomainObj;
final RoleCollection roles = group.getRoles();
final RoleCollection rolesOfGroup = group.getRoles();
final String privilege = domainObject.getPrivilege().getName();
while (roles.next()) {
while (rolesOfGroup.next()) {
final OID roleOid = roles.getRole().getOID();
final OID roleOid = rolesOfGroup.getRole().getOID();
final String permissionUuid = exportPermission(privilege,
objectOid,
@ -138,6 +145,19 @@ public class PermissionsExporter extends AbstractDomainObjectsExporter<Permissio
targetDir);
permissionUuids.add(permissionUuid);
}
final Session session = SessionManager.getSession();
final DataCollection roles = session
.retrieve(Role.BASE_DATA_OBJECT_TYPE);
roles.addEqualsFilter("implicitGroup.id", group.getID());
if (roles.next()) {
final Role role = new Role(roles.getDataObject());
final String permissionUuid = exportPermission(privilege,
granteeOid,
role.getOID(),
targetDir);
permissionUuids.add(permissionUuid);
}
}
return permissionUuids;

View File

@ -48,6 +48,8 @@ public class RolesExporter extends AbstractDomainObjectsExporter<Role> {
try (final JsonGenerator jsonGenerator = jsonFactory
.createGenerator(targetFilePath.toFile(), JsonEncoding.UTF8)) {
setPrettyPrinter(jsonGenerator);
jsonGenerator.writeStartObject();
jsonGenerator.writeNumberField("roleId",

View File

@ -51,6 +51,8 @@ public class UsersExporter extends AbstractDomainObjectsExporter<com.arsdigita.k
.createGenerator(targetFilePath.toFile(),
JsonEncoding.UTF8)) {
setPrettyPrinter(jsonGenerator);
jsonGenerator.writeStartObject();
jsonGenerator.writeNumberField("partyId",

View File

@ -31,16 +31,18 @@ public abstract class AbstractTasksExporter<T extends Task>
throws IOException;
@Override
public final List<String> exportDomainObject(final T domainObject,
public final List<String> exportDomainObject(final T task,
final Path targetDir) {
final String uuid = generateUuid(domainObject);
final String uuid = generateUuid(task);
final Path targetFilePath = generateTargetFilePath(targetDir, uuid);
final JsonFactory jsonFactory = new JsonFactory();
try (JsonGenerator jsonGenerator = jsonFactory
.createGenerator(targetFilePath.toFile(), JsonEncoding.UTF8)) {
setPrettyPrinter(jsonGenerator);
jsonGenerator.writeStartObject();
jsonGenerator.writeNumberField("taskId",
@ -50,26 +52,26 @@ public abstract class AbstractTasksExporter<T extends Task>
jsonGenerator.writeObjectFieldStart("label");
jsonGenerator.writeStringField(
KernelConfig.getConfig().getDefaultLanguage(),
domainObject.getLabel());
task.getLabel());
jsonGenerator.writeEndObject();
jsonGenerator.writeObjectFieldStart("description");
jsonGenerator.writeStringField(
KernelConfig.getConfig().getDefaultLanguage(),
domainObject.getDescription());
task.getDescription());
jsonGenerator.writeEndObject();
jsonGenerator.writeBooleanField("active", domainObject.isActive());
jsonGenerator.writeBooleanField("active", task.isActive());
jsonGenerator.writeStringField("taskState",
domainObject.getStateString());
task.getStateString());
final Workflow workflow = domainObject.getWorkflow();
final Workflow workflow = task.getWorkflow();
final String workflowUuid = generateUuid(workflow);
jsonGenerator.writeStringField("workflow", workflowUuid);
jsonGenerator.writeArrayFieldStart("comments");
final Iterator<?> comments = domainObject.getComments();
final Iterator<?> comments = task.getComments();
while (comments.hasNext()) {
final TaskComment comment = (TaskComment) comments.next();
@ -78,7 +80,7 @@ public abstract class AbstractTasksExporter<T extends Task>
}
jsonGenerator.writeEndArray();
exportTaskProperties(domainObject, jsonGenerator);
exportTaskProperties(task, jsonGenerator);
jsonGenerator.writeEndObject();

View File

@ -51,14 +51,16 @@ public class TaskCommentsExporter
try (JsonGenerator jsonGenerator = jsonFactory
.createGenerator(targetFile, JsonEncoding.UTF8)) {
setPrettyPrinter(jsonGenerator);
jsonGenerator.writeStartObject();
jsonGenerator.writeNumberField(
"taskCommentId",
IdSequence.getInstance().nextId());
jsonGenerator.writeStringField("uuid", uuid);
jsonGenerator.writeStringField("comment",
jsonGenerator.writeStringField("comment",
domainObject.getComment());
jsonGenerator.writeEndObject();

View File

@ -83,6 +83,8 @@ public class TaskDependenciesExporter
try (final JsonGenerator jsonGenerator = jsonFactory
.createGenerator(targetFile, JsonEncoding.UTF8)) {
setPrettyPrinter(jsonGenerator);
jsonGenerator.writeStartObject();
jsonGenerator.writeNumberField("taskDependencyId",

View File

@ -2,6 +2,7 @@ package org.libreccm.workflow;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.kernel.KernelConfig;
import com.arsdigita.util.UncheckedWrapperException;
import com.arsdigita.workflow.simple.Workflow;
import com.arsdigita.workflow.simple.WorkflowTemplate;
@ -55,6 +56,8 @@ public class WorkflowsExporter extends AbstractDomainObjectsExporter<Workflow> {
try (JsonGenerator jsonGenerator = jsonFactory
.createGenerator(targetFile, JsonEncoding.UTF8)) {
setPrettyPrinter(jsonGenerator);
jsonGenerator.writeStartObject();
jsonGenerator.writeNumberField("workflowId",
@ -63,35 +66,35 @@ public class WorkflowsExporter extends AbstractDomainObjectsExporter<Workflow> {
jsonGenerator.writeBooleanField(
"abstractWorkflow",
domainObject instanceof WorkflowTemplate);
jsonGenerator.writeObjectFieldStart("name");
jsonGenerator.writeStringField(
KernelConfig.getConfig().getDefaultLanguage(),
KernelConfig.getConfig().getDefaultLanguage(),
domainObject.getDisplayName());
jsonGenerator.writeEndObject();
jsonGenerator.writeObjectFieldStart("description");
jsonGenerator.writeStringField(
KernelConfig.getConfig().getDefaultLanguage(),
KernelConfig.getConfig().getDefaultLanguage(),
domainObject.getDescription());
jsonGenerator.writeEndObject();
jsonGenerator.writeStringField("state",
jsonGenerator.writeStringField("state",
domainObject.getStateString());
jsonGenerator.writeBooleanField("active", domainObject.isActive());
final ACSObject object = domainObject.getObject();
final String objectUuid = generateUuid(object);
jsonGenerator.writeStringField("object", objectUuid);
jsonGenerator.writeEndObject();
} catch (IOException ex) {
throw new UncheckedWrapperException(ex);
}
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
return Arrays.asList(new String[]{uuid});
}
}