Exporters for CMS
git-svn-id: https://svn.libreccm.org/ccm/trunk@5717 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
fc2bcc18bd
commit
386cad0203
|
|
@ -0,0 +1,37 @@
|
||||||
|
package org.librecms.contentsection;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.Asset;
|
||||||
|
import com.arsdigita.kernel.KernelConfig;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonGenerator;
|
||||||
|
import org.libreccm.core.AbstractCcmObjectsExporter;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
* @param <T>
|
||||||
|
*/
|
||||||
|
public abstract class AbstractAssetsExporter<T extends Asset>
|
||||||
|
extends AbstractCcmObjectsExporter<T> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected final void exportObjectProperties(final T asset,
|
||||||
|
final JsonGenerator jsonGenerator)
|
||||||
|
throws IOException {
|
||||||
|
|
||||||
|
jsonGenerator.writeObjectFieldStart("title");
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
KernelConfig.getConfig().getDefaultLanguage(),
|
||||||
|
asset.getName());
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
|
||||||
|
exportAssetProperties(asset, jsonGenerator);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void exportAssetProperties(T asset,
|
||||||
|
JsonGenerator jsonGenerator)
|
||||||
|
throws IOException;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
package org.librecms.contentsection;
|
||||||
|
|
||||||
|
|
||||||
|
import com.arsdigita.cms.BinaryAsset;
|
||||||
|
import com.arsdigita.kernel.KernelConfig;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonGenerator;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
public abstract class AbstractBinaryAssetsExporter<T extends BinaryAsset>
|
||||||
|
extends AbstractAssetsExporter<T>{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected final void exportAssetProperties(
|
||||||
|
final T asset, final JsonGenerator jsonGenerator) throws IOException{
|
||||||
|
|
||||||
|
jsonGenerator.writeObjectFieldStart("description");
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
KernelConfig.getConfig().getDefaultLanguage(),
|
||||||
|
asset.getDescription());
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField("mimeType",
|
||||||
|
asset.getMimeType().toString());
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField("fileName", asset.getName());
|
||||||
|
|
||||||
|
jsonGenerator.writeBinaryField("data", asset.getContent());
|
||||||
|
|
||||||
|
jsonGenerator.writeNumberField("size", asset.getSize());
|
||||||
|
|
||||||
|
exportBinaryAssetProperties(asset, jsonGenerator);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void exportBinaryAssetProperties(
|
||||||
|
final T asset, final JsonGenerator jsonGenerator) throws IOException;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,225 @@
|
||||||
|
package org.librecms.contentsection;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.ContentBundle;
|
||||||
|
import com.arsdigita.cms.ContentPage;
|
||||||
|
import com.arsdigita.cms.ItemCollection;
|
||||||
|
import com.arsdigita.cms.lifecycle.Lifecycle;
|
||||||
|
import com.arsdigita.util.UncheckedWrapperException;
|
||||||
|
import com.arsdigita.workflow.simple.Workflow;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonEncoding;
|
||||||
|
import com.fasterxml.jackson.core.JsonFactory;
|
||||||
|
import com.fasterxml.jackson.core.JsonGenerator;
|
||||||
|
import org.libreccm.export.AbstractDomainObjectsExporter;
|
||||||
|
import org.libreccm.export.IdSequence;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
* @param <T>
|
||||||
|
*/
|
||||||
|
public abstract class AbstractContentItemsExporter<T extends ContentPage>
|
||||||
|
extends AbstractDomainObjectsExporter<T> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected final List<String> exportDomainObject(final T contentItem,
|
||||||
|
final Path targetDir) {
|
||||||
|
|
||||||
|
final ContentBundle contentBundle = contentItem.getContentBundle();
|
||||||
|
|
||||||
|
if (contentBundle == null) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
final ItemCollection instances = contentBundle.getInstances();
|
||||||
|
|
||||||
|
final String uuid = generateUuid(contentBundle);
|
||||||
|
final String itemUuid = generateUuid(contentBundle.getDraftVersion());
|
||||||
|
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("objectId",
|
||||||
|
IdSequence.getInstance().nextId());
|
||||||
|
jsonGenerator.writeStringField("uuid", uuid);
|
||||||
|
jsonGenerator.writeStringField("displayName",
|
||||||
|
contentBundle.getDisplayName());
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField("itemUuid", itemUuid);
|
||||||
|
|
||||||
|
final Map<Locale, String> titles = new HashMap<>();
|
||||||
|
final Map<Locale, String> descriptions = new HashMap<>();
|
||||||
|
while (instances.next()) {
|
||||||
|
|
||||||
|
final ContentPage instance = (ContentPage) instances
|
||||||
|
.getContentItem();
|
||||||
|
|
||||||
|
final String lang = instance.getLanguage();
|
||||||
|
final Locale locale = new Locale(lang);
|
||||||
|
|
||||||
|
titles.put(locale, instance.getTitle());
|
||||||
|
descriptions.put(locale, instance.getDescription());
|
||||||
|
}
|
||||||
|
|
||||||
|
instances.rewind();
|
||||||
|
|
||||||
|
jsonGenerator.writeObjectFieldStart("title");
|
||||||
|
for (final Map.Entry<Locale, String> title : titles.entrySet()) {
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField(title.getKey().toString(),
|
||||||
|
title.getValue());
|
||||||
|
|
||||||
|
}
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
|
||||||
|
jsonGenerator.writeObjectFieldStart("description");
|
||||||
|
for (final Map.Entry<Locale, String> desc : descriptions.entrySet()) {
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField(desc.getKey().toString(),
|
||||||
|
desc.getValue());
|
||||||
|
|
||||||
|
}
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
|
||||||
|
if (contentItem.getVersion() == null) {
|
||||||
|
jsonGenerator.writeStringField("version", "DRAFT");
|
||||||
|
} else {
|
||||||
|
jsonGenerator.writeStringField("version",
|
||||||
|
contentItem.getVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
final DateTimeFormatter dateTimeFormatter
|
||||||
|
= DateTimeFormatter.ISO_DATE_TIME;
|
||||||
|
|
||||||
|
if (contentItem.getLaunchDate() != null) {
|
||||||
|
final LocalDateTime launchDate = LocalDateTime
|
||||||
|
.ofInstant(contentItem.getLaunchDate().toInstant(),
|
||||||
|
ZoneId.systemDefault());
|
||||||
|
jsonGenerator.writeStringField("launchDate",
|
||||||
|
dateTimeFormatter.format(
|
||||||
|
launchDate));
|
||||||
|
}
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
"creationDate",
|
||||||
|
dateTimeFormatter.format(
|
||||||
|
LocalDateTime.ofInstant(
|
||||||
|
contentItem.getCreationDate().toInstant(),
|
||||||
|
ZoneId.systemDefault())));
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
"lastModified",
|
||||||
|
dateTimeFormatter.format(
|
||||||
|
LocalDateTime.ofInstant(
|
||||||
|
contentItem.getLastModifiedDate().toInstant(),
|
||||||
|
ZoneId.systemDefault())));
|
||||||
|
|
||||||
|
final Lifecycle lifecyle = contentItem.getLifecycle();
|
||||||
|
if (lifecyle != null) {
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
"lifecycle",
|
||||||
|
generateUuid(contentItem.getLifecycle()));
|
||||||
|
}
|
||||||
|
|
||||||
|
final Workflow workflow = Workflow.getObjectWorkflow(contentItem);
|
||||||
|
if (workflow != null) {
|
||||||
|
jsonGenerator.writeStringField("workflow",
|
||||||
|
generateUuid(workflow));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (contentItem.getCreationUser() != null) {
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
"creationUserName",
|
||||||
|
contentItem.getCreationUser().getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (contentItem.getLastModifiedUser() != null) {
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
"lastModifyingUserName",
|
||||||
|
contentItem.getLastModifiedUser().getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
exportContentItemProperties(contentItem, jsonGenerator);
|
||||||
|
|
||||||
|
final Map<String, Map<Locale, String>> localizedProperties
|
||||||
|
= collectLocalizedValues(
|
||||||
|
instances);
|
||||||
|
|
||||||
|
for (final Map.Entry<String, Map<Locale, String>> property
|
||||||
|
: localizedProperties.entrySet()) {
|
||||||
|
|
||||||
|
jsonGenerator.writeObjectFieldStart(property.getKey());
|
||||||
|
|
||||||
|
for (final Map.Entry<Locale, String> localizedValue : property
|
||||||
|
.getValue().entrySet()) {
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
localizedValue.getKey().toString(),
|
||||||
|
localizedValue.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
} catch (IOException ex) {
|
||||||
|
throw new UncheckedWrapperException(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Arrays.asList(new String[]{uuid});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exports not localised properties of a content items.
|
||||||
|
*
|
||||||
|
* @param contentItem The item providing the data.
|
||||||
|
* @param jsonGenerator The {@link JsonGenerator} to use.
|
||||||
|
*
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
protected abstract void exportContentItemProperties(
|
||||||
|
T contentItem, JsonGenerator jsonGenerator)
|
||||||
|
throws IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is used to collect localised properties. The
|
||||||
|
* {@link #exportDomainObject(com.arsdigita.cms.ContentPage, java.nio.file.Path)}
|
||||||
|
* method takes care for writing the values to the export file. The
|
||||||
|
* properties {@code title} and {@code description} are already handled by
|
||||||
|
* {@link #exportDomainObject(com.arsdigita.cms.ContentPage, java.nio.file.Path)}.
|
||||||
|
*
|
||||||
|
* If the {@code ContentItem} to export does not have any localised
|
||||||
|
* properties the implementation of this method should return an empty map.
|
||||||
|
* The most efficient way to create an empty map is the use
|
||||||
|
* {@link Collections#emptyMap()}.
|
||||||
|
*
|
||||||
|
* @param instances The instances of the content item.
|
||||||
|
*
|
||||||
|
* @return A {@link Map} of {@link Maps} with the localised values. The key
|
||||||
|
* of the outer map is the name of the property, the value are the
|
||||||
|
* localised values. The inner map contains the localised values.
|
||||||
|
* The key of this map is the locale of the value.
|
||||||
|
*/
|
||||||
|
protected abstract Map<String, Map<Locale, String>> collectLocalizedValues(
|
||||||
|
ItemCollection instances);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,112 @@
|
||||||
|
package org.librecms.contentsection;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.ContentSection;
|
||||||
|
import com.arsdigita.cms.ContentType;
|
||||||
|
import com.arsdigita.cms.ContentTypeCollection;
|
||||||
|
import com.arsdigita.cms.Folder;
|
||||||
|
import com.arsdigita.cms.lifecycle.LifecycleDefinition;
|
||||||
|
import com.arsdigita.cms.lifecycle.LifecycleDefinitionCollection;
|
||||||
|
import com.arsdigita.kernel.Role;
|
||||||
|
import com.arsdigita.kernel.RoleCollection;
|
||||||
|
import com.arsdigita.workflow.simple.Task;
|
||||||
|
import com.arsdigita.workflow.simple.TaskCollection;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonGenerator;
|
||||||
|
import org.libreccm.web.AbstractCcmApplicationsExporter;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
public class ContentSectionsExporter
|
||||||
|
extends AbstractCcmApplicationsExporter<ContentSection> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<ContentSection> exportsType() {
|
||||||
|
return ContentSection.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String exportsBaseDataObjectType() {
|
||||||
|
return ContentSection.BASE_DATA_OBJECT_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String convertsToType() {
|
||||||
|
return "org.librecms.contentsection.ContentSection";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void exportApplicationProperties(
|
||||||
|
final ContentSection section,
|
||||||
|
final JsonGenerator jsonGenerator)
|
||||||
|
throws IOException {
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField("label", section.getTitle());
|
||||||
|
|
||||||
|
final Folder rootDocsFolder = section.getRootFolder();
|
||||||
|
final String rootDocsFolderUuid = generateUuid(rootDocsFolder);
|
||||||
|
jsonGenerator.writeStringField("rootDocumentsFolder",
|
||||||
|
rootDocsFolderUuid);
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField("pageResolverClass",
|
||||||
|
section.getPageResolverClassName());
|
||||||
|
jsonGenerator.writeStringField("itemResolverClass",
|
||||||
|
section.getItemResolverClassName());
|
||||||
|
jsonGenerator.writeStringField("templateResolverClass",
|
||||||
|
section.getTemplateResolverClassName());
|
||||||
|
jsonGenerator.writeStringField("xmlGeneratorClass",
|
||||||
|
section.getXMLGeneratorClassName());
|
||||||
|
|
||||||
|
jsonGenerator.writeArrayFieldStart("roles");
|
||||||
|
final RoleCollection roles = section.getGroup().getRoles();
|
||||||
|
while (roles.next()) {
|
||||||
|
|
||||||
|
final Role role = roles.getRole();
|
||||||
|
final String roleUuid = generateUuid(role);
|
||||||
|
jsonGenerator.writeString(roleUuid);
|
||||||
|
}
|
||||||
|
jsonGenerator.writeEndArray();
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField("defaultLocale",
|
||||||
|
section.getDefaultLocale().toString());
|
||||||
|
|
||||||
|
jsonGenerator.writeArrayFieldStart("contentTypes");
|
||||||
|
final ContentTypeCollection types = section.getContentTypes();
|
||||||
|
while (types.next()) {
|
||||||
|
|
||||||
|
final ContentType type = types.getContentType();
|
||||||
|
final String typeUuid = generateUuid(type);
|
||||||
|
jsonGenerator.writeString(typeUuid);
|
||||||
|
}
|
||||||
|
jsonGenerator.writeEndArray();
|
||||||
|
|
||||||
|
final LifecycleDefinitionCollection lifecycleDefs = section
|
||||||
|
.getLifecycleDefinitions();
|
||||||
|
jsonGenerator.writeArrayFieldStart("lifecycleDefinitions");
|
||||||
|
while (lifecycleDefs.next()) {
|
||||||
|
final LifecycleDefinition lifecycleDef = lifecycleDefs
|
||||||
|
.getLifecycleDefinition();
|
||||||
|
final String lifecycleDefUuid = generateUuid(lifecycleDef);
|
||||||
|
jsonGenerator.writeString(lifecycleDefUuid);
|
||||||
|
}
|
||||||
|
jsonGenerator.writeEndArray();
|
||||||
|
|
||||||
|
final TaskCollection workflowTemplates = section.getWorkflowTemplates();
|
||||||
|
jsonGenerator.writeArrayFieldStart("workflowTemplates");
|
||||||
|
while (workflowTemplates.next()) {
|
||||||
|
|
||||||
|
final Task workflowTemplate = workflowTemplates.getTask();
|
||||||
|
final String workflowTemplateUuid = generateUuid(workflowTemplate);
|
||||||
|
jsonGenerator.writeString(workflowTemplateUuid);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
jsonGenerator.writeEndArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,124 @@
|
||||||
|
package org.librecms.contentsection;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.ContentSection;
|
||||||
|
import com.arsdigita.cms.ContentType;
|
||||||
|
import com.arsdigita.kernel.KernelConfig;
|
||||||
|
|
||||||
|
import com.arsdigita.persistence.DataCollection;
|
||||||
|
import com.arsdigita.util.UncheckedWrapperException;
|
||||||
|
import com.arsdigita.web.WebConfig;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonEncoding;
|
||||||
|
import com.fasterxml.jackson.core.JsonFactory;
|
||||||
|
import com.fasterxml.jackson.core.JsonGenerator;
|
||||||
|
import org.libreccm.export.AbstractDomainObjectsExporter;
|
||||||
|
import org.libreccm.export.IdSequence;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
public class ContentTypesExporter extends AbstractDomainObjectsExporter<ContentType> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<ContentType> exportsType() {
|
||||||
|
return ContentType.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String exportsBaseDataObjectType() {
|
||||||
|
return ContentSection.BASE_DATA_OBJECT_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String convertsToType() {
|
||||||
|
return "org.librecms.contentsection.ContentType";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected List<String> exportDomainObject(final ContentType contentType,
|
||||||
|
final Path targetDir) {
|
||||||
|
|
||||||
|
final DataCollection contentSectionsCollections = ContentTypesService
|
||||||
|
.getContentSections(contentType);
|
||||||
|
|
||||||
|
final JsonFactory jsonFactory = new JsonFactory();
|
||||||
|
|
||||||
|
final List<String> uuids = new ArrayList<>();
|
||||||
|
while (contentSectionsCollections.next()) {
|
||||||
|
|
||||||
|
final String className = contentType.getClassName();
|
||||||
|
final ContentSection contentSection = new ContentSection(
|
||||||
|
contentSectionsCollections.getDataObject());
|
||||||
|
|
||||||
|
final byte[] uuidSource = String.format(
|
||||||
|
"%s/%s-%s-%s",
|
||||||
|
WebConfig.getInstanceOf().getSiteName(),
|
||||||
|
contentType.getOID().toString(),
|
||||||
|
contentSection.getOID().toString(),
|
||||||
|
className)
|
||||||
|
.getBytes(StandardCharsets.UTF_8);
|
||||||
|
final String uuid = UUID.nameUUIDFromBytes(uuidSource).toString();
|
||||||
|
uuids.add(uuid);
|
||||||
|
|
||||||
|
final String contentSectionUuid = generateUuid(contentSection);
|
||||||
|
|
||||||
|
final Path targetFilePath = targetDir
|
||||||
|
.resolve("org.librecms.contentsection.ContentType")
|
||||||
|
.resolve(String.format("%s.json", uuid));
|
||||||
|
final File targetFile = targetFilePath.toFile();
|
||||||
|
|
||||||
|
try (JsonGenerator jsonGenerator = jsonFactory
|
||||||
|
.createGenerator(targetFile, JsonEncoding.UTF8)) {
|
||||||
|
|
||||||
|
setPrettyPrinter(jsonGenerator);
|
||||||
|
|
||||||
|
jsonGenerator.writeStartObject();
|
||||||
|
|
||||||
|
jsonGenerator.writeNumberField(
|
||||||
|
"objectId",
|
||||||
|
IdSequence.getInstance().nextId());
|
||||||
|
jsonGenerator.writeStringField("uuid", uuid);
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField("contentItemClass",
|
||||||
|
className);
|
||||||
|
jsonGenerator.writeStringField("contentSection",
|
||||||
|
contentSectionUuid);
|
||||||
|
|
||||||
|
jsonGenerator.writeObjectFieldStart("label");;
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
KernelConfig.getConfig().getDefaultLanguage(),
|
||||||
|
(String) contentType.getLabel().localize(
|
||||||
|
new Locale(KernelConfig
|
||||||
|
.getConfig()
|
||||||
|
.getDefaultLanguage())));
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
|
||||||
|
jsonGenerator.writeObjectFieldStart("description");
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
KernelConfig.getConfig().getDefaultLanguage(),
|
||||||
|
contentType.getDescription());
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField("mode", contentType.getMode());
|
||||||
|
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
} catch(IOException ex) {
|
||||||
|
throw new UncheckedWrapperException(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return uuids;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
package org.librecms.contentsection;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.ContentType;
|
||||||
|
import com.arsdigita.domain.DomainService;
|
||||||
|
import com.arsdigita.persistence.DataCollection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
final class ContentTypesService extends DomainService {
|
||||||
|
|
||||||
|
protected static DataCollection getContentSections(
|
||||||
|
final ContentType section) {
|
||||||
|
|
||||||
|
return (DataCollection) get(section, "associatedContentSectionsForType");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
package org.librecms.contentsection;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.ContentSection;
|
||||||
|
import com.arsdigita.cms.Folder;
|
||||||
|
import com.arsdigita.kernel.KernelConfig;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonGenerator;
|
||||||
|
import org.libreccm.core.AbstractCcmObjectsExporter;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
public class FoldersExporter extends AbstractCcmObjectsExporter<Folder> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void exportObjectProperties(final Folder folder,
|
||||||
|
final JsonGenerator jsonGenerator)
|
||||||
|
throws IOException {
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField("uniqueId", generateUuid(folder));
|
||||||
|
jsonGenerator.writeStringField("name", folder.getName());
|
||||||
|
|
||||||
|
final ContentSection section = folder.getContentSection();
|
||||||
|
final String sectionUuid = generateUuid(section);
|
||||||
|
jsonGenerator.writeStringField("contentSection", sectionUuid);
|
||||||
|
|
||||||
|
jsonGenerator.writeObjectFieldStart("title");
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
KernelConfig.getConfig().getDefaultLanguage(),
|
||||||
|
folder.getName());
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
|
||||||
|
jsonGenerator.writeBooleanField("enabled", true);
|
||||||
|
jsonGenerator.writeBooleanField("visible", true);
|
||||||
|
jsonGenerator.writeBooleanField("abstractCategory", true);
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
"parentCategory",
|
||||||
|
generateUuid(folder.getParent()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<Folder> exportsType() {
|
||||||
|
|
||||||
|
return Folder.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String exportsBaseDataObjectType() {
|
||||||
|
|
||||||
|
return Folder.BASE_DATA_OBJECT_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String convertsToType() {
|
||||||
|
|
||||||
|
return "org.librecms.contentsection.Folder";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,103 @@
|
||||||
|
package org.librecms.lifecycle;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.lifecycle.LifecycleDefinition;
|
||||||
|
import com.arsdigita.cms.lifecycle.PhaseDefinitionCollection;
|
||||||
|
import com.arsdigita.kernel.KernelConfig;
|
||||||
|
import com.arsdigita.util.UncheckedWrapperException;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonEncoding;
|
||||||
|
import com.fasterxml.jackson.core.JsonFactory;
|
||||||
|
import com.fasterxml.jackson.core.JsonGenerator;
|
||||||
|
import org.libreccm.export.AbstractDomainObjectsExporter;
|
||||||
|
import org.libreccm.export.IdSequence;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
public class LifecycleDefinitionsExporter
|
||||||
|
extends AbstractDomainObjectsExporter<LifecycleDefinition> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<LifecycleDefinition> exportsType() {
|
||||||
|
return LifecycleDefinition.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String exportsBaseDataObjectType() {
|
||||||
|
return LifecycleDefinition.BASE_DATA_OBJECT_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String convertsToType() {
|
||||||
|
return "org.librecms.lifecycle.LifecycleDefinition";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected List<String> exportDomainObject(
|
||||||
|
final LifecycleDefinition lifecycleDefinition, final Path targetDir) {
|
||||||
|
|
||||||
|
final String uuid = generateUuid(lifecycleDefinition);
|
||||||
|
|
||||||
|
final Path targetFilePath = targetDir
|
||||||
|
.resolve("org.librecms.lifecycle.LifecycleDefinition")
|
||||||
|
.resolve(String.format("%s.json", uuid));
|
||||||
|
final File targetFile = targetFilePath.toFile();
|
||||||
|
|
||||||
|
final JsonFactory jsonFactory = new JsonFactory();
|
||||||
|
try (JsonGenerator jsonGenerator = jsonFactory
|
||||||
|
.createGenerator(targetFile, JsonEncoding.UTF8)) {
|
||||||
|
|
||||||
|
setPrettyPrinter(jsonGenerator);
|
||||||
|
|
||||||
|
jsonGenerator.writeStartObject();
|
||||||
|
|
||||||
|
jsonGenerator.writeNumberField("definitionId",
|
||||||
|
IdSequence.getInstance().nextId());
|
||||||
|
jsonGenerator.writeStringField("uuid", uuid);
|
||||||
|
|
||||||
|
jsonGenerator.writeObjectFieldStart("label");
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
KernelConfig.getConfig().getDefaultLanguage(),
|
||||||
|
lifecycleDefinition.getLabel());
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
|
||||||
|
jsonGenerator.writeObjectFieldStart("description");
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
KernelConfig.getConfig().getDefaultLanguage(),
|
||||||
|
lifecycleDefinition.getDescription());
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
"defaultListener",
|
||||||
|
lifecycleDefinition.getDefaultListener());
|
||||||
|
|
||||||
|
final PhaseDefinitionCollection phaseDefinitions
|
||||||
|
= lifecycleDefinition
|
||||||
|
.getPhaseDefinitions();
|
||||||
|
jsonGenerator.writeStartArray();
|
||||||
|
while (phaseDefinitions.next()) {
|
||||||
|
jsonGenerator
|
||||||
|
.writeString(generateUuid(
|
||||||
|
phaseDefinitions.getPhaseDefinition()));
|
||||||
|
}
|
||||||
|
jsonGenerator.writeEndArray();
|
||||||
|
|
||||||
|
jsonGenerator.writeEndObject();;
|
||||||
|
|
||||||
|
} catch (IOException ex) {
|
||||||
|
throw new UncheckedWrapperException(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Arrays.asList(new String[]{uuid});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,111 @@
|
||||||
|
package org.librecms.lifecycle;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.lifecycle.Lifecycle;
|
||||||
|
import com.arsdigita.cms.lifecycle.PhaseCollection;
|
||||||
|
import com.arsdigita.util.UncheckedWrapperException;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonEncoding;
|
||||||
|
import com.fasterxml.jackson.core.JsonFactory;
|
||||||
|
import com.fasterxml.jackson.core.JsonGenerator;
|
||||||
|
import org.libreccm.export.AbstractDomainObjectsExporter;
|
||||||
|
import org.libreccm.export.IdSequence;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
public class LifecyclesExporter extends AbstractDomainObjectsExporter<Lifecycle> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected List<String> exportDomainObject(final Lifecycle lifecycle,
|
||||||
|
final Path targetDir) {
|
||||||
|
|
||||||
|
final String uuid = generateUuid(lifecycle);
|
||||||
|
|
||||||
|
final Path targetFilePath = targetDir
|
||||||
|
.resolve("org.libreccm.lifecycle.Lifecycle")
|
||||||
|
.resolve(String.format("%s.json", uuid));
|
||||||
|
final File targetFile = targetFilePath.toFile();
|
||||||
|
|
||||||
|
final JsonFactory jsonFactory = new JsonFactory();
|
||||||
|
try (JsonGenerator jsonGenerator = jsonFactory
|
||||||
|
.createGenerator(targetFile, JsonEncoding.UTF8)) {
|
||||||
|
|
||||||
|
setPrettyPrinter(jsonGenerator);
|
||||||
|
|
||||||
|
jsonGenerator.writeStartObject();
|
||||||
|
|
||||||
|
jsonGenerator.writeNumberField("lifecycleId",
|
||||||
|
IdSequence.getInstance().nextId());
|
||||||
|
jsonGenerator.writeStringField("uuid", uuid);
|
||||||
|
|
||||||
|
final DateTimeFormatter dateTimeFormatter
|
||||||
|
= DateTimeFormatter.ISO_DATE_TIME;
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
"startDateTime",
|
||||||
|
dateTimeFormatter.format(
|
||||||
|
LocalDateTime.ofInstant(
|
||||||
|
lifecycle.getStartDate().toInstant(),
|
||||||
|
ZoneId.systemDefault())));
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
"endDateTime",
|
||||||
|
dateTimeFormatter.format(
|
||||||
|
LocalDateTime.ofInstant(
|
||||||
|
lifecycle.getEndDate().toInstant(),
|
||||||
|
ZoneId.systemDefault())));
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField("listener",
|
||||||
|
lifecycle.getListenerClassName());
|
||||||
|
|
||||||
|
jsonGenerator.writeBooleanField("started", lifecycle.hasBegun());
|
||||||
|
jsonGenerator.writeBooleanField("finished", lifecycle.hasEnded());
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
"lifecycleDefinition",
|
||||||
|
generateUuid(lifecycle.getLifecycleDefinition()));
|
||||||
|
|
||||||
|
final PhaseCollection phases = lifecycle.getPhases();
|
||||||
|
jsonGenerator.writeStartArray();
|
||||||
|
while (phases.next()) {
|
||||||
|
jsonGenerator.writeString(generateUuid(phases.getPhase()));
|
||||||
|
}
|
||||||
|
jsonGenerator.writeEndArray();
|
||||||
|
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
|
||||||
|
} catch (IOException ex) {
|
||||||
|
throw new UncheckedWrapperException(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Arrays.asList(new String[]{uuid});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<Lifecycle> exportsType() {
|
||||||
|
|
||||||
|
return Lifecycle.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String exportsBaseDataObjectType() {
|
||||||
|
|
||||||
|
return Lifecycle.BASE_DATA_OBJECT_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String convertsToType() {
|
||||||
|
|
||||||
|
return "org.librecms.lifecycle.Lifecycle";
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,91 @@
|
||||||
|
package org.librecms.lifecycle;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.lifecycle.PhaseDefinition;
|
||||||
|
import com.arsdigita.kernel.KernelConfig;
|
||||||
|
import com.arsdigita.util.UncheckedWrapperException;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonEncoding;
|
||||||
|
import com.fasterxml.jackson.core.JsonFactory;
|
||||||
|
import com.fasterxml.jackson.core.JsonGenerator;
|
||||||
|
import org.libreccm.export.AbstractDomainObjectsExporter;
|
||||||
|
import org.libreccm.export.IdSequence;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
public class PhaseDefinitionsExporter
|
||||||
|
extends AbstractDomainObjectsExporter<PhaseDefinition> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<PhaseDefinition> exportsType() {
|
||||||
|
return PhaseDefinition.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String exportsBaseDataObjectType() {
|
||||||
|
return PhaseDefinition.BASE_DATA_OBJECT_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String convertsToType() {
|
||||||
|
return "org.librecms.lifecycle.PhaseDefinition";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected List<String> exportDomainObject(
|
||||||
|
final PhaseDefinition phaseDefinition, final Path targetDir) {
|
||||||
|
|
||||||
|
final String uuid = generateUuid(phaseDefinition);
|
||||||
|
final Path targetFilePath = targetDir
|
||||||
|
.resolve("org.librecms.lifecycle.PhaseDefinition")
|
||||||
|
.resolve(String.format("%s.json", uuid));
|
||||||
|
final File targetFile = targetFilePath.toFile();
|
||||||
|
|
||||||
|
final JsonFactory jsonFactory = new JsonFactory();
|
||||||
|
try (final JsonGenerator jsonGenerator = jsonFactory
|
||||||
|
.createGenerator(targetFile, JsonEncoding.UTF8)) {
|
||||||
|
|
||||||
|
setPrettyPrinter(jsonGenerator);
|
||||||
|
|
||||||
|
jsonGenerator.writeStartObject();
|
||||||
|
|
||||||
|
jsonGenerator.writeNumberField("definitionId",
|
||||||
|
IdSequence.getInstance().nextId());
|
||||||
|
jsonGenerator.writeStringField("uuid", uuid);
|
||||||
|
|
||||||
|
jsonGenerator.writeObjectFieldStart("label");
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
KernelConfig.getConfig().getDefaultLanguage(),
|
||||||
|
phaseDefinition.getLabel());
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
|
||||||
|
jsonGenerator.writeObjectFieldStart("description");
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
KernelConfig.getConfig().getDefaultLanguage(),
|
||||||
|
phaseDefinition.getDescription());
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
|
||||||
|
jsonGenerator.writeNumberField("defaultDelay",
|
||||||
|
phaseDefinition.getDefaultDelay());
|
||||||
|
jsonGenerator.writeNumberField("defaultDuration",
|
||||||
|
phaseDefinition.getDefaultDuration());
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField("defaultListener",
|
||||||
|
phaseDefinition.getDefaultListener());
|
||||||
|
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
} catch (IOException ex) {
|
||||||
|
throw new UncheckedWrapperException(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Arrays.asList(new String[]{uuid});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,98 @@
|
||||||
|
package org.librecms.lifecycle;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.lifecycle.Phase;
|
||||||
|
import com.arsdigita.util.UncheckedWrapperException;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonEncoding;
|
||||||
|
import com.fasterxml.jackson.core.JsonFactory;
|
||||||
|
import com.fasterxml.jackson.core.JsonGenerator;
|
||||||
|
import org.libreccm.export.AbstractDomainObjectsExporter;
|
||||||
|
import org.libreccm.export.IdSequence;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
public class PhasesExporter extends AbstractDomainObjectsExporter<Phase> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<Phase> exportsType() {
|
||||||
|
return Phase.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String exportsBaseDataObjectType() {
|
||||||
|
return Phase.BASE_DATA_OBJECT_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String convertsToType() {
|
||||||
|
return "org.librcms.lifecycle.Phase";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected List<String> exportDomainObject(final Phase phase,
|
||||||
|
final Path targetDir) {
|
||||||
|
|
||||||
|
final String uuid = generateUuid(phase);
|
||||||
|
final Path targetFilePath = targetDir
|
||||||
|
.resolve("org.librecms.lifecycle.Phase")
|
||||||
|
.resolve(String.format("%s.json", uuid));
|
||||||
|
final File targetFile = targetFilePath.toFile();
|
||||||
|
|
||||||
|
final JsonFactory jsonFactory = new JsonFactory();
|
||||||
|
try (JsonGenerator jsonGenerator = jsonFactory
|
||||||
|
.createGenerator(targetFile, JsonEncoding.UTF8)) {
|
||||||
|
|
||||||
|
setPrettyPrinter(jsonGenerator);
|
||||||
|
|
||||||
|
jsonGenerator.writeStartObject();
|
||||||
|
|
||||||
|
jsonGenerator.writeNumberField("phaseId",
|
||||||
|
IdSequence.getInstance().nextId());
|
||||||
|
jsonGenerator.writeStringField("uuid", uuid);
|
||||||
|
|
||||||
|
final DateTimeFormatter dateTimeFormatter
|
||||||
|
= DateTimeFormatter.ISO_DATE_TIME;
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
"startDateTime",
|
||||||
|
dateTimeFormatter.format(
|
||||||
|
LocalDateTime.ofInstant(phase.getStartDate().toInstant(),
|
||||||
|
ZoneId.systemDefault())));
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
"endDateTime",
|
||||||
|
dateTimeFormatter.format(
|
||||||
|
LocalDateTime.ofInstant(phase.getEndDate().toInstant(),
|
||||||
|
ZoneId.systemDefault())));
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField("listener",
|
||||||
|
phase.getListenerClassName());
|
||||||
|
|
||||||
|
jsonGenerator.writeBooleanField("started", phase.hasBegun());
|
||||||
|
jsonGenerator.writeBooleanField("finished", phase.hasEnded());
|
||||||
|
|
||||||
|
jsonGenerator.writeStringField(
|
||||||
|
"phaseDefinition",
|
||||||
|
generateUuid(phase.getPhaseDefinition()));
|
||||||
|
|
||||||
|
jsonGenerator.writeEndObject();
|
||||||
|
|
||||||
|
} catch (IOException ex) {
|
||||||
|
throw new UncheckedWrapperException(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Arrays.asList(new String[]{uuid});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue