Skip to content
Snippets Groups Projects
Commit d82fde8a authored by Vojtěch Moravec's avatar Vojtěch Moravec
Browse files

Add helpers for checks and move verbose flag to CompressionOptions.

parent bd012100
No related branches found
No related tags found
No related merge requests found
...@@ -19,11 +19,6 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable { ...@@ -19,11 +19,6 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable {
*/ */
private ProgramMethod method; private ProgramMethod method;
/**
* Flag whether the CLI app should be verbose while running.
*/
private boolean verbose;
/** /**
* Flag whether parse error occurred. * Flag whether parse error occurred.
*/ */
...@@ -107,7 +102,7 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable { ...@@ -107,7 +102,7 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable {
final String[] fileInfo = cmd.getArgs(); final String[] fileInfo = cmd.getArgs();
parseInputFilePart(errorBuilder, fileInfo); parseInputFilePart(errorBuilder, fileInfo);
verbose = cmd.hasOption(CliConstants.VERBOSE_LONG); setVerbose(cmd.hasOption(CliConstants.VERBOSE_LONG));
if (cmd.hasOption(CliConstants.WORKER_COUNT_LONG)) { if (cmd.hasOption(CliConstants.WORKER_COUNT_LONG)) {
final String wcString = cmd.getOptionValue(CliConstants.WORKER_COUNT_LONG); final String wcString = cmd.getOptionValue(CliConstants.WORKER_COUNT_LONG);
...@@ -373,10 +368,6 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable { ...@@ -373,10 +368,6 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable {
return method; return method;
} }
public boolean isVerbose() {
return verbose;
}
public boolean parseError() { public boolean parseError() {
return parseErrorOccurred; return parseErrorOccurred;
} }
...@@ -456,28 +447,12 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable { ...@@ -456,28 +447,12 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable {
sb.append("ToPlaneIndex: ").append(getPlaneRange().getInclusiveTo()).append('\n'); 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'); sb.append("ThreadWorkerCount: ").append(getWorkerCount()).append('\n');
return sb.toString(); 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 @Override
public Object clone() throws CloneNotSupportedException { public Object clone() throws CloneNotSupportedException {
return super.clone(); return super.clone();
......
...@@ -64,8 +64,32 @@ public class CompressionOptions { ...@@ -64,8 +64,32 @@ public class CompressionOptions {
*/ */
private int workerCount = 1; 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() { public String getInputFilePath() {
return inputFilePath; return inputFilePath;
...@@ -135,14 +159,6 @@ public class CompressionOptions { ...@@ -135,14 +159,6 @@ public class CompressionOptions {
return planeIndex; return planeIndex;
} }
public boolean isPlaneIndexSet() {
return (planeIndex != null);
}
public boolean isPlaneRangeSet() {
return (planeRange != null);
}
public void setPlaneIndex(Integer planeIndex) { public void setPlaneIndex(Integer planeIndex) {
this.planeIndex = planeIndex; this.planeIndex = planeIndex;
} }
......
...@@ -11,10 +11,10 @@ public abstract class CompressorDecompressorBase { ...@@ -11,10 +11,10 @@ public abstract class CompressorDecompressorBase {
public static final int LONG_BYTES = 8; public static final int LONG_BYTES = 8;
public static final String EXTENSION = ".QCMP"; public static final String EXTENSION = ".QCMP";
protected final ParsedCliOptions options; protected final CompressionOptions options;
private final int codebookSize; private final int codebookSize;
public CompressorDecompressorBase(ParsedCliOptions options) { public CompressorDecompressorBase(CompressionOptions options) {
this.options = options; this.options = options;
this.codebookSize = (int) Math.pow(2, this.options.getBitsPerCodebookIndex()); this.codebookSize = (int) Math.pow(2, this.options.getBitsPerCodebookIndex());
} }
......
...@@ -113,6 +113,22 @@ public class ImageCompressor extends CompressorDecompressorBase { ...@@ -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. * Create QCMPFile header for compressed file.
* *
...@@ -131,7 +147,7 @@ public class ImageCompressor extends CompressorDecompressorBase { ...@@ -131,7 +147,7 @@ public class ImageCompressor extends CompressorDecompressorBase {
header.setImageSizeX(options.getImageDimension().getX()); header.setImageSizeX(options.getImageDimension().getX());
header.setImageSizeY(options.getImageDimension().getY()); header.setImageSizeY(options.getImageDimension().getY());
header.setImageSizeZ(options.getNumberOfPlanes()); header.setImageSizeZ(getNumberOfPlanes());
header.setVectorDimension(options.getVectorDimension()); header.setVectorDimension(options.getVectorDimension());
......
...@@ -17,7 +17,7 @@ import java.io.IOException; ...@@ -17,7 +17,7 @@ import java.io.IOException;
public class SQImageCompressor extends CompressorDecompressorBase implements IImageCompressor { public class SQImageCompressor extends CompressorDecompressorBase implements IImageCompressor {
public SQImageCompressor(ParsedCliOptions options) { public SQImageCompressor(CompressionOptions options) {
super(options); super(options);
} }
......
...@@ -15,7 +15,7 @@ import java.io.DataOutputStream; ...@@ -15,7 +15,7 @@ import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
public class SQImageDecompressor extends CompressorDecompressorBase implements IImageDecompressor { public class SQImageDecompressor extends CompressorDecompressorBase implements IImageDecompressor {
public SQImageDecompressor(ParsedCliOptions options) { public SQImageDecompressor(CompressionOptions options) {
super(options); super(options);
} }
......
...@@ -15,7 +15,7 @@ import java.io.IOException; ...@@ -15,7 +15,7 @@ import java.io.IOException;
public class VQImageCompressor extends CompressorDecompressorBase implements IImageCompressor { public class VQImageCompressor extends CompressorDecompressorBase implements IImageCompressor {
public VQImageCompressor(ParsedCliOptions options) { public VQImageCompressor(CompressionOptions options) {
super(options); super(options);
} }
......
...@@ -19,7 +19,7 @@ import java.io.IOException; ...@@ -19,7 +19,7 @@ import java.io.IOException;
// TODO(Moravec): Handle huffman decoding. // TODO(Moravec): Handle huffman decoding.
public class VQImageDecompressor extends CompressorDecompressorBase implements IImageDecompressor { public class VQImageDecompressor extends CompressorDecompressorBase implements IImageDecompressor {
public VQImageDecompressor(ParsedCliOptions options) { public VQImageDecompressor(CompressionOptions options) {
super(options); super(options);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment