/**
* 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.harvest;
import org.dspace.content.Collection;
import org.dspace.core.Context;
import org.dspace.core.ReloadableEntity;
import javax.persistence.*;
import java.util.Date;
/**
* @author Alexey Maslov
*/
@Entity
@Table(name="harvested_collection")
public class HarvestedCollection implements ReloadableEntity<Integer>
{
@Id
@Column(name="id")
@GeneratedValue(strategy = GenerationType.SEQUENCE ,generator="harvested_collection_seq")
@SequenceGenerator(name="harvested_collection_seq", sequenceName="harvested_collection_seq", allocationSize = 1)
private Integer id;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "collection_id")
private Collection collection;
@Column(name = "harvest_type")
private int harvestType;
@Column(name = "oai_source")
private String oaiSource;
@Column(name = "oai_set_id")
private String oaiSetId;
@Column(name = "harvest_message")
private String harvestMessage;
@Column(name = "metadata_config_id")
private String metadataConfigId;
@Column(name = "harvest_status")
private int harvestStatus;
@Column(name = "harvest_start_time", columnDefinition="timestamp with time zone")
@Temporal(TemporalType.TIMESTAMP)
private Date harvestStartTime;
@Column(name = "last_harvested", columnDefinition="timestamp with time zone")
@Temporal(TemporalType.TIMESTAMP)
private Date lastHarvested;
@Transient
public static final int TYPE_NONE = 0;
@Transient
public static final int TYPE_DMD = 1;
@Transient
public static final int TYPE_DMDREF = 2;
@Transient
public static final int TYPE_FULL = 3;
@Transient
public static final int STATUS_READY = 0;
@Transient
public static final int STATUS_BUSY = 1;
@Transient
public static final int STATUS_QUEUED = 2;
@Transient
public static final int STATUS_OAI_ERROR = 3;
@Transient
public static final int STATUS_UNKNOWN_ERROR = -1;
/**
* Protected constructor, create object using:
* {@link org.dspace.harvest.service.HarvestedCollectionService#create(Context, Collection)}
*
*/
protected HarvestedCollection()
{
}
public Integer getID() {
return id;
}
/**
* A function to set all harvesting-related parameters at once
* @param type
* harvest type (TYPE_NONE, TYPE_DMD, TYPE_DMDREF, TYPE_FULL)
* @param oaiSource
* base URL of the OAI-PMH server
* @param oaiSetId
* OAI set identifier
* @param mdConfigId
* harvest metadata config ID
*/
public void setHarvestParams(int type, String oaiSource, String oaiSetId, String mdConfigId) {
setHarvestType(type);
setOaiSource(oaiSource);
setOaiSetId(oaiSetId);
setHarvestMetadataConfig(mdConfigId);
}
/*
* Setters for the appropriate harvesting-related columns
*
* @param type
* harvest type (TYPE_NONE, TYPE_DMD, TYPE_DMDREF, TYPE_FULL
*/
public void setHarvestType(int type) {
this.harvestType = type;
}
/**
* Sets the current status of the collection.
*
* @param status a HarvestInstance.STATUS_... constant (STATUS_READY, STATUS_BUSY, STATUS_QUEUED, STATUS_OAI_ERROR, STATUS_UNKNOWN_ERROR)
*/
public void setHarvestStatus(int status) {
this.harvestStatus = status;
}
/**
* Sets the base URL of the OAI-PMH server.
*
* @param oaiSource base URL of the OAI-PMH server
*
*/
public void setOaiSource(String oaiSource) {
this.oaiSource = oaiSource;
}
/**
* Sets the OAI set to harvest.
*
* @param oaiSetId OAI set to harvest
*
*/
public void setOaiSetId(String oaiSetId) {
this.oaiSetId = oaiSetId;
}
public void setHarvestMetadataConfig(String mdConfigId) {
this.metadataConfigId = mdConfigId;
}
public void setLastHarvested(Date lastHarvested) {
this.lastHarvested = lastHarvested;
}
public void setHarvestMessage(String message) {
this.harvestMessage = message;
}
public void setHarvestStartTime(Date date) {
this.harvestStartTime = date;
}
/* Getting for the appropriate harvesting-related columns */
public Collection getCollection() {
return collection;
}
void setCollection(Collection collection) {
this.collection = collection;
}
public int getHarvestType() {
return harvestType;
}
public int getHarvestStatus() {
return harvestStatus;
}
public String getOaiSource() {
return oaiSource;
}
public String getOaiSetId() {
return oaiSetId;
}
public String getHarvestMetadataConfig() {
return metadataConfigId;
}
public String getHarvestMessage() {
return harvestMessage;
}
public Date getHarvestDate() {
return lastHarvested;
}
public Date getHarvestStartTime() {
return harvestStartTime;
}
}