From fd57e44b4e0f47d0cda5bf81a1a8c76bd8b727de Mon Sep 17 00:00:00 2001 From: Vojtech Moravec <vojtech.moravec.st@vsb.cz> Date: Sat, 15 Feb 2020 09:10:59 +0100 Subject: [PATCH] Change ConcretePlaneLoader to PlaneLoaderFactory. --- .../ScalarQuantizationBenchmark.java | 7 +-- .../VectorQuantizationBenchmark.java | 7 +-- .../compression/SQImageCompressor.java | 11 ++--- .../compression/VQImageCompressor.java | 10 ++--- .../azgracompress/io/ConcretePlaneLoader.java | 45 ------------------- .../azgracompress/io/PlaneLoaderFactory.java | 21 +++++++++ 6 files changed, 40 insertions(+), 61 deletions(-) delete mode 100644 src/main/java/azgracompress/io/ConcretePlaneLoader.java create mode 100644 src/main/java/azgracompress/io/PlaneLoaderFactory.java diff --git a/src/main/java/azgracompress/benchmark/ScalarQuantizationBenchmark.java b/src/main/java/azgracompress/benchmark/ScalarQuantizationBenchmark.java index 13f3b7a..70f7ecb 100644 --- a/src/main/java/azgracompress/benchmark/ScalarQuantizationBenchmark.java +++ b/src/main/java/azgracompress/benchmark/ScalarQuantizationBenchmark.java @@ -4,7 +4,8 @@ import azgracompress.U16; import azgracompress.cli.ParsedCliOptions; import azgracompress.de.DeException; import azgracompress.de.shade.ILShadeSolver; -import azgracompress.io.ConcretePlaneLoader; +import azgracompress.io.IPlaneLoader; +import azgracompress.io.PlaneLoaderFactory; import azgracompress.quantization.QTrainIteration; import azgracompress.quantization.QuantizationValueCache; import azgracompress.quantization.scalar.LloydMaxU16ScalarQuantization; @@ -25,9 +26,9 @@ public class ScalarQuantizationBenchmark extends BenchmarkBase { @Override public void startBenchmark() { - ConcretePlaneLoader planeLoader = null; + IPlaneLoader planeLoader; try { - planeLoader = new ConcretePlaneLoader(options.getInputFileInfo()); + planeLoader = PlaneLoaderFactory.getPlaneLoaderForInputFile(options.getInputFileInfo()); } catch (Exception e) { e.printStackTrace(); System.err.println("Unable to create SCIFIO reader."); diff --git a/src/main/java/azgracompress/benchmark/VectorQuantizationBenchmark.java b/src/main/java/azgracompress/benchmark/VectorQuantizationBenchmark.java index ebae87d..93c6308 100644 --- a/src/main/java/azgracompress/benchmark/VectorQuantizationBenchmark.java +++ b/src/main/java/azgracompress/benchmark/VectorQuantizationBenchmark.java @@ -2,7 +2,8 @@ package azgracompress.benchmark; import azgracompress.cli.ParsedCliOptions; import azgracompress.data.*; -import azgracompress.io.ConcretePlaneLoader; +import azgracompress.io.IPlaneLoader; +import azgracompress.io.PlaneLoaderFactory; import azgracompress.quantization.QuantizationValueCache; import azgracompress.quantization.vector.CodebookEntry; import azgracompress.quantization.vector.LBGResult; @@ -48,9 +49,9 @@ public class VectorQuantizationBenchmark extends BenchmarkBase { if (planes.length < 1) { return; } - ConcretePlaneLoader planeLoader = null; + IPlaneLoader planeLoader; try { - planeLoader = new ConcretePlaneLoader(options.getInputFileInfo()); + planeLoader = PlaneLoaderFactory.getPlaneLoaderForInputFile(options.getInputFileInfo()); } catch (Exception e) { e.printStackTrace(); System.err.println("Unable to create SCIFIO reader."); diff --git a/src/main/java/azgracompress/compression/SQImageCompressor.java b/src/main/java/azgracompress/compression/SQImageCompressor.java index 8dadac0..a45a73b 100644 --- a/src/main/java/azgracompress/compression/SQImageCompressor.java +++ b/src/main/java/azgracompress/compression/SQImageCompressor.java @@ -5,7 +5,8 @@ import azgracompress.cli.InputFileInfo; import azgracompress.cli.ParsedCliOptions; import azgracompress.compression.exception.ImageCompressionException; import azgracompress.data.ImageU16; -import azgracompress.io.ConcretePlaneLoader; +import azgracompress.io.IPlaneLoader; +import azgracompress.io.PlaneLoaderFactory; import azgracompress.io.OutBitStream; import azgracompress.quantization.QuantizationValueCache; import azgracompress.quantization.scalar.LloydMaxU16ScalarQuantization; @@ -85,9 +86,9 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm Stopwatch stopwatch = new Stopwatch(); final boolean hasGeneralQuantizer = options.hasCodebookCacheFolder() || options.hasReferencePlaneIndex(); - final ConcretePlaneLoader planeLoader; + final IPlaneLoader planeLoader; try { - planeLoader = new ConcretePlaneLoader(inputFileInfo); + planeLoader = PlaneLoaderFactory.getPlaneLoaderForInputFile(inputFileInfo); } catch (Exception e) { throw new ImageCompressionException("Unable to create SCIFIO reader. " + e.getMessage()); } @@ -155,9 +156,9 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm private int[] loadConfiguredPlanesData() throws ImageCompressionException { final InputFileInfo inputFileInfo = options.getInputFileInfo(); - final ConcretePlaneLoader planeLoader; + final IPlaneLoader planeLoader; try { - planeLoader = new ConcretePlaneLoader(inputFileInfo); + planeLoader = PlaneLoaderFactory.getPlaneLoaderForInputFile(inputFileInfo); } catch (Exception e) { throw new ImageCompressionException("Unable to create SCIFIO reader. " + e.getMessage()); } diff --git a/src/main/java/azgracompress/compression/VQImageCompressor.java b/src/main/java/azgracompress/compression/VQImageCompressor.java index b4c85a4..2e69dd6 100644 --- a/src/main/java/azgracompress/compression/VQImageCompressor.java +++ b/src/main/java/azgracompress/compression/VQImageCompressor.java @@ -5,7 +5,7 @@ import azgracompress.cli.ParsedCliOptions; import azgracompress.compression.exception.ImageCompressionException; import azgracompress.data.Chunk2D; import azgracompress.data.ImageU16; -import azgracompress.io.ConcretePlaneLoader; +import azgracompress.io.PlaneLoaderFactory; import azgracompress.io.IPlaneLoader; import azgracompress.io.OutBitStream; import azgracompress.quantization.QuantizationValueCache; @@ -91,9 +91,9 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm final InputFileInfo inputFileInfo = options.getInputFileInfo(); Stopwatch stopwatch = new Stopwatch(); final boolean hasGeneralQuantizer = options.hasCodebookCacheFolder() || options.hasReferencePlaneIndex(); - final ConcretePlaneLoader planeLoader; + final IPlaneLoader planeLoader; try { - planeLoader = new ConcretePlaneLoader(inputFileInfo); + planeLoader = PlaneLoaderFactory.getPlaneLoaderForInputFile(inputFileInfo); } catch (Exception e) { throw new ImageCompressionException("Unable to create SCIFIO reader. " + e.getMessage()); } @@ -177,9 +177,9 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm private int[][] loadConfiguredPlanesData() throws ImageCompressionException { final int vectorSize = options.getVectorDimension().getX() * options.getVectorDimension().getY(); final InputFileInfo inputFileInfo = options.getInputFileInfo(); - final ConcretePlaneLoader planeLoader; + final IPlaneLoader planeLoader; try { - planeLoader = new ConcretePlaneLoader(inputFileInfo); + planeLoader = PlaneLoaderFactory.getPlaneLoaderForInputFile(inputFileInfo); } catch (Exception e) { throw new ImageCompressionException("Unable to create SCIFIO reader. " + e.getMessage()); } diff --git a/src/main/java/azgracompress/io/ConcretePlaneLoader.java b/src/main/java/azgracompress/io/ConcretePlaneLoader.java deleted file mode 100644 index 12d7346..0000000 --- a/src/main/java/azgracompress/io/ConcretePlaneLoader.java +++ /dev/null @@ -1,45 +0,0 @@ -package azgracompress.io; - -import azgracompress.cli.InputFileInfo; -import azgracompress.data.ImageU16; - -import java.io.IOException; - -public class ConcretePlaneLoader implements IPlaneLoader { - - private final IPlaneLoader loader; - - private final InputFileInfo inputFileInfo; - - /** - * Create plane loader. - * - * @param inputFileInfo Information about input file. - * @throws Exception When fails to create SCIFIO reader. - */ - public ConcretePlaneLoader(final InputFileInfo inputFileInfo) throws Exception { - this.inputFileInfo = inputFileInfo; - - if (inputFileInfo.isRAW()) { - loader = new RawDataLoader(inputFileInfo); - } else { - loader = new SCIFIOLoader(inputFileInfo); - } - } - - - @Override - public ImageU16 loadPlaneU16(int plane) throws IOException { - return loader.loadPlaneU16(plane); - } - - @Override - public int[] loadPlanesU16Data(int[] planes) throws IOException { - return loader.loadPlanesU16Data(planes); - } - - @Override - public int[] loadAllPlanesU16Data() throws IOException { - return loader.loadAllPlanesU16Data(); - } -} diff --git a/src/main/java/azgracompress/io/PlaneLoaderFactory.java b/src/main/java/azgracompress/io/PlaneLoaderFactory.java new file mode 100644 index 0000000..bb9b77b --- /dev/null +++ b/src/main/java/azgracompress/io/PlaneLoaderFactory.java @@ -0,0 +1,21 @@ +package azgracompress.io; + +import azgracompress.cli.InputFileInfo; + +public final class PlaneLoaderFactory { + + /** + * Create concrete plane loader for the input file. + * + * @param inputFileInfo Input file information. + * @return Concrete plane loader. + * @throws Exception When fails to create plane loader. + */ + public static IPlaneLoader getPlaneLoaderForInputFile(final InputFileInfo inputFileInfo) throws Exception { + if (inputFileInfo.isRAW()) { + return new RawDataLoader(inputFileInfo); + } else { + return new SCIFIOLoader(inputFileInfo); + } + } +} -- GitLab