/* * Copyright 2015 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * * 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. */ package org.jbpm.services.task.impl.model.xml; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlSchemaType; import javax.xml.bind.annotation.XmlSeeAlso; import javax.xml.bind.annotation.XmlType; import org.jbpm.services.task.impl.model.xml.InternalJaxbWrapper.GetterUser; import org.kie.api.task.model.Attachment; import org.kie.api.task.model.Comment; import org.kie.api.task.model.Status; import org.kie.api.task.model.TaskData; import org.kie.api.task.model.User; import org.kie.internal.task.api.model.AccessType; import org.kie.internal.task.api.model.InternalTaskData; import com.fasterxml.jackson.annotation.JsonAutoDetect; @XmlType(name = "task-data") @XmlAccessorType(XmlAccessType.FIELD) @XmlSeeAlso({ JaxbComment.class, JaxbAttachment.class }) @JsonAutoDetect(getterVisibility=JsonAutoDetect.Visibility.NONE, setterVisibility=JsonAutoDetect.Visibility.NONE, fieldVisibility=JsonAutoDetect.Visibility.ANY) public class JaxbTaskData extends AbstractJaxbTaskObject<TaskData> implements TaskData { @XmlElement private Status status; @XmlElement private Status previousStatus; @XmlElement(name = "actual-owner") private String actualOwner; @XmlElement(name = "created-by") private String createdBy; @XmlElement(name = "created-on") @XmlSchemaType(name = "dateTime") private Date createdOn; @XmlElement(name = "activation-time") @XmlSchemaType(name = "dateTime") private Date activationTime; @XmlElement(name = "expiration-time") @XmlSchemaType(name = "dateTime") private Date expirationTime; @XmlElement @XmlSchemaType(name = "boolean") private Boolean skipable; @XmlElement(name = "work-item-id") @XmlSchemaType(name = "long") private Long workItemId; @XmlElement(name = "process-instance-id") @XmlSchemaType(name = "long") private Long processInstanceId; @XmlElement(name = "document-type") @XmlSchemaType(name = "string") private String documentType; @XmlElement(name = "document-access-type") private AccessType documentAccessType; @XmlElement(name = "document-content-id") @XmlSchemaType(name = "long") private Long documentContentId; @XmlElement(name = "output-type") @XmlSchemaType(name = "string") private String outputType; @XmlElement(name = "output-access-type") private AccessType outputAccessType; @XmlElement(name = "output-content-id") @XmlSchemaType(name = "long") private Long outputContentId; @XmlElement(name = "fault-name") @XmlSchemaType(name = "string") private String faultName; @XmlElement(name = "fault-access-type") private AccessType faultAccessType; @XmlElement(name = "fault-type") @XmlSchemaType(name = "string") private String faultType; @XmlElement(name = "fault-content-id") @XmlSchemaType(name = "long") private Long faultContentId; @XmlElement(name = "parent-id") @XmlSchemaType(name = "long") private Long parentId; @XmlElement(name = "process-id") @XmlSchemaType(name = "string") private String processId; @XmlElement(name = "process-session-id") @XmlSchemaType(name = "long") private Long processSessionId; @XmlElement private List<JaxbComment> comments; @XmlElement private List<JaxbAttachment> attachments; @XmlElement(name = "deployment-id") @XmlSchemaType(name = "string") private String deploymentId; public JaxbTaskData() { super(TaskData.class); } public JaxbTaskData(TaskData taskData) { super(TaskData.class); this.status = taskData.getStatus(); this.previousStatus = taskData.getPreviousStatus(); User actualOwnerUser = taskData.getActualOwner(); if( actualOwnerUser != null ) { this.actualOwner = actualOwnerUser.getId(); } User createdByUser = taskData.getCreatedBy(); if( createdByUser != null ) { this.createdBy = createdByUser.getId(); } this.createdOn = taskData.getCreatedOn(); this.activationTime = taskData.getActivationTime(); this.expirationTime = taskData.getExpirationTime(); this.skipable = taskData.isSkipable(); this.workItemId = taskData.getWorkItemId(); this.processInstanceId = taskData.getProcessInstanceId(); this.documentType = taskData.getDocumentType(); if( taskData instanceof JaxbTaskData ) { JaxbTaskData jaxbTaskData = (JaxbTaskData) taskData; this.documentAccessType = jaxbTaskData.getDocumentAccessType(); this.outputAccessType = jaxbTaskData.getOutputAccessType(); this.faultAccessType = jaxbTaskData.getFaultAccessType(); } else if( taskData instanceof InternalTaskData ) { InternalTaskData internalTaskData = (InternalTaskData) taskData; this.documentAccessType = internalTaskData.getDocumentAccessType(); this.outputAccessType = internalTaskData.getOutputAccessType(); this.faultAccessType = internalTaskData.getFaultAccessType(); } this.documentContentId = taskData.getDocumentContentId(); this.outputType = taskData.getOutputType(); this.outputContentId = taskData.getOutputContentId(); this.faultName = taskData.getFaultName(); this.faultType = taskData.getFaultType(); this.faultContentId = taskData.getFaultContentId(); this.parentId = taskData.getParentId(); this.processId = taskData.getProcessId(); this.processSessionId = taskData.getProcessSessionId(); if( taskData.getComments() != null ) { List<JaxbComment> commentList = new ArrayList<JaxbComment>(); for (Object comment : taskData.getComments() ) { commentList.add(new JaxbComment((Comment) comment)); } this.comments = commentList; } List<JaxbAttachment> attachList = new ArrayList<JaxbAttachment>(); for (Object attach : taskData.getAttachments() ) { attachList.add(new JaxbAttachment((Attachment) attach)); } this.attachments = attachList; this.deploymentId = taskData.getDeploymentId(); } @Override public Status getStatus() { return status; } public void setStatus(Status status) { this.status = status; } @Override public Status getPreviousStatus() { return previousStatus; } public void setPreviousStatus(Status previousStatus) { this.previousStatus = previousStatus; } @Override public User getActualOwner() { return new GetterUser(actualOwner); } public String getActualOwnerId() { return actualOwner; } public void setActualOwnerId(String actualOwnerId) { this.actualOwner = actualOwnerId; } @Override public User getCreatedBy() { return new GetterUser(createdBy); } public String getCreatedById() { return createdBy; } public void setCreatedById(String createdById) { this.createdBy = createdById; } @Override public Date getCreatedOn() { return createdOn; } public void setCreatedOn(Date createdOn) { this.createdOn = createdOn; } @Override public Date getActivationTime() { return activationTime; } public void setActivationTime(Date activationTime) { this.activationTime = activationTime; } @Override public Date getExpirationTime() { return expirationTime; } public void setExpirationTime(Date expirationTime) { this.expirationTime = expirationTime; } @Override public boolean isSkipable() { return skipable; } public void setSkipable(Boolean skipable) { this.skipable = skipable; } @Override public long getWorkItemId() { return whenNull(workItemId, -1l); } public void setWorkItemId(Long workItemId) { this.workItemId = workItemId; } @Override public long getProcessInstanceId() { return whenNull(processInstanceId, -1l); } public void setProcessInstanceId(Long processInstanceId) { this.processInstanceId = processInstanceId; } @Override public String getDocumentType() { return documentType; } public void setDocumentType(String documentType) { this.documentType = documentType; } public AccessType getDocumentAccessType() { return documentAccessType; } public void setDocumentAccessType( AccessType documentAccessType ) { this.documentAccessType = documentAccessType; } @Override public long getDocumentContentId() { return whenNull(documentContentId, -1l); } public void setDocumentContentId(Long documentContentId) { this.documentContentId = documentContentId; } @Override public String getOutputType() { return outputType; } public void setOutputType(String outputType) { this.outputType = outputType; } public AccessType getOutputAccessType() { return outputAccessType; } public void setOutputAccessType( AccessType outputAccessType ) { this.outputAccessType = outputAccessType; } @Override public Long getOutputContentId() { return whenNull(outputContentId, -1l); } public void setOutputContentId(Long outputContentId) { this.outputContentId = outputContentId; } @Override public String getFaultName() { return faultName; } public void setFaultName(String faultName) { this.faultName = faultName; } public AccessType getFaultAccessType() { return faultAccessType; } public void setFaultAccessType( AccessType faultAccessType ) { this.faultAccessType = faultAccessType; } @Override public String getFaultType() { return faultType; } public void setFaultType(String faultType) { this.faultType = faultType; } @Override public long getFaultContentId() { return whenNull(faultContentId, -1l); } public void setFaultContentId(Long faultContentId) { this.faultContentId = faultContentId; } @Override public long getParentId() { return whenNull(parentId, -1l); } public void setParentId(Long parentId) { this.parentId = parentId; } @Override public String getProcessId() { return processId; } public void setProcessId(String processId) { this.processId = processId; } @Override public long getProcessSessionId() { return whenNull(processSessionId, -1l); } public void setProcessSessionId(Long processSessionId) { this.processSessionId = processSessionId; } @Override public List<Comment> getComments() { List<Comment> commentList = new ArrayList<Comment>(); if (comments != null) { for (JaxbComment jaxbComment : comments) { commentList.add(jaxbComment); } } return Collections.unmodifiableList(commentList); } public void setJaxbComments(List<JaxbComment> comments) { this.comments = comments; } @Override public List<Attachment> getAttachments() { List<Attachment> attachmentList = new ArrayList<Attachment>(); if (attachments != null) { for (JaxbAttachment jaxbAttachment : attachments) { attachmentList.add(jaxbAttachment); } } return Collections.unmodifiableList(attachmentList); } @Override public String getDeploymentId() { return deploymentId; } public void setDeploymentId(String deploymentId) { this.deploymentId = deploymentId; } @Override public Map<String, Object> getTaskInputVariables() { return new HashMap<String, Object>(); } @Override public Map<String, Object> getTaskOutputVariables() { return new HashMap<String, Object>(); } }