mirror of
https://gitlab.com/kauron/jstudy
synced 2024-12-22 16:33:33 +01:00
Import from other formats
This commit is contained in:
parent
637bc33d2d
commit
034464b7b9
2 changed files with 26 additions and 4 deletions
|
@ -86,10 +86,17 @@ public class Controller implements Initializable {
|
||||||
@FXML
|
@FXML
|
||||||
private void onImportAction(ActionEvent event) {
|
private void onImportAction(ActionEvent event) {
|
||||||
FileChooser chooser = new FileChooser();
|
FileChooser chooser = new FileChooser();
|
||||||
chooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Data files (.csv)", "*.csv"));
|
chooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Data files (.csv, .txt)", "*.csv", "*.txt"));
|
||||||
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, TestItem.SEMICOLON);
|
String separator;
|
||||||
|
if (file.getName().matches(".*txt"))
|
||||||
|
separator = TestItem.TAB;
|
||||||
|
else if (file.getName().matches(".*csv"))
|
||||||
|
separator = TestItem.SEMICOLON;
|
||||||
|
else
|
||||||
|
separator = TestItem.COMMA;
|
||||||
|
List<TestItem> aux = TestItem.loadFrom(file, separator);
|
||||||
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();
|
||||||
|
|
|
@ -10,7 +10,7 @@ import java.util.List;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
public class TestItem {
|
public class TestItem {
|
||||||
public static final String COMMA = ",", COLONS = "::", SEMICOLON = ";";
|
public static final String TAB = "\t", COLONS = "::", SEMICOLON = ";", COMMA = ",";
|
||||||
|
|
||||||
private StringProperty question, answer;
|
private StringProperty question, answer;
|
||||||
|
|
||||||
|
@ -67,12 +67,27 @@ public class TestItem {
|
||||||
public static List<TestItem> loadFrom(File file, String separator) {
|
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;
|
||||||
|
switch (separator) {
|
||||||
|
case COMMA:
|
||||||
|
case SEMICOLON:
|
||||||
|
case TAB:
|
||||||
|
in = new Scanner(new FileInputStream(file), "ISO-8859-1");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
in = new Scanner(file);
|
||||||
|
break;
|
||||||
|
}
|
||||||
while (in.hasNextLine()) {
|
while (in.hasNextLine()) {
|
||||||
String line = in.nextLine();
|
String line = in.nextLine();
|
||||||
|
if (!line.matches("..*" + separator + "..*")) continue;
|
||||||
int index = line.indexOf(separator);
|
int index = line.indexOf(separator);
|
||||||
String question = line.substring(0, index);
|
String question = line.substring(0, index);
|
||||||
String answer = line.substring(index + separator.length());
|
String answer = line.substring(index + separator.length());
|
||||||
|
index = answer.indexOf(separator);
|
||||||
|
if (index != -1)
|
||||||
|
answer = answer.substring(0, index);
|
||||||
|
if (answer.isEmpty()) continue;
|
||||||
list.add(new TestItem(question, answer));
|
list.add(new TestItem(question, answer));
|
||||||
System.err.println(question + " :: " + answer);
|
System.err.println(question + " :: " + answer);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue