/** * 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.authorize; import org.apache.commons.lang.ObjectUtils; import org.dspace.content.DSpaceObject; import org.dspace.core.Context; import org.dspace.core.ReloadableEntity; import org.dspace.eperson.EPerson; import org.dspace.eperson.Group; import org.hibernate.annotations.Type; import org.hibernate.proxy.HibernateProxyHelper; import javax.persistence.*; import java.util.Date; /** * Database entity representation of the ResourcePolicy table * * @author kevinvandevelde at atmire.com */ @Entity @Table(name="resourcepolicy") public class ResourcePolicy implements ReloadableEntity<Integer> { public static String TYPE_SUBMISSION = "TYPE_SUBMISSION"; public static String TYPE_WORKFLOW = "TYPE_WORKFLOW"; public static String TYPE_CUSTOM= "TYPE_CUSTOM"; public static String TYPE_INHERITED= "TYPE_INHERITED"; @Id @Column(name="policy_id") @GeneratedValue(strategy = GenerationType.SEQUENCE ,generator="resourcepolicy_seq") @SequenceGenerator(name="resourcepolicy_seq", sequenceName="resourcepolicy_seq", allocationSize = 1) private Integer id; @ManyToOne(fetch = FetchType.EAGER, cascade={CascadeType.PERSIST}) @JoinColumn(name = "dspace_object") private DSpaceObject dSpaceObject; /* * {@see org.dspace.core.Constants#Constants Constants} */ @Column(name = "resource_type_id") private int resourceTypeId; /* * {@see org.dspace.core.Constants#Constants Constants} */ @Column(name="action_id") private int actionId; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "eperson_id") private EPerson eperson; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name="epersongroup_id") private Group epersonGroup; @Column(name="start_date") @Temporal(TemporalType.DATE) private Date startDate; @Column(name="end_date") @Temporal(TemporalType.DATE) private Date endDate; @Column(name="rpname", length = 30) private String rpname; @Column(name="rptype", length = 30) private String rptype; @Lob @Type(type="org.hibernate.type.MaterializedClobType") @Column(name="rpdescription") private String rpdescription; /** * Protected constructor, create object using: * {@link org.dspace.authorize.service.ResourcePolicyService#create(Context)} */ protected ResourcePolicy() { } /** * Return true if this object equals obj, false otherwise. * * @param obj * object to compare (eperson, group, start date, end date, ...) * @return true if ResourcePolicy objects are equal */ @Override public boolean equals(Object obj) { if (obj == null) { return false; } Class<?> objClass = HibernateProxyHelper.getClassWithoutInitializingProxy(obj); if (getClass() != objClass) { return false; } final ResourcePolicy other = (ResourcePolicy) obj; if (getAction() != other.getAction()) { return false; } if (!ObjectUtils.equals(getEPerson(), other.getEPerson())) { return false; } if (!ObjectUtils.equals(getGroup(), other.getGroup())) { return false; } if (!ObjectUtils.equals(getStartDate(), other.getStartDate())) { return false; } if (!ObjectUtils.equals(getEndDate(), other.getEndDate())) { return false; } return true; } /** * Return a hash code for this object. * * @return int hash of object */ @Override public int hashCode() { int hash = 7; hash = 19 * hash + this.getAction(); if (this.getGroup() != null) { hash = 19 * hash + this.getGroup().hashCode(); } else { hash = 19 * hash + -1; } if (this.getEPerson() != null) { hash = 19 * hash + this.getEPerson().hashCode(); } else { hash = 19 * hash + -1; } hash = 19 * hash + (this.getStartDate() != null ? this.getStartDate().hashCode() : 0); hash = 19 * hash + (this.getEndDate() != null ? this.getEndDate().hashCode() : 0); return hash; } /** * Get the ResourcePolicy's internal identifier * * @return the internal identifier */ public Integer getID() { return id; } public DSpaceObject getdSpaceObject() { return dSpaceObject; } public void setdSpaceObject(DSpaceObject dSpaceObject) { this.dSpaceObject = dSpaceObject; this.resourceTypeId = dSpaceObject.getType(); } /** * set the action this policy authorizes * * @param myid action ID from {@link org.dspace.core.Constants#Constants Constants} */ public void setAction(int myid) { this.actionId = myid; } /** * @return get the action this policy authorizes */ public int getAction() { return actionId; } /** * @return eperson, null if EPerson not set */ public EPerson getEPerson() { return eperson; } /** * assign an EPerson to this policy * @param eperson Eperson */ public void setEPerson(EPerson eperson) { this.eperson = eperson; } /** * gets the Group referred to by this policy * * @return group, or null if no group set */ public Group getGroup() { return epersonGroup; } /** * sets the Group referred to by this policy * @param epersonGroup Group */ public void setGroup(Group epersonGroup) { this.epersonGroup = epersonGroup; } /** * Get the start date of the policy * * @return start date, or null if there is no start date set (probably most * common case) */ public java.util.Date getStartDate() { return startDate; } /** * Set the start date for the policy * * @param d * date, or null for no start date */ public void setStartDate(java.util.Date d) { startDate = d; } /** * Get end date for the policy * * @return end date or null for no end date */ public java.util.Date getEndDate() { return endDate; } /** * Set end date for the policy * * @param d * end date, or null */ public void setEndDate(java.util.Date d) { this.endDate = d; } public String getRpName() { return rpname; } public void setRpName(String name) { this.rpname = name; } public String getRpType() { return rptype; } public void setRpType(String type) { this.rptype = type; } public String getRpDescription() { return rpdescription; } public void setRpDescription(String description) { this.rpdescription = description; } }