/*
* #%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.granite;
import com.adobe.acs.commons.workflow.synthetic.impl.SyntheticMetaDataMap;
import com.adobe.granite.workflow.exec.Status;
import com.adobe.granite.workflow.exec.WorkItem;
import com.adobe.granite.workflow.exec.Workflow;
import com.adobe.granite.workflow.exec.WorkflowData;
import com.adobe.granite.workflow.metadata.MetaDataMap;
import com.adobe.granite.workflow.model.WorkflowNode;
import java.util.Date;
import java.util.UUID;
public class SyntheticWorkItem implements WorkItem {
private static final String CURRENT_ASSIGNEE = "Synthetic Workflow";
private final UUID uuid = UUID.randomUUID();
private Date timeStarted = null;
private Date timeEnded = null;
private Workflow workflow;
private final WorkflowData workflowData;
private MetaDataMap metaDataMap = new SyntheticMetaDataMap();
public SyntheticWorkItem(final WorkflowData workflowData) {
this.workflowData = workflowData;
this.timeStarted = new Date();
}
@Override
public final String getId() {
return uuid.toString() + "_" + this.getWorkflowData().getPayload();
}
@Override
public final Date getTimeStarted() {
return this.timeStarted == null ? null : (Date) this.timeStarted.clone();
}
@Override
public final Date getTimeEnded() {
return this.timeEnded == null ? null : (Date) this.timeEnded.clone();
}
public final void setTimeEnded(final Date timeEnded) {
if (timeEnded == null) {
this.timeEnded = null;
} else {
this.timeEnded = (Date) timeEnded.clone();
}
}
@Override
public final WorkflowData getWorkflowData() {
return this.workflowData;
}
@Override
public final String getCurrentAssignee() {
return CURRENT_ASSIGNEE;
}
/**
* This metadata map is local to this Workflow Item. This Map will change with each
* WorkflowProcess step.
*
* @return the WorkItem's MetaDataMap
*/
@Override
public final MetaDataMap getMetaDataMap() {
return this.metaDataMap;
}
@Override
public final Workflow getWorkflow() {
return this.workflow;
}
public final void setWorkflow(final SyntheticWorkflow workflow) {
workflow.setActiveWorkItem(this);
this.workflow = workflow;
}
@Override
public Status getStatus() {
return Status.ACTIVE;
}
/* Unimplemented Methods */
@Override
public final WorkflowNode getNode() {
return null;
}
@Override
public String getItemType() {
return "Synthetic Workflow";
}
@Override
public String getItemSubType() {
return null;
}
public String getContentPath() {
if ("JCR_PATH".equals(this.workflowData.getPayloadType())) {
return (String) this.workflowData.getPayload();
} else {
return null;
}
}
}