Exporter for CMSTask
git-svn-id: https://svn.libreccm.org/ccm/trunk@5718 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
386cad0203
commit
98a5c08919
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue