/**
* 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.versioning;
import org.dspace.content.Item;
import org.dspace.core.Context;
import org.dspace.eperson.EPerson;
import org.dspace.storage.rdbms.TableRow;
import java.sql.SQLException;
import java.util.Date;
/**
*
*
* @author Fabio Bolognesi (fabio at atmire dot com)
* @author Mark Diggory (markd at atmire dot com)
* @author Ben Bosman (ben at atmire dot com)
*/
public class VersionImpl implements Version {
private int versionId;
private EPerson eperson;
private int itemID=-1;
private Date versionDate;
private int versionNumber;
private String summary;
private int versionHistoryID;
private Context myContext;
private TableRow myRow;
protected VersionImpl(Context c, TableRow row)
{
myContext = c;
myRow = row;
c.cache(this, row.getIntColumn(VersionDAO.VERSION_ID));
}
public int getVersionId()
{
return myRow.getIntColumn(VersionDAO.VERSION_ID);
}
protected void setVersionId(int versionId)
{
this.versionId = versionId;
}
public EPerson getEperson(){
try {
if (eperson == null)
{
return EPerson.find(myContext, myRow.getIntColumn(VersionDAO.EPERSON_ID));
}
} catch (SQLException e) {
throw new RuntimeException(e.getMessage(), e);
}
return eperson;
}
public void setEperson(EPerson ePerson) {
this.eperson = ePerson;
myRow.setColumn(VersionDAO.EPERSON_ID, ePerson.getID());
}
public int getItemID() {
return myRow.getIntColumn(VersionDAO.ITEM_ID);
}
public Item getItem(){
try{
if(getItemID()==-1)
{
return null;
}
return Item.find(myContext, getItemID());
}catch(SQLException e){
throw new RuntimeException(e.getMessage(), e);
}
}
public void setItemID(int itemID)
{
this.itemID = itemID;
myRow.setColumn(VersionDAO.ITEM_ID, itemID);
}
public Date getVersionDate() {
return myRow.getDateColumn(VersionDAO.VERSION_DATE);
}
public void setVersionDate(Date versionDate) {
this.versionDate = versionDate;
myRow.setColumn(VersionDAO.VERSION_DATE, versionDate);
}
public int getVersionNumber() {
return myRow.getIntColumn(VersionDAO.VERSION_NUMBER);
}
public void setVersionNumber(int versionNumber) {
this.versionNumber = versionNumber;
myRow.setColumn(VersionDAO.VERSION_NUMBER, versionNumber);
}
public String getSummary() {
return myRow.getStringColumn(VersionDAO.VERSION_SUMMARY);
}
public void setSummary(String summary) {
this.summary = summary;
myRow.setColumn(VersionDAO.VERSION_SUMMARY, summary);
}
public int getVersionHistoryID() {
return myRow.getIntColumn(VersionDAO.HISTORY_ID);
}
public void setVersionHistory(int versionHistoryID) {
this.versionHistoryID = versionHistoryID;
myRow.setColumn(VersionDAO.HISTORY_ID, versionHistoryID);
}
public Context getMyContext(){
return myContext;
}
protected TableRow getMyRow(){
return myRow;
}
@Override
public boolean equals(Object o) {
if (this == o)
{
return true;
}
if (o == null || getClass() != o.getClass())
{
return false;
}
VersionImpl version = (VersionImpl) o;
return getVersionId() == version.getVersionId();
}
@Override
public int hashCode() {
int hash=7;
hash=79*hash+(int) (this.getVersionId() ^ (this.getVersionId() >>> 32));
return hash;
}
}