All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.adobe.acs.commons.workflow.synthetic.impl.cq.SyntheticWorkflow Maven / Gradle / Ivy

/*
 * #%L
 * ACS AEM Commons Bundle
 * %%
 * Copyright (C) 2016 Adobe
 * %%
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * #L%
 */

package com.adobe.acs.commons.workflow.synthetic.impl.cq;

import com.adobe.acs.commons.workflow.synthetic.impl.SyntheticWorkflowData;
import com.day.cq.workflow.exec.WorkItem;
import com.day.cq.workflow.exec.Workflow;
import com.day.cq.workflow.exec.WorkflowData;
import com.day.cq.workflow.exec.filter.WorkItemFilter;
import com.day.cq.workflow.metadata.MetaDataMap;
import com.day.cq.workflow.model.WorkflowModel;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.Dictionary;
import java.util.Hashtable;
import java.util.List;

public class SyntheticWorkflow implements Workflow {
    private final String id;

    private final Date timeStarted;

    private SyntheticWorkflowData workflowData;

    private SyntheticWorkItem activeWorkItem;

    public SyntheticWorkflow(final String id,
                             final SyntheticWorkflowData workflowData) {
        this.id = id;
        this.workflowData = workflowData;
        this.timeStarted = new Date();
    }

    public final void setActiveWorkItem(final SyntheticWorkItem workItem) {
        this.activeWorkItem = workItem;
    }

    @Override
    public final String getId() {
        return this.id;
    }

    @Override
    public final List getWorkItems() {
        return Arrays.asList(new WorkItem[]{this.activeWorkItem});
    }

    @Override
    public final List getWorkItems(final WorkItemFilter workItemFilter) {
        final List filtered = new ArrayList();

        for (final WorkItem workItem : this.getWorkItems()) {
            if (workItemFilter.doInclude(workItem)) {
                filtered.add(workItem);
            }
        }

        return filtered;
    }

    @Override
    public final WorkflowModel getWorkflowModel() {
        return null;
    }

    @Override
    public final boolean isActive() {
        return true;
    }

    @Override
    public final String getState() {
        return "Synthetic Running";
    }

    @Override
    public final String getInitiator() {
        return "Synthetic Workflow";
    }

    @Override
    public final Date getTimeStarted() {
        return (Date) this.timeStarted.clone();
    }

    @Override
    public final Date getTimeEnded() {
        return null;
    }

    @Override
    public final WorkflowData getWorkflowData() {
        return this.workflowData;
    }

    public final void setWorkflowData(final WorkflowData workflowData) {
        this.workflowData.resetTo(workflowData);
    }

    /**
     * @deprecated deprecated in interface
     */
    @Deprecated
    @Override
    @SuppressWarnings("squid:S1149")
    public final Dictionary getMetaData() {
        final Dictionary dictionary = new Hashtable();

        for (String key : this.getMetaDataMap().keySet()) {
            dictionary.put(key, this.getMetaDataMap().get(key, String.class));
        }

        return dictionary;
    }

    @Override
    public final MetaDataMap getMetaDataMap() {
        return this.getWorkflowData().getMetaDataMap();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy