package pl.edu.icm.saos.importer.notapi.common.content.transaction; import java.io.File; import java.util.LinkedList; import java.util.Queue; import com.google.common.base.Preconditions; /** * Context of transaction for operations on judgment content files. * * @author madryk */ public class ContentFileTransactionContext { private File deletedTmpDirectory; private Queue<String> addedFilesQueue; private File contentDirectory; //------------------------ CONSTRUCTORS -------------------------- /** * Creates new transaction context * * @param contentDirectory - directory where content files are stored * @param deletedTmpDirectory - used to store deleted files from content directory * within transaction context. */ public ContentFileTransactionContext(File contentDirectory, File deletedTmpDirectory) { Preconditions.checkNotNull(contentDirectory); Preconditions.checkNotNull(deletedTmpDirectory); this.contentDirectory = contentDirectory; this.deletedTmpDirectory = deletedTmpDirectory; addedFilesQueue = new LinkedList<String>(); } //------------------------ GETTERS -------------------------- /** * Returns temporary directory that contains deleted files within current transaction context. */ public File getDeletedTmpDirectory() { return deletedTmpDirectory; } /** * Returns queue of file paths which was added within current transaction context. * Paths are relative to {@link #getContentDirectory()}. */ public Queue<String> getAddedFiles() { return addedFilesQueue; } /** * Returns directory where judgments content files are stored */ public File getContentDirectory() { return contentDirectory; } //------------------------ LOGIC -------------------------- /** * Adds file path to queue */ public void addAddedFile(String path) { addedFilesQueue.add(path); } /** * Polls added file path from queue */ public String pollAddedFile() { return addedFilesQueue.poll(); } /** * Returns {@literal true} if queue of added file paths is empty */ public boolean containsAnyAddedFile() { return addedFilesQueue.isEmpty(); } }