package dk.kb.yggdrasil.db; import java.io.File; import java.io.Serializable; import dk.kb.yggdrasil.exceptions.ArgumentCheck; import dk.kb.yggdrasil.exceptions.YggdrasilException; import dk.kb.yggdrasil.json.preservationimport.PreservationImportRequest; import dk.kb.yggdrasil.preservationimport.PreservationImportState; /** * This class is a container for the preservation import request from valhal, * and to keep track of the progress. */ public class PreservationImportRequestState implements Serializable { /** The preservationRequest received from Valhal. */ private PreservationImportRequest request; /** The current preservationState */ private PreservationImportState state; /** The Checksum of the warc record payload from the warc-record-header.*/ private String warcHeaderChecksum = null; /** The data to be imported into Valhal. */ private File importData = null; /** * The constructor of the PreservationImportRequestState. * @param request The request itself * @param preservationState Its current state in Yggdrasil */ public PreservationImportRequestState(PreservationImportRequest request, PreservationImportState preservationState) { ArgumentCheck.checkNotNull(request, "PreservationImportRequest request"); ArgumentCheck.checkNotNull(preservationState, "PreservationImportState preservationState"); this.request = request; this.state = preservationState; } /** @return the preservation import state of this request. */ public PreservationImportState getState() { return state; } /** * Change state to the newState if this is a valid statechange * @param newState The new state * @throws YggdrasilException If it fails to validate the state change. */ public void setState(PreservationImportState newState) throws YggdrasilException { ArgumentCheck.checkNotNull(newState, "PreservationImportState newState"); PreservationImportState.verifyIfValidStateChange(this.state, newState); this.state = newState; } /** * @return the request itself */ public PreservationImportRequest getRequest() { return request; } /** * Sets the import data file. * @param importFile The import data file. */ public void setImportData(File importFile) { ArgumentCheck.checkExistsNormalFile(importFile, "File importFile"); importData = importFile; } /** * @return The file with the import data (or null, if no such file has been retrieved). */ public File getImportData() { return importData; } /** * @param checksum The value for the warc header checksum variable. */ public void setWarcHeaderChecksum(String checksum) { warcHeaderChecksum = checksum; } /** * @return The checksum from the warc header. */ public String getWarcHeaderChecksum() { return warcHeaderChecksum; } /** * Removes the file with the import data. */ public void cleanup() { if(importData != null && importData.isFile()) { importData.delete(); } } }