From 98a5c08919f1efda93729ffd659ed88f2f9a08f8 Mon Sep 17 00:00:00 2001 From: jensp Date: Tue, 30 Oct 2018 14:35:32 +0000 Subject: [PATCH] Exporter for CMSTask git-svn-id: https://svn.libreccm.org/ccm/trunk@5718 8810af33-2d31-482b-a856-94f89814c4df --- .../src/com/arsdigita/cms/Initializer.java | 4 ++ .../librecms/workflow/CmsTasksExporter.java | 61 +++++++++++++++++++ .../src/com/arsdigita/core/Initializer.java | 1 - .../AbstractAssignableTasksExporter.java | 58 ++++++++++++++++++ .../workflow/AssignableTasksExporter.java | 48 +++------------ 5 files changed, 133 insertions(+), 39 deletions(-) create mode 100644 ccm-cms/src/org/librecms/workflow/CmsTasksExporter.java create mode 100644 ccm-core/src/org/libreccm/workflow/AbstractAssignableTasksExporter.java diff --git a/ccm-cms/src/com/arsdigita/cms/Initializer.java b/ccm-cms/src/com/arsdigita/cms/Initializer.java index 6e75561d5..518a0999b 100755 --- a/ccm-cms/src/com/arsdigita/cms/Initializer.java +++ b/ccm-cms/src/com/arsdigita/cms/Initializer.java @@ -84,6 +84,8 @@ import com.arsdigita.workflow.simple.WorkflowTemplate; import com.arsdigita.xml.XML; import org.apache.log4j.Logger; +import org.libreccm.export.ExportManager; +import org.librecms.workflow.CmsTasksExporter; /** * The main CMS initializer, executed recurringly at each system startup. @@ -246,6 +248,8 @@ public class Initializer extends CompoundInitializer { ContenttypesGlobalizationUtil.globalize("person.authoring.orgas.title"), s_conf.getPersonOrgaUnitsStepSortKey()); } + + ExportManager.getInstance().registerExporter(new CmsTasksExporter()); s_log.debug("CMS.Initializer.init(DomainInitEvent) completed"); } // END init(DomainInitEvent e) diff --git a/ccm-cms/src/org/librecms/workflow/CmsTasksExporter.java b/ccm-cms/src/org/librecms/workflow/CmsTasksExporter.java new file mode 100644 index 000000000..c78b82a88 --- /dev/null +++ b/ccm-cms/src/org/librecms/workflow/CmsTasksExporter.java @@ -0,0 +1,61 @@ +package org.librecms.workflow; + +import com.arsdigita.cms.workflow.CMSTask; +import com.arsdigita.cms.workflow.CMSTaskType; +import com.arsdigita.workflow.simple.UserTask; + +import com.fasterxml.jackson.core.JsonGenerator; +import org.libreccm.workflow.AbstractAssignableTasksExporter; + +import java.io.IOException; + +/** + * + * @author Jens Pelzetter + */ +public class CmsTasksExporter extends AbstractAssignableTasksExporter { + + @Override + public Class exportsType() { + return CMSTask.class; + } + + @Override + public String exportsBaseDataObjectType() { + + return UserTask.BASE_DATA_OBJECT_TYPE; + + } + + @Override + public String convertsToType() { + return "org.libreccm.workflow.CmsTask"; + } + + @Override + protected void exportAssignableTaskProperties( + final CMSTask task, final JsonGenerator jsonGenerator) + throws IOException { + + final CMSTaskType taskType = task.getTaskType(); + + final String type; + switch (taskType.getName().toUpperCase()) { + case "AUTHOR": + type = "AUTHOR"; + break; + case "EDIT": + type = "EDIT"; + break; + case "DEPLOY": + type = "DEPLOY"; + break; + default: + type = "AUTHOR"; + break; + } + + jsonGenerator.writeStringField("taskType", type); + } + +} diff --git a/ccm-core/src/com/arsdigita/core/Initializer.java b/ccm-core/src/com/arsdigita/core/Initializer.java index add1573c5..e73a99703 100755 --- a/ccm-core/src/com/arsdigita/core/Initializer.java +++ b/ccm-core/src/com/arsdigita/core/Initializer.java @@ -23,7 +23,6 @@ import com.arsdigita.db.DbHelper; import com.arsdigita.domain.DomainObject; import com.arsdigita.domain.DomainObjectInstantiator; import com.arsdigita.kernel.ACSObjectInstantiator; -import com.arsdigita.kernel.ResourceType; import com.arsdigita.mimetypes.MimeType; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.Session; diff --git a/ccm-core/src/org/libreccm/workflow/AbstractAssignableTasksExporter.java b/ccm-core/src/org/libreccm/workflow/AbstractAssignableTasksExporter.java new file mode 100644 index 000000000..1e93db2fd --- /dev/null +++ b/ccm-core/src/org/libreccm/workflow/AbstractAssignableTasksExporter.java @@ -0,0 +1,58 @@ +package org.libreccm.workflow; + +import com.arsdigita.kernel.Party; +import com.arsdigita.kernel.User; +import com.arsdigita.workflow.simple.UserTask; + +import com.fasterxml.jackson.core.JsonGenerator; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Locale; + +/** + * + * @author Jens Pelzetter + * @param + */ +public abstract class AbstractAssignableTasksExporter + extends AbstractTasksExporter { + + @Override + protected final void exportTaskProperties(final T task, + final JsonGenerator jsonGenerator) + throws IOException { + + jsonGenerator.writeBooleanField("locked", task.isLocked()); + + final User lockingUser = task.getLockedUser(); + if (lockingUser != null) { + final String lockingUserUuid = generateUuid(lockingUser); + jsonGenerator.writeStringField("lockingUser", lockingUserUuid); + } + + final SimpleDateFormat dateFormat = new SimpleDateFormat( + "yyyy-MM-dd'T'HH:mm:ssZ", Locale.ROOT); + jsonGenerator.writeStringField("startDate", + dateFormat.format(task.getStartDate())); + jsonGenerator.writeStringField("dueDate", + dateFormat.format(task.getDueDate())); + jsonGenerator.writeNumberField("durationMinutes", + task.getDuration().getDuration()); + + final Party notificationSender = task.getNotificationSender(); + if (notificationSender != null) { + final String notificationSenderUuid = generateUuid( + notificationSender); + jsonGenerator.writeStringField("notificationSender", + notificationSenderUuid); + } + + exportAssignableTaskProperties(task, jsonGenerator); + } + + protected abstract void exportAssignableTaskProperties( + final T task, final JsonGenerator jsonGenerator) + throws IOException; + +} diff --git a/ccm-core/src/org/libreccm/workflow/AssignableTasksExporter.java b/ccm-core/src/org/libreccm/workflow/AssignableTasksExporter.java index 35d12ab48..24e5839af 100644 --- a/ccm-core/src/org/libreccm/workflow/AssignableTasksExporter.java +++ b/ccm-core/src/org/libreccm/workflow/AssignableTasksExporter.java @@ -1,22 +1,25 @@ package org.libreccm.workflow; -import com.arsdigita.kernel.Party; -import com.arsdigita.kernel.User; import com.arsdigita.workflow.simple.UserTask; import com.fasterxml.jackson.core.JsonGenerator; import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.Arrays; -import java.util.List; -import java.util.Locale; /** * * @author Jens Pelzetter */ -public class AssignableTasksExporter extends AbstractTasksExporter { +public class AssignableTasksExporter + extends AbstractAssignableTasksExporter { + + @Override + protected void exportAssignableTaskProperties( + final UserTask task, final JsonGenerator jsonGenerator) + throws IOException { + + // Nothing + } @Override public Class exportsType() { @@ -35,35 +38,4 @@ public class AssignableTasksExporter extends AbstractTasksExporter { return "org.libreccm.workflow.AssignableTask"; } - @Override - protected void exportTaskProperties(final UserTask task, - final JsonGenerator jsonGenerator) - throws IOException { - - jsonGenerator.writeBooleanField("locked", task.isLocked()); - - final User lockingUser = task.getLockedUser(); - if (lockingUser != null) { - final String lockingUserUuid = generateUuid(lockingUser); - jsonGenerator.writeStringField("lockingUser", lockingUserUuid); - } - - final SimpleDateFormat dateFormat = new SimpleDateFormat( - "yyyy-MM-dd'T'HH:mm:ssZ", Locale.ROOT); - jsonGenerator.writeStringField("startDate", - dateFormat.format(task.getStartDate())); - jsonGenerator.writeStringField("dueDate", - dateFormat.format(task.getDueDate())); - jsonGenerator.writeNumberField("durationMinutes", - task.getDuration().getDuration()); - - final Party notificationSender = task.getNotificationSender(); - if (notificationSender != null) { - final String notificationSenderUuid = generateUuid( - notificationSender); - jsonGenerator.writeStringField("notificationSender", - notificationSenderUuid); - } - } - }