diff --git a/pom.xml b/pom.xml index f1b13e7..9019dd8 100644 --- a/pom.xml +++ b/pom.xml @@ -82,6 +82,13 @@ + + + org.apache.commons + commons-compress + 1.13 + + org.tukaani diff --git a/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/AbstractAlgorithm.java b/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/AbstractAlgorithm.java index fb42aab..e7fbc48 100644 --- a/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/AbstractAlgorithm.java +++ b/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/AbstractAlgorithm.java @@ -38,7 +38,10 @@ public abstract class AbstractAlgorithm { try(OutputStream out = createCompressor(outputStream)) { byte[] buf = new byte[8192]; int s; while ((s = inputStream.read(buf)) != -1) out.write(buf, 0, s); - out.flush(); + try { + outputStream.flush(); + } + catch (Throwable ignored) {} // Some compressors may not support flushing, like LZMA } } @@ -46,7 +49,10 @@ public abstract class AbstractAlgorithm { try(InputStream is = createDecompressor(inputStream)) { byte[] buf = new byte[8192]; int s; while ((s = is.read(buf)) != -1) outputStream.write(buf, 0, s); - outputStream.flush(); + try { + outputStream.flush(); + } + catch (Throwable ignored) {} // Some compressors may not support flushing, like LZMA } } diff --git a/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/BZip2.java b/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/BZip2.java new file mode 100644 index 0000000..abccce3 --- /dev/null +++ b/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/BZip2.java @@ -0,0 +1,26 @@ +package eu.mikroskeem.uurimustoo.algoritmidetest.algoritmid; + +import lombok.Getter; +import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream; +import org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +/** + * @author Mark Vainomaa + */ +public class BZip2 extends AbstractAlgorithm { + @Getter private final String name = "BZip2"; + + @Override + public OutputStream createCompressor(OutputStream outputStream) throws IOException { + return new BZip2CompressorOutputStream(outputStream); + } + + @Override + public InputStream createDecompressor(InputStream inputStream) throws IOException { + return new BZip2CompressorInputStream(inputStream); + } +} diff --git a/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/LZMA.java b/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/LZMA.java new file mode 100644 index 0000000..2f23695 --- /dev/null +++ b/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/LZMA.java @@ -0,0 +1,26 @@ +package eu.mikroskeem.uurimustoo.algoritmidetest.algoritmid; + +import lombok.Getter; +import org.apache.commons.compress.compressors.lzma.LZMACompressorInputStream; +import org.apache.commons.compress.compressors.lzma.LZMACompressorOutputStream; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +/** + * @author Mark Vainomaa + */ +public class LZMA extends AbstractAlgorithm { + @Getter private final String name = "LZMA"; + + @Override + public OutputStream createCompressor(OutputStream outputStream) throws IOException { + return new LZMACompressorOutputStream(outputStream); + } + + @Override + public InputStream createDecompressor(InputStream inputStream) throws IOException { + return new LZMACompressorInputStream(inputStream); + } +}