package presenter.io; import com.opencsv.CSVWriter; import model.Line; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.LinkedList; import java.util.Observable; /** * Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden. * * @Author: Armin Wolf * @Email: a_wolf28@uni-muenster.de * @Date: 03.08.2017. */ public class DataExporter extends Observable { private LinkedList lines; private File file; /** * Konstruktor * * @param lines Liste der Geraden * @param file Datei in die, die Informationen exportiert werden sollen */ public DataExporter(LinkedList lines, File file) { this.file = file; this.lines = lines; } /** * Diese Methode schreibt die Geraden der Form: y = mx + b, in eine Komma-Separierte Datei (CSV). * Der Aufbau der Datei ist: id, m, b. Wenn der Export beendet wurde wird die Beobachter-Klasse informiert. * In diesem Fall ist dies die Presenter Klasse. */ public void export() { CSVWriter writer = null; try { writer = new CSVWriter(new FileWriter(file), ','); String[] entries = new String[3]; for (Line line : lines) { entries[0] = line.getId(); entries[1] = line.getM().toString(); Double tmp = (-1) * line.getB(); entries[2] = tmp.toString(); writer.writeNext(entries); } writer.close(); String[] ret = {"export", "Das aktuelle Modell wurde erfolgreich unter: " + file.getAbsolutePath() + " gespeichert."}; setChanged(); notifyObservers(ret); } catch (IOException e) { e.printStackTrace(); } } }