Skip to content

Commit 04872d4

Browse files
#3 refactoring
1 parent 77a6eee commit 04872d4

6 files changed

+48
-36
lines changed

src/main/java/ru/olegcherednik/zip4jvm/io/out/entry/encrypted/Bzip2EntryOutputStream.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import ru.olegcherednik.zip4jvm.io.bzip2.Bzip2OutputStream;
2222
import ru.olegcherednik.zip4jvm.io.out.data.EncoderDataOutput;
2323
import ru.olegcherednik.zip4jvm.io.out.entry.EntryMetadataOutputStream;
24-
import ru.olegcherednik.zip4jvm.model.entry.ZipEntry;
24+
import ru.olegcherednik.zip4jvm.model.CompressionLevel;
2525

2626
import java.io.IOException;
2727

@@ -33,10 +33,11 @@ final class Bzip2EntryOutputStream extends EncryptedEntryOutputStream {
3333

3434
private final Bzip2OutputStream bzip2;
3535

36-
Bzip2EntryOutputStream(ZipEntry zipEntry, EncoderDataOutput encoderDataOutput, EntryMetadataOutputStream emos)
37-
throws IOException {
38-
super(zipEntry, encoderDataOutput, emos);
39-
bzip2 = new Bzip2OutputStream(encoderDataOutput, zipEntry.getCompressionLevel());
36+
Bzip2EntryOutputStream(CompressionLevel compressionLevel,
37+
EncoderDataOutput encoderDataOutput,
38+
EntryMetadataOutputStream emos) throws IOException {
39+
super(encoderDataOutput, emos);
40+
bzip2 = new Bzip2OutputStream(encoderDataOutput, compressionLevel);
4041
}
4142

4243
@Override

src/main/java/ru/olegcherednik/zip4jvm/io/out/entry/encrypted/DeflateEntryOutputStream.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
import ru.olegcherednik.zip4jvm.io.out.data.EncoderDataOutput;
2222
import ru.olegcherednik.zip4jvm.io.out.entry.EntryMetadataOutputStream;
23-
import ru.olegcherednik.zip4jvm.model.entry.ZipEntry;
23+
import ru.olegcherednik.zip4jvm.model.CompressionLevel;
2424

2525
import java.io.IOException;
2626
import java.util.zip.Deflater;
@@ -38,9 +38,11 @@ final class DeflateEntryOutputStream extends EncryptedEntryOutputStream {
3838

3939
public boolean firstBytesRead;
4040

41-
DeflateEntryOutputStream(ZipEntry zipEntry, EncoderDataOutput encoderDataOutput, EntryMetadataOutputStream emos) {
42-
super(zipEntry, encoderDataOutput, emos);
43-
deflater.setLevel(zipEntry.getCompressionLevel().getCode());
41+
DeflateEntryOutputStream(CompressionLevel compressionLevel,
42+
EncoderDataOutput encoderDataOutput,
43+
EntryMetadataOutputStream emos) {
44+
super(encoderDataOutput, emos);
45+
deflater.setLevel(compressionLevel.getCode());
4446
}
4547

4648
@Override

src/main/java/ru/olegcherednik/zip4jvm/io/out/entry/encrypted/EncryptedEntryOutputStream.java

+14-8
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import ru.olegcherednik.zip4jvm.exception.Zip4jvmException;
2222
import ru.olegcherednik.zip4jvm.io.out.data.EncoderDataOutput;
2323
import ru.olegcherednik.zip4jvm.io.out.entry.EntryMetadataOutputStream;
24+
import ru.olegcherednik.zip4jvm.model.CompressionLevel;
2425
import ru.olegcherednik.zip4jvm.model.CompressionMethod;
2526
import ru.olegcherednik.zip4jvm.model.entry.ZipEntry;
2627

@@ -37,25 +38,30 @@
3738
@RequiredArgsConstructor(access = AccessLevel.PROTECTED)
3839
public abstract class EncryptedEntryOutputStream extends OutputStream {
3940

40-
protected final ZipEntry zipEntry;
4141
protected final EncoderDataOutput encoderDataOutput;
4242
protected final EntryMetadataOutputStream emos;
4343

44-
public static EncryptedEntryOutputStream create(ZipEntry zipEntry,
44+
public static EncryptedEntryOutputStream create(ZipEntry entry,
4545
EncoderDataOutput encoderDataOutput,
4646
EntryMetadataOutputStream emos) throws IOException {
47-
CompressionMethod compressionMethod = zipEntry.getCompressionMethod();
47+
48+
CompressionMethod compressionMethod = entry.getCompressionMethod();
49+
CompressionLevel compressionLevel = entry.getCompressionLevel();
4850

4951
if (compressionMethod == CompressionMethod.STORE)
50-
return new StoreEntryOutputStream(zipEntry, encoderDataOutput, emos);
52+
return new StoreEntryOutputStream(encoderDataOutput, emos);
5153
if (compressionMethod == CompressionMethod.DEFLATE)
52-
return new DeflateEntryOutputStream(zipEntry, encoderDataOutput, emos);
54+
return new DeflateEntryOutputStream(compressionLevel, encoderDataOutput, emos);
5355
if (compressionMethod == CompressionMethod.BZIP2)
54-
return new Bzip2EntryOutputStream(zipEntry, encoderDataOutput, emos);
56+
return new Bzip2EntryOutputStream(compressionLevel, encoderDataOutput, emos);
5557
if (compressionMethod == CompressionMethod.LZMA)
56-
return new LzmaEntryOutputStream(zipEntry, encoderDataOutput, emos);
58+
return new LzmaEntryOutputStream(compressionLevel,
59+
entry.isLzmaEosMarker(),
60+
entry.getUncompressedSize(),
61+
encoderDataOutput,
62+
emos);
5763
if (compressionMethod == CompressionMethod.ZSTD)
58-
return new ZstdEntryOutputStream(zipEntry, encoderDataOutput, emos);
64+
return new ZstdEntryOutputStream(compressionLevel, encoderDataOutput, emos);
5965

6066
throw new Zip4jvmException("Compression '%s' is not supported", compressionMethod);
6167
}

src/main/java/ru/olegcherednik/zip4jvm/io/out/entry/encrypted/LzmaEntryOutputStream.java

+14-11
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import ru.olegcherednik.zip4jvm.io.out.data.EncoderDataOutput;
2424
import ru.olegcherednik.zip4jvm.io.out.entry.EntryMetadataOutputStream;
2525
import ru.olegcherednik.zip4jvm.model.CompressionLevel;
26-
import ru.olegcherednik.zip4jvm.model.entry.ZipEntry;
2726

2827
import java.io.IOException;
2928

@@ -36,17 +35,21 @@ final class LzmaEntryOutputStream extends EncryptedEntryOutputStream {
3635
private final LzmaOutputStream lzma;
3736
private boolean writeHeader = true;
3837

39-
LzmaEntryOutputStream(ZipEntry zipEntry, EncoderDataOutput encoderDataOutput, EntryMetadataOutputStream emos)
40-
throws IOException {
41-
super(zipEntry, encoderDataOutput, emos);
42-
lzma = createOutputStream(zipEntry, encoderDataOutput);
38+
LzmaEntryOutputStream(CompressionLevel compressionLevel,
39+
boolean eosMarker,
40+
long uncompressedSize,
41+
EncoderDataOutput encoderDataOutput,
42+
EntryMetadataOutputStream emos) throws IOException {
43+
super(encoderDataOutput, emos);
44+
lzma = createOutputStream(compressionLevel, eosMarker, uncompressedSize, encoderDataOutput);
4345
}
4446

45-
private static LzmaOutputStream createOutputStream(ZipEntry zipEntry, EncoderDataOutput encoderDataOutput)
46-
throws IOException {
47-
CompressionLevel compressionLevel = zipEntry.getCompressionLevel();
48-
long size = zipEntry.isLzmaEosMarker() ? -1 : zipEntry.getUncompressedSize();
49-
return new LzmaOutputStream(encoderDataOutput, new LzmaInputStream.Properties(compressionLevel), size);
47+
private static LzmaOutputStream createOutputStream(CompressionLevel compressionLevel,
48+
boolean eosMarker,
49+
long uncompressedSize,
50+
EncoderDataOutput encoderDataOutput) throws IOException {
51+
LzmaInputStream.Properties properties = new LzmaInputStream.Properties(compressionLevel);
52+
return new LzmaOutputStream(encoderDataOutput, properties, eosMarker ? -1 : uncompressedSize);
5053
}
5154

5255
@Override
@@ -56,7 +59,7 @@ public void write(byte[] buf, int offs, int len) throws IOException {
5659
if (writeHeader) {
5760
encoderDataOutput.writeByte((byte) 19); // major version
5861
encoderDataOutput.writeByte((byte) 0); // minor version
59-
encoderDataOutput.writeWord(5); // header size
62+
encoderDataOutput.writeWord(5); // header size
6063
lzma.writeHeader();
6164
writeHeader = false;
6265
}

src/main/java/ru/olegcherednik/zip4jvm/io/out/entry/encrypted/StoreEntryOutputStream.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
import ru.olegcherednik.zip4jvm.io.out.data.EncoderDataOutput;
2222
import ru.olegcherednik.zip4jvm.io.out.entry.EntryMetadataOutputStream;
23-
import ru.olegcherednik.zip4jvm.model.entry.ZipEntry;
2423

2524
import java.io.IOException;
2625

@@ -30,8 +29,8 @@
3029
*/
3130
final class StoreEntryOutputStream extends EncryptedEntryOutputStream {
3231

33-
StoreEntryOutputStream(ZipEntry zipEntry, EncoderDataOutput encoderDataOutput, EntryMetadataOutputStream emos) {
34-
super(zipEntry, encoderDataOutput, emos);
32+
StoreEntryOutputStream(EncoderDataOutput encoderDataOutput, EntryMetadataOutputStream emos) {
33+
super(encoderDataOutput, emos);
3534
}
3635

3736
@Override

src/main/java/ru/olegcherednik/zip4jvm/io/out/entry/encrypted/ZstdEntryOutputStream.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import ru.olegcherednik.zip4jvm.io.out.data.EncoderDataOutput;
2222
import ru.olegcherednik.zip4jvm.io.out.entry.EntryMetadataOutputStream;
2323
import ru.olegcherednik.zip4jvm.io.zstd.ZstdOutputStream;
24-
import ru.olegcherednik.zip4jvm.model.entry.ZipEntry;
24+
import ru.olegcherednik.zip4jvm.model.CompressionLevel;
2525

2626
import java.io.IOException;
2727

@@ -33,10 +33,11 @@ final class ZstdEntryOutputStream extends EncryptedEntryOutputStream {
3333

3434
private final ZstdOutputStream zstd;
3535

36-
ZstdEntryOutputStream(ZipEntry zipEntry, EncoderDataOutput encoderDataOutput, EntryMetadataOutputStream emos)
37-
throws IOException {
38-
super(zipEntry, encoderDataOutput, emos);
39-
zstd = new ZstdOutputStream(encoderDataOutput, zipEntry.getCompressionLevel());
36+
ZstdEntryOutputStream(CompressionLevel compressionLevel,
37+
EncoderDataOutput encoderDataOutput,
38+
EntryMetadataOutputStream emos) throws IOException {
39+
super(encoderDataOutput, emos);
40+
zstd = new ZstdOutputStream(encoderDataOutput, compressionLevel);
4041
}
4142

4243
@Override

0 commit comments

Comments
 (0)