/**
* Copyright (C) Intersect 2012.
*
* This module contains Proprietary Information of Intersect,
* and should be treated as Confidential.
*/
package au.org.intersect.exsite9.domain;
import java.io.File;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.eclipse.persistence.annotations.Convert;
import org.eclipse.persistence.annotations.Converter;
import com.google.common.base.Objects;
/**
* Represents a folder on the researcher's desktop that contains research data files
*/
@Entity
@Converter(name="fileToStringConverter",
converterClass=au.org.intersect.exsite9.domain.utils.FileToStringConverter.class)
public final class Folder implements Serializable
{
private static final long serialVersionUID = 8420843643147102477L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column(columnDefinition = "longvarchar")
@Convert("fileToStringConverter")
private File folder;
private long lastCheckTimeInMillis = 0L;
@OneToMany
private List<ResearchFile> files = new ArrayList<ResearchFile>(0);
public Folder()
{
}
public Folder(File folder)
{
this.folder = folder;
}
public Long getId()
{
return id;
}
public void setId(Long id)
{
this.id = id;
}
public long getLastCheckTimeInMillis()
{
return lastCheckTimeInMillis;
}
public void setLastCheckTimeInMillis(long lastCheckTimeInMillis)
{
this.lastCheckTimeInMillis = lastCheckTimeInMillis;
}
public File getFolder()
{
return this.folder;
}
public void setFolder(File folder)
{
this.folder = folder;
}
public List<ResearchFile> getFiles()
{
return files;
}
public void setFiles(List<ResearchFile> files)
{
this.files = files;
}
@Override
public boolean equals(final Object obj)
{
if (this == obj)
{
return true;
}
if (!(obj instanceof Folder))
{
return false;
}
final Folder other = (Folder) obj;
return Objects.equal(this.id, other.id);
}
@Override
public int hashCode()
{
return new HashCodeBuilder().append(this.id).toHashCode();
}
}