From a1c3d2c9339d1f46db90478d207a27f475d76fd0 Mon Sep 17 00:00:00 2001 From: Armin Wolf Date: Fri, 23 Jun 2017 16:19:26 +0200 Subject: [PATCH] paar anpassungen u.a. RM Estimator --- pom.xml | 7 + .../LeastMedianOfSquaresEstimator.java | 3 +- .../Algorithms/RepeatedMedianEstimator.java | 85 ++++++---- .../java/Presenter/Import/DataImporter.java | 96 +++++------- src/main/java/Presenter/Presenter.java | 147 ++++++++++++------ src/main/java/View/ArrangementDialog.java | 13 +- src/main/java/View/MainFrame.java | 102 ++++++++++-- .../Presenter/Import/DataImporterTest.java | 6 +- 8 files changed, 303 insertions(+), 156 deletions(-) diff --git a/pom.xml b/pom.xml index 552615e..ea6a449 100644 --- a/pom.xml +++ b/pom.xml @@ -35,5 +35,12 @@ junit 4.12 + + + + com.opencsv + opencsv + 3.9 + \ No newline at end of file diff --git a/src/main/java/Presenter/Algorithms/LeastMedianOfSquaresEstimator.java b/src/main/java/Presenter/Algorithms/LeastMedianOfSquaresEstimator.java index 3b96ccd..7cc541f 100644 --- a/src/main/java/Presenter/Algorithms/LeastMedianOfSquaresEstimator.java +++ b/src/main/java/Presenter/Algorithms/LeastMedianOfSquaresEstimator.java @@ -139,8 +139,7 @@ public class LeastMedianOfSquaresEstimator extends Observable implements Algorit setChanged(); double m = (getSigmaMin().getX2() + getSigmaMin().getX1()) * -0.5; double b = (getSigmaMin().getY2() + getSigmaMin().getY1()) * 0.5; - Line result = new Line(m, b); - result.setId("lms"); + String[] result = {"lms", m+"", b+""}; notifyObservers(result); } } diff --git a/src/main/java/Presenter/Algorithms/RepeatedMedianEstimator.java b/src/main/java/Presenter/Algorithms/RepeatedMedianEstimator.java index f99f5be..764b106 100644 --- a/src/main/java/Presenter/Algorithms/RepeatedMedianEstimator.java +++ b/src/main/java/Presenter/Algorithms/RepeatedMedianEstimator.java @@ -9,6 +9,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; import java.util.Observable; +import java.util.Random; import java.util.concurrent.ThreadLocalRandom; /** @@ -77,6 +78,7 @@ public class RepeatedMedianEstimator extends Observable implements Algorithm { public void run() { while (linesInCenterSlab.size() != 1) { + n = linesInCenterSlab.size(); r = Math.ceil(Math.pow(n, beta)); ArrayList lines = sampleLines(linesInCenterSlab, r); @@ -92,16 +94,18 @@ public class RepeatedMedianEstimator extends Observable implements Algorithm { } //rank of the repeated median in C - k = (Math.floor(n * 0.5) - linesInLeftSlab.size()); + k = Math.max(1,Math.min(set.size(),(Math.ceil(n * 0.5) - linesInLeftSlab.size()))); //compute k_lo and k_hi computeSlabBorders(); + + if (medianIntersectionAbscissas.size() < kLow || medianIntersectionAbscissas.size() a, int start, int end, double i) { - if (start == end) { - return a.get(start); + public Double randomizedSelect(ArrayList a, double i) { + int start = 0; + int end = a.size()-1; + if (i >= end+1){ + return a.get(end); } - int q = randomizedPartition(a, start, end); - int tmpPivot = q - start + 1; - if (i == tmpPivot) { - return a.get(q); - } else if (i < tmpPivot) { - return randomizedSelect(a, start, q - 1, i); - } else { - return randomizedSelect(a, q + 1, end, i - tmpPivot); + while(true){ + if(start == end){ + return a.get(start); + } + int q = randomizedPartition(a, start, end); + int k = q-start+1; + + if(i == k){ + return a.get(q); + } + else{ + if(i a, int start, int end) { - int delta = Math.abs(end - start); - int i = start + ThreadLocalRandom.current().nextInt(0, delta); + int i = 0; + Random random = new Random(System.currentTimeMillis()); + + //alternative: ThreadLocalRandom.current() + if(start < end){ + i = start + random.nextInt(end-start); + }else{ + i = end + random.nextInt(start-end); + } + Collections.swap(a, end, i); return partition(a, start, end); } @@ -240,14 +269,14 @@ public class RepeatedMedianEstimator extends Observable implements Algorithm { public int partition(ArrayList a, int start, int end) { Double x = a.get(end); int i = start - 1; - for (int j = start; j < end; j++) { + for (int j = start; j <= end-1; j++) { if (a.get(j) <= x) { i++; Collections.swap(a, i, j); } } - Collections.swap(a, i + 1, end); - return i + 1; + Collections.swap(a, i+1, end); + return i+1; } /** @@ -284,8 +313,6 @@ public class RepeatedMedianEstimator extends Observable implements Algorithm { * */ public void contractIntervals() { - //if (linesInLeftSlab.size() < Math.floor(n / 2) && Math.floor(n / 2) <= (linesInLeftSlab.size() - // + linesInCenterSlab.size())) { for (int i = 0; i < linesInCenterSlab.size(); i++) { int left = countLeftSlab.get(i); diff --git a/src/main/java/Presenter/Import/DataImporter.java b/src/main/java/Presenter/Import/DataImporter.java index 23dec8b..6878eef 100644 --- a/src/main/java/Presenter/Import/DataImporter.java +++ b/src/main/java/Presenter/Import/DataImporter.java @@ -1,15 +1,18 @@ package Presenter.Import; import Model.Arrangement; -import java.io.BufferedReader; -import java.io.FileInputStream; +import Model.Line; +import com.opencsv.CSVReader; +import java.io.File; import java.io.FileNotFoundException; +import java.io.FileReader; import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.UnsupportedEncodingException; +import java.util.List; +import java.util.Observable; +import java.util.concurrent.ThreadLocalRandom; import javax.swing.JOptionPane; + /** * Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden. * @@ -17,72 +20,49 @@ import javax.swing.JOptionPane; * @Email: a_wolf28@uni-muenster.de * @Date: 21.06.2017. */ -public class DataImporter { +public class DataImporter extends Observable{ - private String path; - private InputStream inputStream; + private File file; + private CSVReader reader; private Arrangement model; - final String separator = " "; - public DataImporter(String path, Arrangement model) { - this.path = path; + public DataImporter(File file, Arrangement model) { this.model = model; + this.file = file; try { - inputStream = new FileInputStream(path); + + this.reader = new CSVReader(new FileReader(file)); } catch (FileNotFoundException e) { - JOptionPane.showMessageDialog(null, e.getMessage()); + e.printStackTrace(); } } - public void run() { - try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"))) { - String line; - while ((line = br.readLine()) != null) { - // process the line. + public void run(){ + + try { + List lines = reader.readAll(); + int counter = 0; + String[] result = {"import", lines.size()+"", ""}; + //System.out.println("+-------------------------------------------------------------------------------+"); + for(String[] nextLine : lines) { + counter++; + // nextLine[] is an array of values from the line + int id = Integer.parseInt(nextLine[0]); + Double x = Double.parseDouble(nextLine[1]); + Double y = Double.parseDouble(nextLine[2]); + Line line = new Line(x,y); + line.setId(id+""); + model.addLine(line); + //System.out.format("|\t\t\t\t\t %-11d \t|\t\t\t\t\t %-11f \t|\t\t\t\t\t %-11f \t\t\t\t\t|\n", id,x,y); + setChanged(); + result[2] = counter + ""; + notifyObservers(result); } - br.close(); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); + + //System.out.println("+-------------------------------------------------------------------------------+"); } catch (IOException e) { e.printStackTrace(); } - } - public void parseLine(String line) { - if (line.substring(0, 1) == "#") { - return; - } else if (isNumeric(line.substring(line.lastIndexOf(separator), line.length() - 1))) { - String id = line.substring(0, line.indexOf(separator)); - Double x = Double.parseDouble(line.substring(line.indexOf(separator), line.lastIndexOf(separator))); - Double y = Double.parseDouble(line.substring(line.lastIndexOf(separator), line.length()-1)); - System.out.println("ID: "+id+" x: "+x+"\t y: "+y); - } else { - return; - } - } - - public static boolean isNumeric(String str) { - try { - double d = Double.parseDouble(str); - } catch (NumberFormatException nfe) { - return false; - } - return true; - } - - public String getPath() { - return path; - } - - public void setPath(String path) { - path = path; - } - - public InputStream getInputStream() { - return inputStream; - } - - public void setInputStream(InputStream inputStream) { - this.inputStream = inputStream; } } diff --git a/src/main/java/Presenter/Presenter.java b/src/main/java/Presenter/Presenter.java index 5c5e0bb..c52d102 100644 --- a/src/main/java/Presenter/Presenter.java +++ b/src/main/java/Presenter/Presenter.java @@ -5,11 +5,14 @@ import Model.Line; import Model.Point; import Presenter.Algorithms.LeastMedianOfSquaresEstimator; import Presenter.Algorithms.RepeatedMedianEstimator; +import Presenter.Import.DataImporter; import View.MainFrame; +import java.io.File; import java.util.LinkedList; import java.util.List; import java.util.Observable; import java.util.Observer; +import javax.swing.JOptionPane; import javax.swing.SwingUtilities; @@ -33,68 +36,92 @@ public class Presenter implements Observer { public Presenter(Arrangement model, MainFrame view) { this.model = model; this.view = view; -// Double[] x = {1d, 2d, 3d, 4d, 10d, 12d, 18d}; -// Double[] y = {9d, 15d, 19d, 20d, 45d, 55d, 78d}; - Double[] x = {18d, 24d, 30d, 34d, 38d}; - Double[] y = {18d, 26d, 30d, 40d, 70d}; -// Double[] x = {1d,3d,4d,5d,8d}; -// Double[] y = {4d,2d,1d,0d,0d}; - view.logHeading("Duale Darstellung der Punkte als Geraden:"); - for (int j = 0; j < x.length; j++) { - Line p = new Line(x[j], y[j]); - p.setId(j+""); - view.log("f(x) = " + p.getM() + "x + " + p.getB()); - this.model.addLine(p); - } - - calcArrangementNodes(); - //print - List heading = new LinkedList<>(); - List> rows = new LinkedList<>(); - heading.add("X - Koordinate"); - heading.add("Y - Koordinate"); - for (Point p : model.getNodes()) { - LinkedList rowEntry = new LinkedList<>(); - rowEntry.add(p.getX().toString()); - rowEntry.add(p.getY().toString()); - rows.add(rowEntry); - } - view.logHeading("Schnittpunkte der Dualen Geraden:"); - view.createTable(heading, rows); +// Double[] x = {1d, 2d, 3d, 4d, 10d, 12d, 18d}; +// Double[] y = {9d, 15d, 19d, 20d, 45d, 55d, 78d}; +// Double[] x = {18d, 24d, 30d, 34d, 38d}; +// Double[] y = {18d, 26d, 30d, 40d, 70d}; +// Double[] x = {1d,3d,4d,5d,8d}; +// Double[] y = {4d,2d,1d,0d,0d}; +// view.logHeading("Duale Darstellung der Punkte als Geraden:"); +// for (int j = 0; j < x.length; j++) { +// Line p = new Line(x[j], y[j]); +// p.setId(j+""); +// view.log("f(x) = " + p.getM() + "x + " + p.getB()); +// this.model.addLine(p); +// } +// +// calcArrangementNodes(); +// //print +// List heading = new LinkedList<>(); +// List> rows = new LinkedList<>(); +// heading.add("X - Koordinate"); +// heading.add("Y - Koordinate"); +// for (Point p : model.getNodes()) { +// LinkedList rowEntry = new LinkedList<>(); +// rowEntry.add(p.getX().toString()); +// rowEntry.add(p.getY().toString()); +// rows.add(rowEntry); +// } +// view.logHeading("Schnittpunkte der Dualen Geraden:"); +// view.createTable(heading, rows); } @Override public void update(Observable o, Object arg) { - Line result = ((Line) arg); - if (result.getId() == "lms"){ + String[] result = ((String[]) arg); + if (result[0] == "lms"){ SwingUtilities.invokeLater(() -> { - getView().visualizeLMS(result.getM(), result.getB()); + getView().visualizeLMS(Double.parseDouble(result[1]), Double.parseDouble(result[2])); //getView().setLmsIsComplete(true); getView().logHeading("Least Median of Squares"); - getView().log("m: " + result.getM()); - getView().log("b: " + result.getB()); + getView().log("m: " + result[1]); + getView().log("b: " + result[2]); getView().logSuccess("Berechnung wurde Erfolgreich durchgeführt"); }); } - if (result.getId() == "rm"){ + if (result[0] == "rm"){ SwingUtilities.invokeLater(() -> { - getView().visualizeRM(result.getM(), result.getB()); + getView().visualizeRM(Double.parseDouble(result[1]), Double.parseDouble(result[2])); getView().logHeading("Repeated Median Estimator"); - getView().log("m: " + result.getM()); - getView().log("b: " + result.getB()); + getView().log("m: " + result[1]); + getView().log("b: " + result[2]); getView().logSuccess("Berechnung wurde Erfolgreich durchgeführt"); }); } + if (result[0] == "import"){ + Double max = Double.parseDouble(result[1]); + Double current = Double.parseDouble(result[2]); + Integer progress = (int) (100 * (current/max)); + //100% erreicht + if (progress == 100){ + SwingUtilities.invokeLater(() -> { + getView().showImportProgress(progress); + getView().enableFunctionality(); + getView().getProgressDialog().dispose(); + }); + setup(); + } else { + SwingUtilities.invokeLater(() -> { + getView().showImportProgress(progress); + }); + } + + } + + + } - public void startArrangementVisualization() { + public void visualizeDualLines() { view.createArrangement(); } - + /*************************************************************************************************************************** + * Ausführung der Algorithmen + ***************************************************************************************************************************/ public void calculateLMS(String[] input) { Double constant = Double.parseDouble(input[0]); Double error = Double.parseDouble(input[1]); @@ -112,6 +139,33 @@ public class Presenter implements Observer { rm.run(); } + /*************************************************************************************************************************** + * Hilfsmethoden + ***************************************************************************************************************************/ + public void setup(){ + getView().logHeading("Duale Darstellung der Punkte als Geraden:"); + + for (int j = 0; j < getModel().getLines().size(); j++) { + Line p = getModel().getLines().get(j); + p.setId(j+""); + getView().log("f(x) = " + p.getM() + "x + " + p.getB()); + } + calcArrangementNodes(); + + //Darstellung der Schnittpunkte in einer Tabelle + // List heading = new LinkedList<>(); + // List> rows = new LinkedList<>(); + // heading.add("X - Koordinate"); + // heading.add("Y - Koordinate"); + // for (Point p : getModel().getNodes()) { + // LinkedList rowEntry = new LinkedList<>(); + // rowEntry.add(p.getX().toString()); + // rowEntry.add(p.getY().toString()); + // rows.add(rowEntry); + // } + // getView().logHeading("Schnittpunkte der Dualen Geraden:"); + // getView().createTable(heading, rows); + } public Point calcIntersection(Line a, Line b) { Line p1 = a; @@ -142,23 +196,28 @@ public class Presenter implements Observer { } - public LinkedList> calcArrangementLines() { - LinkedList> lineCoordinates = new LinkedList<>(); + public LinkedList calcArrangementLines() { + LinkedList lineCoordinates = new LinkedList<>(); double x1 = -1000; double x2 = 1000; for (Line point : model.getLines()) { - LinkedList line = new LinkedList(); double y1 = (point.getM() * x1 + point.getB()); double y2 = (point.getM() * x2 + point.getB()); - line.add(new Point(x1, y1)); - line.add(new Point(x2, y2)); + Line line = new Line(x1, x2, y1, y2); + line.setId(point.getId()); lineCoordinates.add(line); } return lineCoordinates; } + public void startImport(File file){ + DataImporter importer = new DataImporter(file, getModel()); + importer.addObserver(this); + importer.run(); + } + /*************************************************************************************************************************** * Getter und Setter Methoden ***************************************************************************************************************************/ diff --git a/src/main/java/View/ArrangementDialog.java b/src/main/java/View/ArrangementDialog.java index c6907f1..e3ee7ce 100644 --- a/src/main/java/View/ArrangementDialog.java +++ b/src/main/java/View/ArrangementDialog.java @@ -1,5 +1,6 @@ package View; +import Model.Line; import Model.Point; import java.awt.BorderLayout; import java.awt.Color; @@ -30,7 +31,7 @@ import org.jfree.util.ShapeUtilities; */ public class ArrangementDialog extends JPanel { - private LinkedList> lines; + private LinkedList lines; private LinkedList points; private double max; private double min; @@ -52,7 +53,7 @@ public class ArrangementDialog extends JPanel { this.hslider = new JSlider(SwingConstants.HORIZONTAL, 10, 1000, 500); } - public void setPrameters(LinkedList> lines, LinkedList points) { + public void setPrameters(LinkedList lines, LinkedList points) { this.lines = lines; this.points = points; this.domainMin = Double.MAX_VALUE; @@ -64,10 +65,10 @@ public class ArrangementDialog extends JPanel { public void createArrangement() { XYSeriesCollection dataset = new XYSeriesCollection(); - for (LinkedList p : lines) { - XYSeries series = new XYSeries(p.get(0).getX() + p.get(0).getY()); - series.add(p.get(0).getX(), p.get(0).getY()); - series.add(p.get(1).getX(), p.get(1).getY()); + for (Line p : lines) { + XYSeries series = new XYSeries(p.getId()); + series.add(p.getX1(), p.getY1()); + series.add(p.getX2(), p.getY2()); dataset.addSeries(series); } diff --git a/src/main/java/View/MainFrame.java b/src/main/java/View/MainFrame.java index 36e6550..4f4a418 100644 --- a/src/main/java/View/MainFrame.java +++ b/src/main/java/View/MainFrame.java @@ -7,18 +7,26 @@ import View.Panels.MenuPanel; import View.Panels.OutputPanel; import View.Panels.RMPanel; import java.awt.BorderLayout; +import java.awt.Container; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; +import java.io.File; import java.util.List; +import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JDialog; +import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JPanel; +import javax.swing.JProgressBar; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTabbedPane; import javax.swing.SwingUtilities; +import javax.swing.border.Border; +import javax.swing.filechooser.FileFilter; +import javax.swing.filechooser.FileNameExtensionFilter; /** * Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden. @@ -34,10 +42,8 @@ public class MainFrame extends JFrame { private Boolean rmIsComplete = false; private Boolean tsIsComplete = false; - - //TODO refactoring private JButton arrangementButton; - private JButton button3; + private JButton importButton; private OutputPanel output; private MenuPanel menupanel; @@ -50,12 +56,14 @@ public class MainFrame extends JFrame { private PlotDialog plotLMS; private PlotDialog plotRM; private PlotDialog plotTS; + private JDialog progressDialog; + private Container progressContent; + private JProgressBar progressBar; private JSplitPane splitpane; private JScrollPane scrollPane; - private JTabbedPane tabbedPane; public MainFrame() { @@ -69,6 +77,7 @@ public class MainFrame extends JFrame { setCloseOperations(); setActionListeners(); + disableFunctionality(); this.setVisible(true); } @@ -113,13 +122,19 @@ public class MainFrame extends JFrame { }); } + public void showImportProgress(Integer progress){ + progressBar.setValue(progress); + progressBar.setStringPainted(true); + progressDialog.setVisible(true); + } + /******************************************************************************************************************* * init GUI ******************************************************************************************************************/ private void setTitles() { this.setTitle("MainFrame"); arrangementDialog.setTitle("Dual Representation - Dialog"); - button3.setText("Import"); + importButton.setText("Import"); arrangementButton.setText("Dualraum"); } @@ -131,11 +146,14 @@ public class MainFrame extends JFrame { private void addComponents() { pane.add(arrangementButton); - pane.add(button3); + pane.add(importButton); setupSplitPane(); setupTabbedPane(); + progressContent.add(progressBar, BorderLayout.NORTH); + progressBar.setBorder(BorderFactory.createTitledBorder("Import...")); + this.add(pane, BorderLayout.SOUTH); this.add(splitpane, BorderLayout.CENTER); this.add(menupanel, BorderLayout.NORTH); @@ -152,6 +170,7 @@ public class MainFrame extends JFrame { private void setCloseOperations() { this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); arrangementDialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); + progressDialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); } private void setDimensions() { @@ -161,9 +180,9 @@ public class MainFrame extends JFrame { rmPanel.setMinimumSize(new Dimension(400, 500)); arrangementDialog.setSize(new Dimension(800, 800)); output.setMinimumSize(new Dimension(400, 500)); + progressDialog.setSize(300, 100); } - private void setLayouts() { this.setLayout(new BorderLayout()); pane.setLayout(new FlowLayout()); @@ -178,6 +197,10 @@ public class MainFrame extends JFrame { //Dialogs arrangementDialog = new JDialog(); + progressDialog = new JDialog(); + progressDialog.setLocationRelativeTo(null); + progressContent = progressDialog.getContentPane(); + progressBar = new JProgressBar(); //Panes tabbedPane = new JTabbedPane(); @@ -186,12 +209,12 @@ public class MainFrame extends JFrame { //Buttons arrangementButton = new JButton(); - button3 = new JButton(); + importButton = new JButton(); } private void setActionListeners() { arrangementButton.addActionListener((ActionEvent e) -> { - Thread t = new Thread(() -> getPresenter().startArrangementVisualization()); + Thread t = new Thread(() -> getPresenter().visualizeDualLines()); t.start(); }); @@ -206,8 +229,42 @@ public class MainFrame extends JFrame { () -> this.getPresenter().calculateRM(rmPanel.getInput())); t.start(); }); + + importButton.addActionListener((ActionEvent e) -> { + SwingUtilities.invokeLater(() -> { + File file = null; + JFileChooser chooser = new JFileChooser(); + chooser.setPreferredSize(new Dimension(800,700)); + chooser.setFileFilter(new FileNameExtensionFilter("Comma-Separated Value", "csv", "text")); + + chooser.setMultiSelectionEnabled(false); + chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); + + + if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){ + System.out.println ("Datei "+chooser.getSelectedFile()+ + " ausgewählt."); + file = chooser.getSelectedFile(); + final File input = file; + Thread t = new Thread(() -> this.getPresenter().startImport(input)); + t.start(); + } + }); + }); + } + public void enableFunctionality(){ + this.getLmsPanel().getStartButton().setEnabled(true); + this.getRmPanel().getStartButton().setEnabled(true); + this.getArrangementButton().setEnabled(true); + } + + public void disableFunctionality(){ + this.getLmsPanel().getStartButton().setEnabled(false); + this.getRmPanel().getStartButton().setEnabled(false); + this.getArrangementButton().setEnabled(false); + } /******************************************************************************************************************* * log Methode @@ -268,12 +325,12 @@ public class MainFrame extends JFrame { this.arrangementButton = arrangementButton; } - public JButton getButton3() { - return button3; + public JButton getImportButton() { + return importButton; } - public void setButton3(JButton button3) { - this.button3 = button3; + public void setImportButton(JButton importButton) { + this.importButton = importButton; } public JPanel getPane() { @@ -300,11 +357,11 @@ public class MainFrame extends JFrame { this.output = output; } - public JPanel getMenupanel() { + public MenuPanel getMenupanel() { return menupanel; } - public JPanel getLmsPanel() { + public LMSPanel getLmsPanel() { return lmsPanel; } @@ -324,6 +381,13 @@ public class MainFrame extends JFrame { this.scrollPane = scrollPane; } + public RMPanel getRmPanel() { + return rmPanel; + } + + public void setRmPanel(RMPanel rmPanel) { + this.rmPanel = rmPanel; + } public PlotDialog getPlotLMS() { return plotLMS; @@ -340,4 +404,12 @@ public class MainFrame extends JFrame { public void setPresenter(Presenter presenter) { this.presenter = presenter; } + + public JDialog getProgressDialog() { + return progressDialog; + } + + public void setProgressDialog(JDialog progressDialog) { + this.progressDialog = progressDialog; + } } diff --git a/src/test/java/Presenter/Import/DataImporterTest.java b/src/test/java/Presenter/Import/DataImporterTest.java index 7b659dd..0265aac 100644 --- a/src/test/java/Presenter/Import/DataImporterTest.java +++ b/src/test/java/Presenter/Import/DataImporterTest.java @@ -14,14 +14,16 @@ import org.junit.Test; */ public class DataImporterTest { + private DataImporter importer; + @Before public void setUp() throws Exception { - DataImporter importer = new DataImporter("", null); + //importer = new DataImporter("C:\\Users\\Armin\\Desktop\\test.csv", null); } @Test public void run() throws Exception { - + //importer.run(); } } \ No newline at end of file