ExternalProcessPollingEvent.java 2.91 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  org.osgi.service.event.Event
 */
package com.day.cq.workflow.event;

import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
import java.util.Dictionary;
import java.util.Hashtable;
import java.util.Map;
import org.osgi.service.event.Event;

public class ExternalProcessPollingEvent
implements Serializable {
    private static final long serialVersionUID = -2349473421221460240L;
    public static final String EVENT_TOPIC = "com/day/cq/workflow/external/polling/event";
    public static final String PROPERTY_POLLING_TIMEOUT = "com.day.cq.workflow.event.polling.timeout";
    public static final String PROPERTY_POLLING_ADVANCE_ON_TIMEOUT = "com.day.cq.workflow.event.polling.advanceOnTimeout";
    public static final String PROPERTY_POLLING_START = "com.day.cq.workflow.event.polling.start";
    public static final String PROPERTY_POLLING_EVENT = "com.day.cq.workflow.event.polling";
    public static final String PROPERTY_POLLING_PROCESS_ID = "com.day.cq.workflow.event.polling.process.id";
    private Map<String, Serializable> workItemMap;
    private Serializable externalProcessId;

    public ExternalProcessPollingEvent(Map<String, Serializable> workItemMap, Serializable externalProcessId) {
        if (workItemMap == null) {
            throw new IllegalArgumentException("work item must not be null.");
        }
        if (externalProcessId == null) {
            throw new IllegalArgumentException("externalProcessId must not be null.");
        }
        this.workItemMap = workItemMap;
        this.externalProcessId = externalProcessId;
    }

    public Map<String, Serializable> getWorkItemMap() {
        return this.workItemMap;
    }

    public Event createPollingEvent(long period, long timeoutSeconds, boolean advanceOnTimeout) {
        Hashtable<String, Object> props = new Hashtable<String, Object>();
        props.put("event.topic.timed", "com/day/cq/workflow/external/polling/event");
        props.put("event.timed.id", this.workItemMap.get("id"));
        props.put("event.timed.period", period);
        props.put("com.day.cq.workflow.event.polling", this);
        props.put("com.day.cq.workflow.event.polling.timeout", timeoutSeconds);
        props.put("com.day.cq.workflow.event.polling.start", Calendar.getInstance().getTime());
        props.put("com.day.cq.workflow.event.polling.process.id", this.externalProcessId);
        props.put("com.day.cq.workflow.event.polling.advanceOnTimeout", advanceOnTimeout);
        return new Event("org/apache/sling/event/timed", props);
    }

    public Event createPollingCancelEvent() {
        Hashtable<String, Object> props = new Hashtable<String, Object>();
        props.put("event.topic.timed", "com/day/cq/workflow/external/polling/event");
        props.put("event.timed.id", this.workItemMap.get("id"));
        return new Event("org/apache/sling/event/timed", props);
    }
}