algorithms-for-computing-li.../LinearRegressionTool/src/main/java/presenter/io/EvalResultLatexExport.java

106 lines
3.3 KiB
Java

package presenter.io;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
/**
* Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden.
*
* @Author: Armin Wolf
* @Email: a_wolf28@uni-muenster.de
* @Date: 08.09.2017.
*/
public class EvalResultLatexExport {
private DefaultTableModel model;
private File file;
/**
* Konstruktor
*
* @param model TableModel aus dem exportiert werden soll
* @param file Datei in die exportiert werden soll
*/
public EvalResultLatexExport(DefaultTableModel model, File file) {
this.model = model;
this.file = file;
}
/**
* Quelle: <url>https://en.wikibooks.org/wiki/LaTeX/Tables</url>
* \begin{tabular}{l*{3}{c}}
* Team & P & W & D & L & F & A & Pts \\\hline
* Manchester United & 6 & 4 & 0 & 2 & 10 & 5 & 12 \\
* Celtic & 6 & 3 & 0 & 3 & 8 & 9 & 9 \\
* Benfica & 6 & 2 & 1 & 3 & 7 & 8 & 7 \\
* FC Copenhagen & 6 & 2 & 1 & 3 & 5 & 8 & 7 \\
* \end{tabular}
*
* @return
*/
private String createOutputData() {
String split = "&";
StringBuilder doc = new StringBuilder();
doc.append("\\begin{tabular}{|l|r|r|r|}" + "\\hline\r\n");
for (int i = 0; i < model.getColumnCount(); i++) {
if (model.getValueAt(0, i).toString() != "" || model.getRowCount() > 5)
doc.append("\\textsc{" + model.getColumnName(i) + "}" + split);
}
doc.deleteCharAt(doc.lastIndexOf(split));
doc.append("\\\\\\hline" + "\r\n");
for (int i = 0; i < model.getRowCount() - 1; i++) {
for (int j = 0; j < model.getColumnCount(); j++) {
if (model.getValueAt(i, j).toString() != "") {
if (j == 0) {
doc.append("\\textbf{" + model.getValueAt(i, j).toString() + "}" + split);
} else {
Double val = Double.parseDouble((String) model.getValueAt(i, j));
doc.append(String.format("%.3f", val) + split);
}
}
}
if (model.getValueAt(i, 0) != "") {
doc.deleteCharAt(doc.lastIndexOf(split));
}
doc.append("\\\\\\hline" + "\r\n");
}
doc.append("\\end{tabular}");
return doc.toString();
}
/**
* das schreiben der Informationen über den Stream in die Datei
*/
public void writeFile() {
FileWriter fileWriter = null;
BufferedWriter bufferedWriter = null;
try {
fileWriter = new FileWriter(file);
bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.write(createOutputData());
SwingUtilities.invokeLater(() -> {
JOptionPane.showMessageDialog(null, "Export war Erfolgreich!");
});
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bufferedWriter.close();
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}