From d7822de16cab25ff887a68bbce6eecededa6590f Mon Sep 17 00:00:00 2001
From: Leonard Kupper <leonard.kupper@mailbox.tu-dresden.de>
Date: Sat, 14 Sep 2019 13:47:58 +0200
Subject: [PATCH] Add diagram class for title and axis captions.

---
 .../de/tudresden/inf/mci/brailleplot/App.java |  3 +
 .../mci/brailleplot/diagrams/BarChart.java    |  3 +-
 .../inf/mci/brailleplot/diagrams/Diagram.java | 95 +++++++++++++++++++
 3 files changed, 99 insertions(+), 2 deletions(-)
 create mode 100644 src/main/java/de/tudresden/inf/mci/brailleplot/diagrams/Diagram.java

diff --git a/src/main/java/de/tudresden/inf/mci/brailleplot/App.java b/src/main/java/de/tudresden/inf/mci/brailleplot/App.java
index 5f071a80..9074a22d 100644
--- a/src/main/java/de/tudresden/inf/mci/brailleplot/App.java
+++ b/src/main/java/de/tudresden/inf/mci/brailleplot/App.java
@@ -189,6 +189,9 @@ public final class App {
             CategoricalPointListContainer<PointList> container = csvParser.parse(CsvType.X_ALIGNED_CATEGORIES, CsvOrientation.VERTICAL);
             mLogger.debug("Internal data representation:\n {}", container.toString());
             CategoricalBarChart barChart = new CategoricalBarChart(container);
+            barChart.setTitle("Beispieldiagramm");
+            barChart.setXAxisName("Gewicht in kg");
+            barChart.setYAxisName("Länge in m");
 
             // Render diagram
             MasterRenderer renderer = new MasterRenderer(indexV4Printer, a4Format);
diff --git a/src/main/java/de/tudresden/inf/mci/brailleplot/diagrams/BarChart.java b/src/main/java/de/tudresden/inf/mci/brailleplot/diagrams/BarChart.java
index ee769a1b..3d138a9a 100644
--- a/src/main/java/de/tudresden/inf/mci/brailleplot/diagrams/BarChart.java
+++ b/src/main/java/de/tudresden/inf/mci/brailleplot/diagrams/BarChart.java
@@ -4,7 +4,6 @@ import de.tudresden.inf.mci.brailleplot.datacontainers.Named;
 import de.tudresden.inf.mci.brailleplot.datacontainers.PointContainer;
 import de.tudresden.inf.mci.brailleplot.datacontainers.PointList;
 import de.tudresden.inf.mci.brailleplot.datacontainers.PointListContainer;
-import de.tudresden.inf.mci.brailleplot.rendering.Renderable;
 
 import java.util.List;
 import java.util.Objects;
@@ -15,7 +14,7 @@ import java.util.stream.Collectors;
  * @author Richard Schmidt, Georg Graßnick
  * @version 2019.09.02
  */
-public class BarChart implements Renderable {
+public class BarChart extends Diagram {
     private PointListContainer<PointList> mData;
 
     public BarChart(final PointListContainer<PointList> data) {
diff --git a/src/main/java/de/tudresden/inf/mci/brailleplot/diagrams/Diagram.java b/src/main/java/de/tudresden/inf/mci/brailleplot/diagrams/Diagram.java
new file mode 100644
index 00000000..6d62f713
--- /dev/null
+++ b/src/main/java/de/tudresden/inf/mci/brailleplot/diagrams/Diagram.java
@@ -0,0 +1,95 @@
+package de.tudresden.inf.mci.brailleplot.diagrams;
+
+import de.tudresden.inf.mci.brailleplot.rendering.Renderable;
+
+import java.util.Objects;
+
+/**
+ * General representation of both scatter and line plots with basic data functions. Classes LinePlot and ScatterPlot extend this class.
+ * Implements Renderable.
+ *
+ * @author Richard Schmidt, Leonard Kupper
+ * @version 2019-09-12
+ */
+public class Diagram implements Renderable {
+
+    private String mTitle;
+    private String mXAxisName;
+    private String mYAxisName;
+
+    public final String getTitle() {
+        return mTitle;
+    }
+
+    public final void setTitle(final String title) {
+        this.mTitle = Objects.requireNonNull(title);
+    }
+
+    public final String getXAxisName() {
+        return mXAxisName;
+    }
+
+    public final void setXAxisName(final String xAxisName) {
+        this.mXAxisName = Objects.requireNonNull(xAxisName);
+    }
+
+    public final String getYAxisName() {
+        return mYAxisName;
+    }
+
+    public final void setYAxisName(final String yAxisName) {
+        this.mYAxisName = Objects.requireNonNull(yAxisName);
+    }
+
+//    public PointListList mP;
+//
+//    /**
+//     * Getter for the minimum x-value.
+//     * @return double minimum x-value
+//     */
+//    public double getMinX() {
+//        return mP.getMinX();
+//    }
+//
+//    /**
+//     * Getter for the maximum x-value.
+//     * @return double maximum x-value
+//     */
+//    public double getMaxX() {
+//        return mP.getMaxX();
+//    }
+//
+//    /**
+//     * Getter for the minimum y-value.
+//     * @return double minimum y-value
+//     */
+//    public double getMinY() {
+//        return mP.getMinY();
+//    }
+//
+//    /**
+//     * Getter for the maximum y-value.
+//     * @return double maximum y-value
+//     */
+//    public double getMaxY() {
+//        return mP.getMaxY();
+//    }
+//
+//    /**
+//     * Getter for a data set by index.
+//     * @param index int
+//     * @return PointList with the corresponding data set
+//     */
+//    public PointListList.PointList getDataSet(final int index) {
+//        return (PointListList.PointList) mP.get(index);
+//    }
+//
+//    /**
+//     * Getter for the name of a data set by index.
+//     * @param index int
+//     * @return name of the data set as a string
+//     */
+//    public String getDataSetName(final int index) {
+//        return mP.get(index).getName();
+//    }
+}
-- 
GitLab