package pl.edu.icm.saos.importer.notapi.common.content.transaction; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import org.springframework.stereotype.Service; import com.google.common.base.Preconditions; /** * Service responsible for commits and rollbacks operations * on {@link ContentFileTransactionContext} * * @author madryk */ @Service public class ContentFileCommitRollbackService { //------------------------ LOGIC -------------------------- /** * Performs commit of operations defined in {@link ContentFileTransactionContext} */ public void commit(ContentFileTransactionContext context) throws IOException { Preconditions.checkNotNull(context); File deletedTmpDirectory = context.getDeletedTmpDirectory(); FileUtils.deleteDirectory(deletedTmpDirectory); } /** * Performs rollback of operations defined in {@link ContentFileTransactionContext} */ public void rollback(ContentFileTransactionContext context) throws IOException { Preconditions.checkNotNull(context); File contentDirectory = context.getContentDirectory(); File deletedTmpDirectory = context.getDeletedTmpDirectory(); while(!context.containsAnyAddedFile()) { String addedFilePath = context.pollAddedFile(); File addedFile = new File(contentDirectory, addedFilePath); addedFile.delete(); } FileUtils.copyDirectory(deletedTmpDirectory, contentDirectory); FileUtils.deleteDirectory(deletedTmpDirectory); } }