mirror of
https://gitlab.com/kauron/jstudy
synced 2024-12-23 00:43:32 +01:00
Import from CSV (comma separated without commas in the values)
This commit is contained in:
parent
9c80a1d722
commit
8f4e8f66e1
3 changed files with 27 additions and 4 deletions
|
@ -61,7 +61,7 @@ public class Controller implements Initializable {
|
||||||
chooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("JStudy file", "*.jsdb"));
|
chooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("JStudy file", "*.jsdb"));
|
||||||
File file = chooser.showOpenDialog(root.getScene().getWindow());
|
File file = chooser.showOpenDialog(root.getScene().getWindow());
|
||||||
if (file == null) return;
|
if (file == null) return;
|
||||||
List<TestItem> aux = TestItem.loadFrom(file);
|
List<TestItem> aux = TestItem.loadFrom(file, TestItem.COLONS);
|
||||||
if (aux != null) {
|
if (aux != null) {
|
||||||
tabPane.getTabs().add(createTableTab(file.getName().substring(0, file.getName().lastIndexOf('.')), aux));
|
tabPane.getTabs().add(createTableTab(file.getName().substring(0, file.getName().lastIndexOf('.')), aux));
|
||||||
tabPane.getSelectionModel().selectLast();
|
tabPane.getSelectionModel().selectLast();
|
||||||
|
@ -77,6 +77,19 @@ public class Controller implements Initializable {
|
||||||
TestItem.saveTo(file, tabMap.get(tabPane.getSelectionModel().getSelectedItem()).getData());
|
TestItem.saveTo(file, tabMap.get(tabPane.getSelectionModel().getSelectedItem()).getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private void onImportAction(ActionEvent event) {
|
||||||
|
FileChooser chooser = new FileChooser();
|
||||||
|
chooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Data files (.csv)", "*.csv"));
|
||||||
|
File file = chooser.showOpenDialog(root.getScene().getWindow());
|
||||||
|
if (file == null) return;
|
||||||
|
List<TestItem> aux = TestItem.loadFrom(file, TestItem.COMMA);
|
||||||
|
if (aux != null) {
|
||||||
|
tabPane.getTabs().add(createTableTab(file.getName().substring(0, file.getName().lastIndexOf('.')), aux));
|
||||||
|
tabPane.getSelectionModel().selectLast();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private Tab createTableTab(String name, List<TestItem> list) {
|
private Tab createTableTab(String name, List<TestItem> list) {
|
||||||
try {
|
try {
|
||||||
Tab tab = new Tab(name);
|
Tab tab = new Tab(name);
|
||||||
|
|
|
@ -10,6 +10,8 @@ import java.util.List;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
public class TestItem {
|
public class TestItem {
|
||||||
|
public static final String COMMA = ",", COLONS = "::";
|
||||||
|
|
||||||
private StringProperty question, answer;
|
private StringProperty question, answer;
|
||||||
|
|
||||||
public TestItem(SimpleStringProperty question, SimpleStringProperty answer) {
|
public TestItem(SimpleStringProperty question, SimpleStringProperty answer) {
|
||||||
|
@ -62,15 +64,15 @@ public class TestItem {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<TestItem> loadFrom(File file) {
|
public static List<TestItem> loadFrom(File file, String separator) {
|
||||||
List<TestItem> list = new ArrayList<>();
|
List<TestItem> list = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
Scanner in = new Scanner(file);
|
Scanner in = new Scanner(file);
|
||||||
while (in.hasNextLine()) {
|
while (in.hasNextLine()) {
|
||||||
String line = in.nextLine();
|
String line = in.nextLine();
|
||||||
int index = line.indexOf("::");
|
int index = line.indexOf(separator);
|
||||||
String question = line.substring(0, index);
|
String question = line.substring(0, index);
|
||||||
String answer = line.substring(index + 2);
|
String answer = line.substring(index + separator.length());
|
||||||
list.add(new TestItem(question, answer));
|
list.add(new TestItem(question, answer));
|
||||||
System.err.println(question + " :: " + answer);
|
System.err.println(question + " :: " + answer);
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
<children>
|
<children>
|
||||||
<Button mnemonicParsing="false" onAction="#onNewAction" prefWidth="100.0" text="New table" />
|
<Button mnemonicParsing="false" onAction="#onNewAction" prefWidth="100.0" text="New table" />
|
||||||
<Button mnemonicParsing="false" onAction="#onLoadAction" prefWidth="100.0" text="Load file" />
|
<Button mnemonicParsing="false" onAction="#onLoadAction" prefWidth="100.0" text="Load file" />
|
||||||
|
<Button layoutX="260.0" layoutY="187.0" mnemonicParsing="false" onAction="#onImportAction" prefWidth="100.0" text="Import data" />
|
||||||
</children>
|
</children>
|
||||||
</VBox>
|
</VBox>
|
||||||
</content>
|
</content>
|
||||||
|
@ -41,6 +42,7 @@
|
||||||
<KeyCodeCombination alt="UP" code="N" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
|
<KeyCodeCombination alt="UP" code="N" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
|
||||||
</accelerator>
|
</accelerator>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
<SeparatorMenuItem mnemonicParsing="false" />
|
||||||
<MenuItem onAction="#onLoadAction" text="_Open">
|
<MenuItem onAction="#onLoadAction" text="_Open">
|
||||||
<accelerator>
|
<accelerator>
|
||||||
<KeyCodeCombination alt="UP" code="O" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
|
<KeyCodeCombination alt="UP" code="O" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
|
||||||
|
@ -51,6 +53,12 @@
|
||||||
<KeyCodeCombination alt="UP" code="S" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
|
<KeyCodeCombination alt="UP" code="S" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
|
||||||
</accelerator>
|
</accelerator>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
<SeparatorMenuItem mnemonicParsing="false" />
|
||||||
|
<MenuItem onAction="#onImportAction" text="_Open">
|
||||||
|
<accelerator>
|
||||||
|
<KeyCodeCombination alt="UP" code="O" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
|
||||||
|
</accelerator>
|
||||||
|
</MenuItem>
|
||||||
</items>
|
</items>
|
||||||
</Menu>
|
</Menu>
|
||||||
<Menu text="_Options">
|
<Menu text="_Options">
|
||||||
|
|
Loading…
Reference in a new issue