From d82fde8afb2f03326cea16cac9c6323538b1f6b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20Moravec?= <theazgra@gmail.com> Date: Mon, 20 Jul 2020 11:44:44 +0200 Subject: [PATCH] Add helpers for checks and move verbose flag to CompressionOptions. --- .../azgracompress/cli/ParsedCliOptions.java | 29 ++-------------- .../compression/CompressionOptions.java | 34 ++++++++++++++----- .../CompressorDecompressorBase.java | 4 +-- .../compression/ImageCompressor.java | 18 +++++++++- .../compression/SQImageCompressor.java | 2 +- .../compression/SQImageDecompressor.java | 2 +- .../compression/VQImageCompressor.java | 2 +- .../compression/VQImageDecompressor.java | 2 +- 8 files changed, 50 insertions(+), 43 deletions(-) diff --git a/src/main/java/azgracompress/cli/ParsedCliOptions.java b/src/main/java/azgracompress/cli/ParsedCliOptions.java index c77f346..28a3bde 100644 --- a/src/main/java/azgracompress/cli/ParsedCliOptions.java +++ b/src/main/java/azgracompress/cli/ParsedCliOptions.java @@ -19,11 +19,6 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable { */ private ProgramMethod method; - /** - * Flag whether the CLI app should be verbose while running. - */ - private boolean verbose; - /** * Flag whether parse error occurred. */ @@ -107,7 +102,7 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable { final String[] fileInfo = cmd.getArgs(); parseInputFilePart(errorBuilder, fileInfo); - verbose = cmd.hasOption(CliConstants.VERBOSE_LONG); + setVerbose(cmd.hasOption(CliConstants.VERBOSE_LONG)); if (cmd.hasOption(CliConstants.WORKER_COUNT_LONG)) { final String wcString = cmd.getOptionValue(CliConstants.WORKER_COUNT_LONG); @@ -373,10 +368,6 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable { return method; } - public boolean isVerbose() { - return verbose; - } - public boolean parseError() { return parseErrorOccurred; } @@ -456,28 +447,12 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable { sb.append("ToPlaneIndex: ").append(getPlaneRange().getInclusiveTo()).append('\n'); } - sb.append("Verbose: ").append(verbose).append('\n'); + sb.append("Verbose: ").append(isVerbose()).append('\n'); sb.append("ThreadWorkerCount: ").append(getWorkerCount()).append('\n'); return sb.toString(); } - /** - * Get number of planes to be compressed. - * - * @return Number of planes for compression. - */ - public int getNumberOfPlanes() { - if (getPlaneIndex() != null) { - return 1; - } else if (getPlaneRange() != null) { - final Interval<Integer> planeRange = getPlaneRange(); - return ((planeRange.getInclusiveTo() + 1) - planeRange.getFrom()); - } else { - return getImageDimension().getZ(); - } - } - @Override public Object clone() throws CloneNotSupportedException { return super.clone(); diff --git a/src/main/java/azgracompress/compression/CompressionOptions.java b/src/main/java/azgracompress/compression/CompressionOptions.java index 2f94b24..ac77295 100644 --- a/src/main/java/azgracompress/compression/CompressionOptions.java +++ b/src/main/java/azgracompress/compression/CompressionOptions.java @@ -64,8 +64,32 @@ public class CompressionOptions { */ private int workerCount = 1; - // NOTE(Moravec): Getters and setters for the private fields. + /** + * Flag whether the CLI app should be verbose while running. + */ + private boolean verbose; + + public boolean isPlaneIndexSet() { + return (planeIndex != null); + } + + public boolean isPlaneRangeSet() { + return (planeRange != null); + } + + public boolean hasCodebookCacheFolder() { + return codebookCacheFolder != null; + } + protected void setVerbose(boolean verbose) { + this.verbose = verbose; + } + + // NOTE(Moravec): Generated getters and setters for the private fields. + + public boolean isVerbose() { + return verbose; + } public String getInputFilePath() { return inputFilePath; @@ -135,14 +159,6 @@ public class CompressionOptions { return planeIndex; } - public boolean isPlaneIndexSet() { - return (planeIndex != null); - } - - public boolean isPlaneRangeSet() { - return (planeRange != null); - } - public void setPlaneIndex(Integer planeIndex) { this.planeIndex = planeIndex; } diff --git a/src/main/java/azgracompress/compression/CompressorDecompressorBase.java b/src/main/java/azgracompress/compression/CompressorDecompressorBase.java index 8ab8f5a..896222d 100644 --- a/src/main/java/azgracompress/compression/CompressorDecompressorBase.java +++ b/src/main/java/azgracompress/compression/CompressorDecompressorBase.java @@ -11,10 +11,10 @@ public abstract class CompressorDecompressorBase { public static final int LONG_BYTES = 8; public static final String EXTENSION = ".QCMP"; - protected final ParsedCliOptions options; + protected final CompressionOptions options; private final int codebookSize; - public CompressorDecompressorBase(ParsedCliOptions options) { + public CompressorDecompressorBase(CompressionOptions options) { this.options = options; this.codebookSize = (int) Math.pow(2, this.options.getBitsPerCodebookIndex()); } diff --git a/src/main/java/azgracompress/compression/ImageCompressor.java b/src/main/java/azgracompress/compression/ImageCompressor.java index 90db3d2..8267667 100644 --- a/src/main/java/azgracompress/compression/ImageCompressor.java +++ b/src/main/java/azgracompress/compression/ImageCompressor.java @@ -113,6 +113,22 @@ public class ImageCompressor extends CompressorDecompressorBase { } } + /** + * Get number of planes to be compressed. + * + * @return Number of planes for compression. + */ + private int getNumberOfPlanes() { + if (options.isPlaneIndexSet()) { + return 1; + } else if (options.isPlaneRangeSet()) { + final Interval<Integer> planeRange = options.getPlaneRange(); + return ((planeRange.getInclusiveTo() + 1) - planeRange.getFrom()); + } else { + return options.getImageDimension().getZ(); + } + } + /** * Create QCMPFile header for compressed file. * @@ -131,7 +147,7 @@ public class ImageCompressor extends CompressorDecompressorBase { header.setImageSizeX(options.getImageDimension().getX()); header.setImageSizeY(options.getImageDimension().getY()); - header.setImageSizeZ(options.getNumberOfPlanes()); + header.setImageSizeZ(getNumberOfPlanes()); header.setVectorDimension(options.getVectorDimension()); diff --git a/src/main/java/azgracompress/compression/SQImageCompressor.java b/src/main/java/azgracompress/compression/SQImageCompressor.java index 09efdea..a73f3a9 100644 --- a/src/main/java/azgracompress/compression/SQImageCompressor.java +++ b/src/main/java/azgracompress/compression/SQImageCompressor.java @@ -17,7 +17,7 @@ import java.io.IOException; public class SQImageCompressor extends CompressorDecompressorBase implements IImageCompressor { - public SQImageCompressor(ParsedCliOptions options) { + public SQImageCompressor(CompressionOptions options) { super(options); } diff --git a/src/main/java/azgracompress/compression/SQImageDecompressor.java b/src/main/java/azgracompress/compression/SQImageDecompressor.java index 1009794..7200807 100644 --- a/src/main/java/azgracompress/compression/SQImageDecompressor.java +++ b/src/main/java/azgracompress/compression/SQImageDecompressor.java @@ -15,7 +15,7 @@ import java.io.DataOutputStream; import java.io.IOException; public class SQImageDecompressor extends CompressorDecompressorBase implements IImageDecompressor { - public SQImageDecompressor(ParsedCliOptions options) { + public SQImageDecompressor(CompressionOptions options) { super(options); } diff --git a/src/main/java/azgracompress/compression/VQImageCompressor.java b/src/main/java/azgracompress/compression/VQImageCompressor.java index 3b6eb76..7365bf2 100644 --- a/src/main/java/azgracompress/compression/VQImageCompressor.java +++ b/src/main/java/azgracompress/compression/VQImageCompressor.java @@ -15,7 +15,7 @@ import java.io.IOException; public class VQImageCompressor extends CompressorDecompressorBase implements IImageCompressor { - public VQImageCompressor(ParsedCliOptions options) { + public VQImageCompressor(CompressionOptions options) { super(options); } diff --git a/src/main/java/azgracompress/compression/VQImageDecompressor.java b/src/main/java/azgracompress/compression/VQImageDecompressor.java index e86a980..1f2894b 100644 --- a/src/main/java/azgracompress/compression/VQImageDecompressor.java +++ b/src/main/java/azgracompress/compression/VQImageDecompressor.java @@ -19,7 +19,7 @@ import java.io.IOException; // TODO(Moravec): Handle huffman decoding. public class VQImageDecompressor extends CompressorDecompressorBase implements IImageDecompressor { - public VQImageDecompressor(ParsedCliOptions options) { + public VQImageDecompressor(CompressionOptions options) { super(options); } -- GitLab