libreccm-legacy/ccm-cms/src/org/librecms/lifecycle/PhasesExporter.java

99 lines
3.2 KiB
Java

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.librecms.lifecycle.Phase";
}
@Override
protected List<String> exportDomainObject(final Phase phase,
final Path targetDir) {
final String uuid = generateUuid(phase);
final Path targetFilePath = generateTargetFilePath(targetDir, 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())));
if (phase.getEndDate() != null) {
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});
}
}