Exporter for CMSTask

git-svn-id: https://svn.libreccm.org/ccm/trunk@5718 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2018-10-30 14:35:32 +00:00
parent 386cad0203
commit 98a5c08919
5 changed files with 133 additions and 39 deletions

View File

@ -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)

View File

@ -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 <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class CmsTasksExporter extends AbstractAssignableTasksExporter<CMSTask> {
@Override
public Class<CMSTask> 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);
}
}

View File

@ -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;

View File

@ -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 <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
* @param <T>
*/
public abstract class AbstractAssignableTasksExporter<T extends UserTask>
extends AbstractTasksExporter<T> {
@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;
}

View File

@ -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 <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class AssignableTasksExporter extends AbstractTasksExporter<UserTask> {
public class AssignableTasksExporter
extends AbstractAssignableTasksExporter<UserTask> {
@Override
protected void exportAssignableTaskProperties(
final UserTask task, final JsonGenerator jsonGenerator)
throws IOException {
// Nothing
}
@Override
public Class<UserTask> exportsType() {
@ -35,35 +38,4 @@ public class AssignableTasksExporter extends AbstractTasksExporter<UserTask> {
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);
}
}
}