Skip to content
Snippets Groups Projects
Commit 6cd0bc09 authored by Leonard Kupper's avatar Leonard Kupper
Browse files

Add first logger usage.

parent 792532e4
No related branches found
No related tags found
1 merge request!13Feat/rasterizer update 21
......@@ -5,11 +5,14 @@ import de.tudresden.inf.mci.brailleplot.commandline.SettingType;
import de.tudresden.inf.mci.brailleplot.commandline.SettingsReader;
import de.tudresden.inf.mci.brailleplot.commandline.SettingsWriter;
import de.tudresden.inf.mci.brailleplot.configparser.ConfigurationParser;
import de.tudresden.inf.mci.brailleplot.configparser.JavaPropertiesConfigurationParser;
import de.tudresden.inf.mci.brailleplot.rendering.Image;
import de.tudresden.inf.mci.brailleplot.rendering.MasterRenderer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.util.Optional;
import java.util.concurrent.ConcurrentLinkedDeque;
......@@ -130,7 +133,14 @@ public final class App {
// Parse csv data
// ...
ConfigurationParser parser = new JavaPropertiesConfigurationParser(
getClass().getClassLoader().getResource("config/index_everest_d_v4.properties").getFile(),
getClass().getClassLoader().getResource("config/default.properties").getFile()
);
MasterRenderer renderer = new MasterRenderer(parser.getPrinter(), parser.getFormat("A4"));
renderer.rasterize(new Image(
new File(getClass().getClassLoader().getResource("examples/img/2_image_chart.png").toURI())
));
} catch (final Exception e) {
terminateWithException(e);
}
......
package de.tudresden.inf.mci.brailleplot.rendering;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.Objects;
......@@ -12,11 +15,14 @@ import java.util.Objects;
*/
public class FunctionalRenderingBase {
private final Logger mLogger = LoggerFactory.getLogger(this.getClass());
private HashMap<Class<? extends Renderable>, FunctionalRasterizer> mRasterizingAlgorithms;
private RasterCanvas mRaster;
public FunctionalRenderingBase() {
mRasterizingAlgorithms = new HashMap<>();
mLogger.info("FunctionalRenderingBase instance [{}] created", hashCode());
}
/**
......@@ -28,20 +34,25 @@ public class FunctionalRenderingBase {
* @exception IllegalArgumentException If no rasterizer is registered for the given renderable type.
*/
public void rasterize(final Renderable renderData) throws InsufficientRenderingAreaException {
mLogger.info("[{}] Starting new rasterizing task for {}", hashCode(), renderData.getClass().getSimpleName());
// First, check if a raster is set. No rasterizing without raster.
if (Objects.isNull(mRaster)) {
mLogger.error("[{}] No raster set.", hashCode());
throw new IllegalStateException("No raster was set. The method 'setRasterCanvas' must be called before invoking the 'rasterize' method.");
}
// Then, look at the type of the renderData
Class<? extends Renderable> diagramClass = renderData.getClass();
Class<? extends Renderable> renderableClass = renderData.getClass();
mLogger.info("[{}] Selecting FunctionalRasterizer for {}", hashCode(), renderableClass.getSimpleName());
// Is a rasterizer for the given renderData type available?
if (mRasterizingAlgorithms.containsKey(diagramClass)) {
if (mRasterizingAlgorithms.containsKey(renderableClass)) {
// dispatch to concrete rasterizer implementation
FunctionalRasterizer selectedRasterizer = mRasterizingAlgorithms.get(diagramClass);
FunctionalRasterizer selectedRasterizer = mRasterizingAlgorithms.get(renderableClass);
selectedRasterizer.rasterize(renderData, mRaster);
} else {
mLogger.error("[{}] No rasterizer found for type.", hashCode());
throw new IllegalArgumentException("No rasterizer registered for renderData class: '"
+ diagramClass.getCanonicalName() + "'");
+ renderableClass.getCanonicalName() + "'");
}
}
......@@ -53,6 +64,8 @@ public class FunctionalRenderingBase {
*/
public void registerRasterizer(final FunctionalRasterizer<? extends Renderable> rasterizer) {
mRasterizingAlgorithms.put(rasterizer.getSupportedDiagramClass(), rasterizer);
mLogger.info("[{}] FunctionalRasterizer has been registered for renderable type {}", hashCode(),
rasterizer.getSupportedDiagramClass().getSimpleName());
}
/**
......@@ -63,6 +76,7 @@ public class FunctionalRenderingBase {
*/
public void setRasterCanvas(final RasterCanvas raster) {
mRaster = Objects.requireNonNull(raster);
mLogger.info("[{}] RasterCanvas has been set to instance [{}]", hashCode(), raster.hashCode());
}
/**
......
package de.tudresden.inf.mci.brailleplot.rendering;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.tudresden.inf.mci.brailleplot.configparser.Format;
import de.tudresden.inf.mci.brailleplot.configparser.Printer;
import org.slf4j.Marker;
import org.slf4j.MarkerFactory;
import java.util.Objects;
......@@ -14,11 +19,16 @@ import java.util.Objects;
*/
public final class MasterRenderer {
private final Logger mLogger = LoggerFactory.getLogger(this.getClass());
Printer mPrinter;
Format mFormat;
FunctionalRenderingBase mRenderingBase;
public MasterRenderer(final Printer printer, final Format format) {
mLogger.info("Creating MasterRenderer with default context");
// if no rendering base is given, create own rendering base with default set of algorithms
FunctionalRenderingBase renderingBase = new FunctionalRenderingBase();
......@@ -36,18 +46,23 @@ public final class MasterRenderer {
}
public MasterRenderer(final Printer printer, final Format format, final FunctionalRenderingBase renderingBase) {
mLogger.info("Creating MasterRenderer with custom context");
setRenderingContext(printer, format, renderingBase);
}
public RasterCanvas rasterize(final Renderable data) throws InsufficientRenderingAreaException {
mLogger.info("Starting a new {} rasterizing on RenderingBase {}",
data.getClass().getSimpleName(), mRenderingBase.hashCode());
RasterCanvas canvas = createCompatibleRasterCanvas();
mRenderingBase.setRasterCanvas(canvas);
mRenderingBase.rasterize(data);
mLogger.info("Rasterizing of {} on RenderingBase {} has finished",
data.getClass().getSimpleName(), mRenderingBase.hashCode());
return canvas;
}
private RasterCanvas createCompatibleRasterCanvas() throws InsufficientRenderingAreaException {
mLogger.info("Creating compatible RasterCanvas for current rendering context.");
return new SixDotBrailleRasterCanvas(mPrinter, mFormat);
/*
......@@ -71,6 +86,7 @@ public final class MasterRenderer {
public void setPrinter(final Printer printer) {
mPrinter = Objects.requireNonNull(printer);
mLogger.info("Rendering context: Printer was set to {}", mPrinter.getProperty("name")); // TODO: Printer.toString() should append printer name.
}
public Printer getPrinter() {
return mPrinter;
......@@ -78,6 +94,7 @@ public final class MasterRenderer {
public void setFormat(final Format format) {
mFormat = Objects.requireNonNull(format);
mLogger.info("Rendering context: Format was set to {}", mFormat);
}
public Format getFormat() {
return mFormat;
......@@ -85,6 +102,7 @@ public final class MasterRenderer {
public void setRenderingBase(final FunctionalRenderingBase renderingBase) {
mRenderingBase = Objects.requireNonNull(renderingBase);
mLogger.info("Rendering context: Set RenderingBase to instance [{}]", mRenderingBase.hashCode());
}
public FunctionalRenderingBase getRenderingBase() {
return mRenderingBase;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment