package com.paypal.butterfly.core; import java.io.File; import org.apache.commons.io.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import com.paypal.butterfly.api.TransformationResult; import net.lingala.zip4j.core.ZipFile; import net.lingala.zip4j.model.ZipParameters; import net.lingala.zip4j.util.Zip4jConstants; /** * This bean takes care of compressing the output folder, * which results in a zip file * * @author facarvalho, matcurtis */ @Component class CompressionHandler { private static final Logger logger = LoggerFactory.getLogger(CompressionHandler.class); void compress(TransformationResult transformationResult) { File inputFile = transformationResult.getTransformedApplicationDir().getAbsoluteFile(); File compressedFile = new File(transformationResult.getTransformedApplicationDir().getAbsolutePath() + ".zip"); logger.info("Compressing transformed application"); try { ZipFile zipFile = new ZipFile(compressedFile); ZipParameters parameters = new ZipParameters(); parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); zipFile.addFolder(inputFile, parameters); FileUtils.deleteDirectory(transformationResult.getTransformedApplicationDir()); logger.info("Transformed application has been compressed to {}", compressedFile.getAbsoluteFile()); } catch (Exception e) { logger.error("An exception happened when compressing transformed application", e); } } }