diff --git a/swing/src/net/sf/openrocket/utils/SimulationTableToCSVFileExporter.java b/swing/src/net/sf/openrocket/utils/SimulationTableToCSVFileExporter.java new file mode 100644 index 000000000..a5763f0d8 --- /dev/null +++ b/swing/src/net/sf/openrocket/utils/SimulationTableToCSVFileExporter.java @@ -0,0 +1,235 @@ +package net.sf.openrocket.utils; + +import java.awt.Container; +import java.awt.event.ActionEvent; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; + +import javax.swing.JFileChooser; +import javax.swing.JOptionPane; +import javax.swing.JTable; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.text.StringEscapeUtils; + +import net.sf.openrocket.aerodynamics.Warning; +import net.sf.openrocket.aerodynamics.WarningSet; +import net.sf.openrocket.document.OpenRocketDocument; +import net.sf.openrocket.gui.adaptors.Column; +import net.sf.openrocket.gui.adaptors.ColumnTableModel; +import net.sf.openrocket.gui.adaptors.ValueColumn; +import net.sf.openrocket.gui.components.CsvOptionPanel; +import net.sf.openrocket.gui.dialogs.optimization.GeneralOptimizationDialog; +import net.sf.openrocket.gui.util.FileHelper; +import net.sf.openrocket.gui.util.SwingPreferences; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.startup.Application; +import net.sf.openrocket.startup.Preferences; + +public class SimulationTableToCSVFileExporter { + private final OpenRocketDocument document; + private final JTable simulationTable; + private final ColumnTableModel simulationTableModel; + private final HashMap valueColumnToUnitString = new HashMap<>(); + + private static final Translator trans = Application.getTranslator(); + private static final String SPACE = "SPACE"; + private static final String TAB = "TAB"; + + public SimulationTableToCSVFileExporter (OpenRocketDocument document, + JTable simulationTable, + ColumnTableModel simulationTableModel + ) + { + this.document = document; + this.simulationTable = simulationTable; + this.simulationTableModel = simulationTableModel; + } + + /** + * Means by which the CSV export will clean up units on the values and + * describe them on the header fields instead. + */ + private void populateColumnNameToUnitsHashTable() { + if (null == simulationTableModel) { + return; + } + valueColumnToUnitString.clear(); // necessary if units changed during session + for (int i=0; i rowColumnElement = new ArrayList<>(); + for (int j=1; j 0! + for (int j=1; j 1) { // ignore rows that have null column fields 1 through 8... + continue; + } + + // create the column data comma separated string for the ith row... + csvSimResultString = StringUtils.join(rowColumnElement, fieldSep); + + // piece together all rows into one big ginourmous string, adding any warnings to the item + fullOutputResult += "\n" + csvSimResultString + fieldSep + warningsText; + } + + // dump the string to the file. + this.dumpDataToFile(fullOutputResult, csvFile); + return; + } + +}