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

org.drools.task.TaskData Maven / Gradle / Ivy

There is a newer version: 5.1.1
Show newest version
package org.drools.task;

import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.Collections;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Embeddable;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import org.drools.task.utils.CollectionUtils;

@Embeddable
public class TaskData
    implements
    Externalizable {
    @Enumerated(EnumType.STRING)
    private Status           status      = Status.Created;         // initial default state
    
    private Status           previousStatus = null;

    @ManyToOne()
    private User             actualOwner;

    @ManyToOne()
    private User             createdBy;

    private Date             createdOn;

    private Date             activationTime;

    private Date             expirationTime;

    private boolean          skipable;
    
    private long             workItemId = -1;
    
    private AccessType       documentAccessType;

    private String           documentType;

    private long             documentContentId = -1;

    private AccessType       outputAccessType;

    private String           outputType;

    private long             outputContentId = -1;
    
    private String 	         faultName;

    private AccessType       faultAccessType;

    private String           faultType;

    private long             faultContentId = -1;
    
    @OneToMany(cascade = CascadeType.ALL)
    @JoinColumn(name = "TaskData_Comments_Id", nullable = true)
    private List    comments    = Collections.emptyList();

    @OneToMany(cascade = CascadeType.ALL)
    @JoinColumn(name = "TaskData_Attachments_Id", nullable = true)
    private List attachments = Collections.emptyList();

    public void writeExternal(ObjectOutput out) throws IOException {
        if ( status != null ) {
            out.writeBoolean( true );
            out.writeUTF( status.toString() );
        } else {
            out.writeBoolean( false );
        }
        
        if ( previousStatus != null ) {
            out.writeBoolean( true );
            out.writeUTF( previousStatus.toString() );
        } else {
            out.writeBoolean( false );
        }        

        if ( actualOwner != null ) {
            out.writeBoolean( true );
            actualOwner.writeExternal( out );
        } else {
            out.writeBoolean( false );
        }

        if ( createdBy != null ) {
            out.writeBoolean( true );
            createdBy.writeExternal( out );
        } else {
            out.writeBoolean( false );
        }

        if ( createdOn != null ) {
            out.writeBoolean( true );
            out.writeLong( createdOn.getTime() );
        } else {
            out.writeBoolean( false );
        }

        if ( activationTime != null ) {
            out.writeBoolean( true );
            out.writeLong( activationTime.getTime() );
        } else {
            out.writeBoolean( false );
        }

        if ( expirationTime != null ) {
            out.writeBoolean( true );
            out.writeLong( expirationTime.getTime() );
        } else {
            out.writeBoolean( false );
        }
        
        out.writeBoolean( skipable );
        
        if ( workItemId != -1 ) {
            out.writeBoolean( true );
            out.writeLong( workItemId );
        } else {
            out.writeBoolean( false );
        }
        
        if ( documentAccessType != null ) {
            out.writeBoolean( true );
            out.writeObject( documentAccessType );
        } else {
            out.writeBoolean( false );
        }
        
        if ( documentType != null ) {
            out.writeBoolean( true );
            out.writeUTF( documentType );
        } else {
            out.writeBoolean( false );
        }
        
        if ( documentContentId != -1 ) {
            out.writeBoolean( true );
            out.writeLong( documentContentId );
        } else {
            out.writeBoolean( false );
        }
        
        if ( outputAccessType != null ) {
            out.writeBoolean( true );
            out.writeObject( outputAccessType );
        } else {
            out.writeBoolean( false );
        }
        
        if ( outputType != null ) {
            out.writeBoolean( true );
            out.writeUTF( outputType );
        } else {
            out.writeBoolean( false );
        }
        
        if ( outputContentId != -1 ) {
            out.writeBoolean( true );
            out.writeLong( outputContentId );
        } else {
            out.writeBoolean( false );
        }
        
        if ( faultName != null ) {
            out.writeBoolean( true );
            out.writeUTF( faultName );
        } else {
            out.writeBoolean( false );
        }
        
        if ( faultAccessType != null ) {
            out.writeBoolean( true );
            out.writeObject( faultAccessType );
        } else {
            out.writeBoolean( false );
        }
        
        if ( faultType != null ) {
            out.writeBoolean( true );
            out.writeUTF( faultType );
        } else {
            out.writeBoolean( false );
        }
        
        if ( faultContentId != -1 ) {
            out.writeBoolean( true );
            out.writeLong( faultContentId );
        } else {
            out.writeBoolean( false );
        }
        
        CollectionUtils.writeCommentList( comments,
                                          out );
        CollectionUtils.writeAttachmentList( attachments,
                                             out );
    }

    public void readExternal(ObjectInput in) throws IOException,
                                            ClassNotFoundException {
        if ( in.readBoolean() ) {
            status = Status.valueOf( in.readUTF() );
        }
        
        if ( in.readBoolean() ) {
            previousStatus = Status.valueOf( in.readUTF() );
        }

        if ( in.readBoolean() ) {
            actualOwner = new User();
            actualOwner.readExternal( in );
        }

        if ( in.readBoolean() ) {
            createdBy = new User();
            createdBy.readExternal( in );
        }

        if ( in.readBoolean() ) {
            createdOn = new Date( in.readLong() );
        }

        if ( in.readBoolean() ) {
            activationTime = new Date( in.readLong() );
        }

        if ( in.readBoolean() ) {
            expirationTime = new Date( in.readLong() );
        }

        skipable = in.readBoolean();

        if ( in.readBoolean() ) {
            workItemId = in.readLong();
        }
        
        if ( in.readBoolean() ) {
            documentAccessType = (AccessType) in.readObject();
        }

        if ( in.readBoolean() ) {
            documentType = in.readUTF();
        }
        
        if ( in.readBoolean() ) {
            documentContentId = in.readLong();
        }
        
        if ( in.readBoolean() ) {
            outputAccessType = (AccessType) in.readObject();
        }

        if ( in.readBoolean() ) {
            outputType = in.readUTF();
        }
        
        if ( in.readBoolean() ) {
            outputContentId = in.readLong();
        }
        
        if ( in.readBoolean() ) {
            faultName = in.readUTF();
        }
        
        if ( in.readBoolean() ) {
            faultAccessType = (AccessType) in.readObject();
        }

        if ( in.readBoolean() ) {
            faultType = in.readUTF();
        }
        
        if ( in.readBoolean() ) {
            faultContentId = in.readLong();
        }
        
        comments = CollectionUtils.readCommentList( in );
        attachments = CollectionUtils.readAttachmentList( in );

    }

    public Status getStatus() {
        return status;
    }

    public void setStatus(Status status) {
        previousStatus = this.status;
        this.status = status;
    }        

    public Status getPreviousStatus() {
        return previousStatus;
    }

    public void setPreviousStatus(Status previousStatus) {
        this.previousStatus = previousStatus;
    }

    public User getActualOwner() {
        return actualOwner;
    }

    public void setActualOwner(User actualOwner) {
        this.actualOwner = actualOwner;
    }

    public User getCreatedBy() {
        return createdBy;
    }

    public void setCreatedBy(User createdBy) {
        this.createdBy = createdBy;
    }

    public Date getCreatedOn() {
        return createdOn;
    }

    public void setCreatedOn(Date createdOn) {
        this.createdOn = createdOn;
    }

    public Date getActivationTime() {
        return activationTime;
    }

    public void setActivationTime(Date activationTime) {
        this.activationTime = activationTime;
    }

    public Date getExpirationTime() {
        return expirationTime;
    }

    public void setExpirationTime(Date expirationTime) {
        this.expirationTime = expirationTime;
    }

    public boolean isSkipable() {
        return skipable;
    }

    public void setSkipable(boolean isSkipable) {
        this.skipable = isSkipable;
    }
    
    public void setWorkItemId(long workItemId) {
    	this.workItemId = workItemId;
    }
    
    public long getWorkItemId() {
    	return workItemId;
    }
             
    public AccessType getDocumentAccessType() {
        return documentAccessType;
    }

    public void setDocumentAccessType(AccessType accessType) {
        this.documentAccessType = accessType;
    }

    public String getDocumentType() {
        return documentType;
    }        

    public long getDocumentContentId() {
        return documentContentId;
    }

    public void setDocumentContentId(long documentContentId) {
        this.documentContentId = documentContentId;
    }

    public void setDocumentType(String documentType) {
        this.documentType = documentType;
    }

    public AccessType getOutputAccessType() {
		return outputAccessType;
	}

	public void setOutputAccessType(AccessType outputAccessType) {
		this.outputAccessType = outputAccessType;
	}

	public String getOutputType() {
		return outputType;
	}

	public void setOutputType(String outputType) {
		this.outputType = outputType;
	}

	public long getOutputContentId() {
		return outputContentId;
	}

	public void setOutputContentId(long outputContentId) {
		this.outputContentId = outputContentId;
	}

	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;
	}

	public String getFaultType() {
		return faultType;
	}

	public void setFaultType(String faultType) {
		this.faultType = faultType;
	}

	public long getFaultContentId() {
		return faultContentId;
	}

	public void setFaultContentId(long faultContentId) {
		this.faultContentId = faultContentId;
	}

	public List getComments() {
        return comments;
    }

    public void setComments(List comments) {
        this.comments = comments;
    }

    public List getAttachments() {
        return attachments;
    }

    public void setAttachments(List attachments) {
        this.attachments = attachments;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((activationTime == null) ? 0 : activationTime.hashCode());
        result = prime * result + CollectionUtils.hashCode( attachments );
        result = prime * result + CollectionUtils.hashCode( comments );
        result = prime * result + ((createdOn == null) ? 0 : createdOn.hashCode());
        result = prime * result + ((expirationTime == null) ? 0 : expirationTime.hashCode());
        result = prime * result + (skipable ? 1231 : 1237);
        result = prime * result + ((status == null) ? 0 : status.hashCode());
        result = prime * result + ((previousStatus == null) ? 0 : previousStatus.hashCode());
        result = prime * result + ((workItemId == -1) ? 0 : (int) workItemId);
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if ( this == obj ) return true;
        if ( obj == null ) return false;
        if ( !(obj instanceof TaskData) ) return false;
        TaskData other = (TaskData) obj;

        if ( actualOwner == null ) {
            if ( other.actualOwner != null ) return false;
        } else if ( !actualOwner.equals( other.actualOwner ) ) {
            return false;
        }

        if ( createdBy == null ) {
            if ( other.createdBy != null ) return false;
        } else if ( !createdBy.equals( other.createdBy ) ) {
            return false;
        }

        if ( createdOn == null ) {
            if ( other.createdOn != null ) return false;
        } else if ( createdOn.getTime() != other.createdOn.getTime() ) return false;
        if ( expirationTime == null ) {
            if ( other.expirationTime != null ) return false;
        } else if ( expirationTime.getTime() != other.expirationTime.getTime() ) return false;
        if ( skipable != other.skipable ) return false;
        if ( workItemId != other.workItemId) return false;
        if ( status == null ) {
            if ( other.status != null ) return false;
        } else if ( !status.equals( other.status ) ) return false;
        if ( previousStatus == null ) {
            if ( other.previousStatus != null ) return false;
        } else if ( !previousStatus.equals( other.previousStatus ) ) return false;        
        if ( activationTime == null ) {
            if ( other.activationTime != null ) return false;
        } else if ( activationTime.getTime() != other.activationTime.getTime() ) return false;
                
        if ( workItemId != other.workItemId ) return false;
        
        if ( documentAccessType == null ) {
            if ( other.documentAccessType != null ) return false;
        } else if ( !documentAccessType.equals( other.documentAccessType ) ) return false;
        
        if ( documentContentId != other.documentContentId ) return false;
        if ( documentType == null ) {
            if ( other.documentType != null ) return false;
        } else if ( !documentType.equals( other.documentType ) ) return false;                
        
        return CollectionUtils.equals( attachments,
                                       other.attachments ) && CollectionUtils.equals( comments,
                                                                                      other.comments );
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy