/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE and NOTICE files at the root of the source * tree and available online at * * http://www.dspace.org/license/ */ package org.dspace.workflowbasic; import org.dspace.content.Collection; import org.dspace.content.Item; import org.dspace.core.Context; import org.dspace.core.ReloadableEntity; import org.dspace.eperson.EPerson; import org.dspace.workflow.WorkflowItem; import javax.persistence.*; import java.sql.SQLException; /** * Class representing an item going through the workflow process in DSpace * * @author Robert Tansley * @version $Revision$ */ @Entity @Table(name = "workflowitem") public class BasicWorkflowItem implements WorkflowItem, ReloadableEntity<Integer> { @Id @Column(name = "workflow_id", unique = true, nullable = false) @GeneratedValue(strategy = GenerationType.SEQUENCE ,generator="workflowitem_seq") @SequenceGenerator(name="workflowitem_seq", sequenceName="workflowitem_seq", allocationSize = 1) private Integer workflowitemId; /** The item this workflow object pertains to */ @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "item_id", unique = true) private Item item; /** The collection the item is being submitted to */ @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "collection_id") private Collection collection; /** EPerson owning the current state */ @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "owner") private EPerson owner; @Column(name = "state") private int state; @Column(name = "multiple_titles") private boolean multipleTitles = false; @Column(name = "published_before") private boolean publishedBefore = false; @Column(name = "multiple_files") private boolean multipleFiles = false; /** * Protected constructor, create object using: * {@link org.dspace.workflowbasic.service.BasicWorkflowItemService#create(Context, Item, Collection)} * */ protected BasicWorkflowItem() { } /** * Get the internal ID of this workflow item * * @return the internal identifier */ @Override public Integer getID() { return workflowitemId; } /** * get owner of WorkflowItem * * @return EPerson owner */ public EPerson getOwner() { return owner; } /** * set owner of WorkflowItem * * @param ep * owner */ public void setOwner(EPerson ep) { this.owner = ep; } /** * Get state of WorkflowItem * * @return state */ public int getState() { return state; } /** * Set state of WorkflowItem * * @param newstate * new state (from <code>WorkflowManager</code>) */ public void setState(int newstate) { this.state = newstate; } // InProgressSubmission methods @Override public Item getItem() { return item; } void setItem(Item item) { this.item = item; } @Override public Collection getCollection() { return collection; } void setCollection(Collection collection) { this.collection = collection; } @Override public EPerson getSubmitter() throws SQLException { return item.getSubmitter(); } @Override public boolean hasMultipleFiles() { return multipleFiles; } @Override public void setMultipleFiles(boolean b) { this.multipleFiles = b; } @Override public boolean hasMultipleTitles() { return multipleTitles; } @Override public void setMultipleTitles(boolean b) { this.multipleTitles = b; } @Override public boolean isPublishedBefore() { return publishedBefore; } @Override public void setPublishedBefore(boolean b) { this.publishedBefore = b; } }