package pl.edu.icm.saos.persistence.model.importer;
import javax.persistence.Cacheable;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Index;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import org.joda.time.DateTime;
/**
* Judgment raw data received (during the import process) from the common court judgment source
*
* @author Ćukasz Dumiszewski
*/
@Table(schema="importer",
indexes = {@Index(name="idx_source_id", columnList="sourceId"), @Index(name="idx_data_md5", columnList="dataMd5")},
uniqueConstraints={@UniqueConstraint(name="sourceIdDataMd5_Unique", columnNames={"sourceId", "dataMd5"})})
@Entity
@Cacheable(true)
public class RawSourceCcJudgment extends RawSourceJudgment {
private String caseNumber;
private DateTime publicationDate;
private ImportProcessingSkipReason processingSkipReason;
private String textMetadata;
private String textContent;
private String sourceUrl;
private String contentSourceUrl;
private String dataMd5;
//------------------------ GETTERS --------------------------
public String getTextMetadata() {
return textMetadata;
}
public String getTextContent() {
return textContent;
}
public String getCaseNumber() {
return caseNumber;
}
public String getSourceUrl() {
return sourceUrl;
}
/** If the text content of the judgment has been downloaded from a different url
* then the url is put in here */
public String getContentSourceUrl() {
return contentSourceUrl;
}
/** date of publication in the source system */
public DateTime getPublicationDate() {
return publicationDate;
}
/**
* md5 generated in SAOS from metadata and content <br/>
* will simplify detecting the records that have not changed, if for any reason we will reimport the
* judgments
*/
public String getDataMd5() {
return dataMd5;
}
@Enumerated(EnumType.STRING)
public ImportProcessingSkipReason getProcessingSkipReason() {
return processingSkipReason;
}
//------------------------ LOGIC --------------------------
@Override
public void markProcessed() {
super.markProcessed();
setProcessingSkipReason(null);
}
public void markProcessingSkipped(ImportProcessingSkipReason skipReason) {
setProcessingSkipReason(skipReason);
setProcessingDate(new DateTime());
}
//------------------------ SETTERS --------------------------
public void setTextMetadata(String textMetadata) {
this.textMetadata = textMetadata;
}
public void setTextContent(String textContent) {
this.textContent = textContent;
}
public void setCaseNumber(String caseNumber) {
this.caseNumber = caseNumber;
}
public void setSourceUrl(String sourceUrl) {
this.sourceUrl = sourceUrl;
}
public void setContentSourceUrl(String contentSourceUrl) {
this.contentSourceUrl = contentSourceUrl;
}
public void setPublicationDate(DateTime publicationDate) {
this.publicationDate = publicationDate;
}
public void setDataMd5(String dataMd5) {
this.dataMd5 = dataMd5;
}
public void setProcessingSkipReason(ImportProcessingSkipReason processingSkipReason) {
this.processingSkipReason = processingSkipReason;
}
//------------------------ HashCode & Equals --------------------------
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((dataMd5 == null) ? 0 : dataMd5.hashCode());
result = prime * result
+ ((getSourceId() == null) ? 0 : getSourceId().hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
RawSourceCcJudgment other = (RawSourceCcJudgment) obj;
if (dataMd5 == null) {
if (other.dataMd5 != null)
return false;
} else if (!dataMd5.equals(other.dataMd5))
return false;
if (getSourceId() == null) {
if (other.getSourceId() != null)
return false;
} else if (!getSourceId().equals(other.getSourceId()))
return false;
return true;
}
@Override
public String toString() {
return "RawSourceCcJudgment [id=" + getId() + ", ver=" + getVer() + ", sourceId=" + getSourceId() + ", caseNumber="
+ caseNumber + ", publicationDate=" + publicationDate
+ ", processingDate=" + getProcessingDate() + ", processed="
+ isProcessed()
+ ", processingSkipReason=" + processingSkipReason + " , sourceUrl=" + sourceUrl
+ ", contentSourceUrl=" + contentSourceUrl + ", dataMd5="
+ dataMd5
+ "]";
}
}