From 43856dffab289fc962e81371d282af3090b9ec14 Mon Sep 17 00:00:00 2001 From: Andreas Billmann Date: Fri, 10 Dec 2021 00:30:59 +0100 Subject: [PATCH] switch to fastcsv as supercsv is not maintaned anymore --- LICENSE.md | 2 +- build.gradle | 20 ++++---- .../ninja/javafx/smartcsv/FileReader.java | 2 +- .../ninja/javafx/smartcsv/FileWriter.java | 2 +- src/main/java/ninja/javafx/smartcsv/Main.java | 2 +- .../javafx/smartcsv/csv/CSVConfigurable.java | 12 +++-- .../javafx/smartcsv/csv/CSVFileReader.java | 36 +++++++++------ .../javafx/smartcsv/csv/CSVFileWriter.java | 46 ++++++++----------- .../javafx/smartcsv/export/ErrorExport.java | 2 +- .../javafx/smartcsv/files/FileStorage.java | 2 +- .../javafx/smartcsv/fx/FXMLController.java | 2 +- .../ninja/javafx/smartcsv/fx/SmartCSV.java | 4 +- .../smartcsv/fx/SmartCSVController.java | 14 +++--- .../smartcsv/fx/about/AboutController.java | 2 +- .../javafx/smartcsv/fx/list/ErrorSideBar.java | 2 +- .../smartcsv/fx/list/GotoLineDialog.java | 2 +- .../fx/preferences/PreferencesController.java | 41 ++++++----------- .../fx/table/EditableValidationCell.java | 2 +- .../fx/table/ObservableMapValueFactory.java | 2 +- .../fx/table/ValidationCellFactory.java | 2 +- .../smartcsv/fx/table/model/CSVModel.java | 2 +- .../smartcsv/fx/table/model/CSVRow.java | 2 +- .../smartcsv/fx/table/model/CSVValue.java | 2 +- .../fx/table/model/ColumnValueProvider.java | 2 +- .../smartcsv/fx/util/ColorConstants.java | 2 +- .../smartcsv/fx/util/I18nValidationUtil.java | 2 +- .../smartcsv/fx/util/LoadFileService.java | 2 +- .../smartcsv/fx/util/SaveFileService.java | 2 +- .../StringFormatEditorCellFactory.java | 2 +- .../StringFormatStringConverter.java | 2 +- .../ValidationEditorController.java | 2 +- .../smartcsv/preferences/CharsetHelper.java | 2 +- .../preferences/EncodingFileReader.java | 2 +- .../preferences/EncodingFileWriter.java | 2 +- ...{QuoteModeHelper.java => Preferences.java} | 38 ++++----------- .../preferences/PreferencesFileReader.java | 27 ++++------- .../preferences/PreferencesFileWriter.java | 19 ++++---- .../validation/RevalidationService.java | 2 +- .../smartcsv/validation/ValidationError.java | 2 +- .../validation/ValidationFileReader.java | 2 +- .../validation/ValidationFileWriter.java | 2 +- .../validation/ValidationMessage.java | 2 +- .../javafx/smartcsv/validation/Validator.java | 2 +- .../validation/checker/BinaryValidation.java | 2 +- .../validation/checker/DateValidation.java | 2 +- .../validation/checker/DoubleValidation.java | 2 +- .../validation/checker/EmailValidation.java | 2 +- .../validation/checker/GroovyValidation.java | 2 +- .../validation/checker/IntegerValidation.java | 2 +- .../checker/MaxLengthValidation.java | 2 +- .../checker/MinLengthValidation.java | 2 +- .../checker/NotEmptyValidation.java | 2 +- .../validation/checker/RegExpValidation.java | 2 +- .../validation/checker/UniqueValidation.java | 2 +- .../validation/checker/UriValidation.java | 2 +- .../validation/checker/UuidValidation.java | 2 +- .../validation/checker/Validation.java | 2 +- .../validation/checker/ValueOfValidation.java | 2 +- .../validation/configuration/Constraints.java | 2 +- .../validation/configuration/Field.java | 2 +- .../configuration/StringFormat.java | 2 +- .../validation/configuration/Type.java | 2 +- .../ValidationConfiguration.java | 2 +- .../ninja/javafx/smartcsv/fx/about/about.fxml | 4 +- .../smartcsv/fx/preferences/preferences.fxml | 16 ++----- .../ninja/javafx/smartcsv/fx/smartcsv.fxml | 4 -- .../smartcsv/fx/table/model/CSVModelTest.java | 2 +- .../preferences/CharsetHelperTest.java | 2 +- .../validation/HeaderValidationTest.java | 2 +- 69 files changed, 173 insertions(+), 220 deletions(-) rename src/main/java/ninja/javafx/smartcsv/preferences/{QuoteModeHelper.java => Preferences.java} (55%) diff --git a/LICENSE.md b/LICENSE.md index 4e95abf..e41eac2 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,7 +1,7 @@ The MIT License (MIT) ------------------------------------------------------------------------------------------------------------------------ -Copyright (c) 2015-2019 Andreas Billmann +Copyright (c) 2015-2021 Andreas Billmann diff --git a/build.gradle b/build.gradle index 292bd6a..13fefad 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ plugins { id 'java' id 'groovy' id 'application' - id 'org.openjfx.javafxplugin' version '0.0.8' + id 'org.openjfx.javafxplugin' version '0.0.10' } repositories { @@ -16,6 +16,7 @@ sourceCompatibility = 17 targetCompatibility = 17 javafx { + version = "17" modules = [ 'javafx.controls', 'javafx.fxml' ] } @@ -25,19 +26,20 @@ dependencies { testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '5.5.2' testImplementation group: 'org.hamcrest', name: 'hamcrest-library', version: '2.2' testImplementation group: 'org.mockito', name: 'mockito-core', version:'3.1.0' - implementation group: 'org.codehaus.groovy', name: 'groovy-all', version: '3.0.6' - implementation group: 'org.springframework', name:'spring-context', version: '5.3.10' - implementation group: 'net.sf.supercsv', name: 'super-csv', version: '2.4.0' + implementation group: 'org.apache.groovy', name: 'groovy', version: '4.0.0-rc-1' + implementation (group: 'org.springframework', name:'spring-context', version: '5.3.13') + implementation group: 'de.siegmar', name: 'fastcsv', version: '2.1.0' implementation group: 'commons-validator', name: 'commons-validator', version: '1.7' implementation group: 'de.jensd', name: 'fontawesomefx-commons', version: '11.0' implementation group: 'de.jensd', name: 'fontawesomefx-fontawesome', version: '4.7.0-11' implementation group: 'de.jensd', name: 'fontawesomefx-materialdesignfont', version: '1.7.22-11' implementation group: 'de.jensd', name: 'fontawesomefx-materialicons', version: '2.2.0-11' - implementation group: 'org.controlsfx', name: 'controlsfx', version: '11.0.2' - implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.6' - implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.0' - implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.11.0' - implementation group: 'org.fxmisc.richtext', name: 'richtextfx', version: '0.10.5' + implementation group: 'org.controlsfx', name: 'controlsfx', version: '11.1.0' + implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.9' + implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.14.1' + implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.14.1' + implementation group: 'org.fxmisc.richtext', name: 'richtextfx', version: '0.10.7' + } test { diff --git a/src/main/java/ninja/javafx/smartcsv/FileReader.java b/src/main/java/ninja/javafx/smartcsv/FileReader.java index 59f9bf7..812b011 100644 --- a/src/main/java/ninja/javafx/smartcsv/FileReader.java +++ b/src/main/java/ninja/javafx/smartcsv/FileReader.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/FileWriter.java b/src/main/java/ninja/javafx/smartcsv/FileWriter.java index 3ee3125..30ee904 100644 --- a/src/main/java/ninja/javafx/smartcsv/FileWriter.java +++ b/src/main/java/ninja/javafx/smartcsv/FileWriter.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/Main.java b/src/main/java/ninja/javafx/smartcsv/Main.java index a85d143..b826720 100644 --- a/src/main/java/ninja/javafx/smartcsv/Main.java +++ b/src/main/java/ninja/javafx/smartcsv/Main.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/csv/CSVConfigurable.java b/src/main/java/ninja/javafx/smartcsv/csv/CSVConfigurable.java index 7dda71c..49139ea 100644 --- a/src/main/java/ninja/javafx/smartcsv/csv/CSVConfigurable.java +++ b/src/main/java/ninja/javafx/smartcsv/csv/CSVConfigurable.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -26,22 +26,24 @@ package ninja.javafx.smartcsv.csv; -import org.supercsv.prefs.CsvPreference; +import ninja.javafx.smartcsv.preferences.Preferences; + +import static ninja.javafx.smartcsv.preferences.Preferences.defaultPreferences; /** * */ public class CSVConfigurable { - protected CsvPreference csvPreference; + protected Preferences csvPreference; protected String fileEncoding; public CSVConfigurable() { - csvPreference = CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE; + csvPreference = defaultPreferences(); } - public void setCsvPreference(CsvPreference csvPreference) { + public void setCsvPreference(Preferences csvPreference) { this.csvPreference = csvPreference; } diff --git a/src/main/java/ninja/javafx/smartcsv/csv/CSVFileReader.java b/src/main/java/ninja/javafx/smartcsv/csv/CSVFileReader.java index 8225578..6108537 100644 --- a/src/main/java/ninja/javafx/smartcsv/csv/CSVFileReader.java +++ b/src/main/java/ninja/javafx/smartcsv/csv/CSVFileReader.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -26,17 +26,13 @@ package ninja.javafx.smartcsv.csv; +import de.siegmar.fastcsv.reader.NamedCsvReader; import ninja.javafx.smartcsv.FileReader; import ninja.javafx.smartcsv.fx.table.model.CSVModel; -import ninja.javafx.smartcsv.fx.table.model.CSVRow; -import org.supercsv.exception.SuperCsvException; -import org.supercsv.io.CsvMapReader; -import org.supercsv.io.ICsvMapReader; import java.io.File; import java.io.IOException; import java.nio.charset.Charset; -import java.util.Map; /** * reads the csv file and stores the values in csv model @@ -48,28 +44,38 @@ public class CSVFileReader extends CSVConfigurable implements FileReader customerMap; - while ((customerMap = mapReader.read(header)) != null) { - CSVRow row = model.addRow(); + csv.forEach(csvRow -> { + var row = model.addRow(); for (String column : header) { - model.addValue(row, column, customerMap.get(column)); + model.addValue(row, column, csvRow.getField(column)); } - } - } catch (IOException | SuperCsvException ex) { + }); + + } catch (IOException ex) { // TODO perhaps a custom NinjaException that can properly identify and localize the exception message // is this a file not found? is this a corrupt csv? etc throw new IOException("Failed to read " + file + ": " + ex.getMessage(), ex); } } + private NamedCsvReader getNamedCsvReader(File file) throws IOException { + var builder = NamedCsvReader.builder() + .fieldSeparator(csvPreference.delimiterChar()); + if (csvPreference.quoteChar() != null) { + builder.quoteCharacter(csvPreference.quoteChar()); + } + + return builder.build(file.toPath(), Charset.forName(fileEncoding)); + } + public CSVModel getContent() { return model; } diff --git a/src/main/java/ninja/javafx/smartcsv/csv/CSVFileWriter.java b/src/main/java/ninja/javafx/smartcsv/csv/CSVFileWriter.java index 20780f2..4ee71cb 100644 --- a/src/main/java/ninja/javafx/smartcsv/csv/CSVFileWriter.java +++ b/src/main/java/ninja/javafx/smartcsv/csv/CSVFileWriter.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -26,18 +26,17 @@ package ninja.javafx.smartcsv.csv; +import de.siegmar.fastcsv.writer.CsvWriter; +import de.siegmar.fastcsv.writer.QuoteStrategy; import ninja.javafx.smartcsv.fx.table.model.CSVModel; import ninja.javafx.smartcsv.fx.table.model.CSVRow; -import org.supercsv.io.CsvMapWriter; -import org.supercsv.io.ICsvMapWriter; import java.io.File; -import java.io.FileWriter; import java.io.IOException; import java.nio.charset.Charset; -import java.util.Map; +import java.util.List; -import static java.util.stream.Collectors.toMap; +import static java.util.stream.Collectors.toList; /** * filewriter for the csv @@ -52,22 +51,22 @@ public class CSVFileWriter extends CSVConfigurable implements ninja.javafx.smart @Override public void write(File filename) throws IOException { - ICsvMapWriter mapWriter = null; - try { - mapWriter = new CsvMapWriter(new FileWriter(filename.getAbsolutePath(), Charset.forName(fileEncoding)), - csvPreference); - mapWriter.writeHeader(model.getHeader()); - + try (var writer = getCsvWriter(filename)){ + writer.writeRow(model.getHeader()); for(CSVRow row: model.getRows()) { - Map columns = convertMapFromModel(row); - mapWriter.write(columns, model.getHeader()); + writer.writeRow(convertMapFromModel(row)); } } - finally { - if( mapWriter != null ) { - mapWriter.close(); - } + } + + private CsvWriter getCsvWriter(File filename) throws IOException { + var writer = CsvWriter.builder().fieldSeparator(csvPreference.delimiterChar()); + if (csvPreference.quoteChar() != null) { + writer.quoteCharacter(csvPreference.quoteChar()); + writer.quoteStrategy(QuoteStrategy.ALWAYS); } + + return writer.build(filename.toPath(), Charset.forName(fileEncoding)); } /** @@ -75,13 +74,8 @@ public class CSVFileWriter extends CSVConfigurable implements ninja.javafx.smart * @param row the row to convert * @return a simple map for the supercvs writer */ - private Map convertMapFromModel(CSVRow row) { - return row.getColumns().entrySet().stream() - .collect( - toMap( - Map.Entry::getKey, - e -> e.getValue().getValue().getValue() != null ? e.getValue().getValue().getValue() : "" - ) - ); + private List convertMapFromModel(CSVRow row) { + return row.getColumns().values().stream().map(v -> v.get().getValue()) + .collect(toList()); } } diff --git a/src/main/java/ninja/javafx/smartcsv/export/ErrorExport.java b/src/main/java/ninja/javafx/smartcsv/export/ErrorExport.java index d99ee76..03d9fec 100644 --- a/src/main/java/ninja/javafx/smartcsv/export/ErrorExport.java +++ b/src/main/java/ninja/javafx/smartcsv/export/ErrorExport.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/files/FileStorage.java b/src/main/java/ninja/javafx/smartcsv/files/FileStorage.java index d3a0629..94142ea 100644 --- a/src/main/java/ninja/javafx/smartcsv/files/FileStorage.java +++ b/src/main/java/ninja/javafx/smartcsv/files/FileStorage.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/fx/FXMLController.java b/src/main/java/ninja/javafx/smartcsv/fx/FXMLController.java index 7ee63c5..c9f6936 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/FXMLController.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/FXMLController.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/fx/SmartCSV.java b/src/main/java/ninja/javafx/smartcsv/fx/SmartCSV.java index 16e9318..124a087 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/SmartCSV.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/SmartCSV.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -85,6 +85,8 @@ public class SmartCSV extends Application { private void showUI(Stage primaryStage, String name, String version) { SmartCSVController smartCVSController = appContext.getBean(SmartCSVController.class); Scene scene = new Scene((Parent) smartCVSController.getView()); + var defaultThemeCss = getClass().getResource("/ninja/javafx/smartcsv/fx/smartcsv.css").toExternalForm(); + scene.getRoot().getStylesheets().add(defaultThemeCss); primaryStage.setScene(scene); primaryStage.setTitle(String.format("%s %s", name, version)); diff --git a/src/main/java/ninja/javafx/smartcsv/fx/SmartCSVController.java b/src/main/java/ninja/javafx/smartcsv/fx/SmartCSVController.java index be12b97..2250ca1 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/SmartCSVController.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/SmartCSVController.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -64,7 +64,6 @@ import ninja.javafx.smartcsv.validation.configuration.ValidationConfiguration; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import org.supercsv.prefs.CsvPreference; import java.io.File; import java.io.IOException; @@ -79,6 +78,7 @@ import static javafx.application.Platform.exit; import static javafx.application.Platform.runLater; import static javafx.beans.binding.Bindings.*; import static javafx.scene.layout.AnchorPane.*; +import static ninja.javafx.smartcsv.preferences.Preferences.defaultPreferences; /** * main controller of the application @@ -222,7 +222,7 @@ public class SmartCSVController extends FXMLController { private FileStorage currentCsvFile = new FileStorage<>(csvFileReader, csvFileWriter); private FileStorage currentConfigFile = new FileStorage<>(new ValidationFileReader(), new ValidationFileWriter()); - private FileStorage csvPreferenceFile = new FileStorage<>(new PreferencesFileReader(), new PreferencesFileWriter()); + private FileStorage csvPreferenceFile = new FileStorage<>(new PreferencesFileReader(), new PreferencesFileWriter()); private FileStorage fileEncodingFile = new FileStorage<>(new EncodingFileReader(), new EncodingFileWriter()); private ListChangeListener errorListListener = c -> tableView.refresh(); @@ -368,7 +368,7 @@ public class SmartCSVController extends FXMLController { Optional result = alert.showAndWait(); if (result.get() == ButtonType.OK){ - CsvPreference csvPreference = preferencesController.getCsvPreference(); + Preferences csvPreference = preferencesController.getCsvPreference(); setCsvPreference(csvPreference); saveCsvPreferences(csvPreference); String fileEncoding = CharsetHelper.getCharsetName(preferencesController.getFileEncoding()); @@ -544,12 +544,12 @@ public class SmartCSVController extends FXMLController { loadEncodingFromFile(); }); } else { - setCsvPreference(CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE); + setCsvPreference(defaultPreferences()); loadEncodingFromFile(); } } - private void saveCsvPreferences(CsvPreference csvPreference) { + private void saveCsvPreferences(Preferences csvPreference) { try { createPreferenceFile(); csvPreferenceFile.setContent(csvPreference); @@ -572,7 +572,7 @@ public class SmartCSVController extends FXMLController { } } - private void setCsvPreference(CsvPreference csvPreference) { + private void setCsvPreference(Preferences csvPreference) { preferencesController.setCsvPreference(csvPreference); csvFileReader.setCsvPreference(csvPreference); csvFileWriter.setCsvPreference(csvPreference); diff --git a/src/main/java/ninja/javafx/smartcsv/fx/about/AboutController.java b/src/main/java/ninja/javafx/smartcsv/fx/about/AboutController.java index 7cfc966..8f5eba1 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/about/AboutController.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/about/AboutController.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/fx/list/ErrorSideBar.java b/src/main/java/ninja/javafx/smartcsv/fx/list/ErrorSideBar.java index d207c1e..f8abca4 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/list/ErrorSideBar.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/list/ErrorSideBar.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/fx/list/GotoLineDialog.java b/src/main/java/ninja/javafx/smartcsv/fx/list/GotoLineDialog.java index 7dc5683..fb92150 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/list/GotoLineDialog.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/list/GotoLineDialog.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/fx/preferences/PreferencesController.java b/src/main/java/ninja/javafx/smartcsv/fx/preferences/PreferencesController.java index d421bc1..a7d4ff9 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/preferences/PreferencesController.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/preferences/PreferencesController.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -34,18 +34,15 @@ import javafx.scene.control.ComboBox; import javafx.scene.control.TextField; import javafx.scene.control.TextFormatter; import ninja.javafx.smartcsv.fx.FXMLController; +import ninja.javafx.smartcsv.preferences.Preferences; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import org.supercsv.prefs.CsvPreference; import java.net.URL; import java.nio.charset.Charset; import java.util.ResourceBundle; import java.util.function.UnaryOperator; -import static ninja.javafx.smartcsv.preferences.QuoteModeHelper.getQuoteMode; -import static ninja.javafx.smartcsv.preferences.QuoteModeHelper.getQuoteModeName; - /** * controller for preferences */ @@ -58,15 +55,9 @@ public class PreferencesController extends FXMLController { @FXML private TextField delimiterChar; - @FXML - private CheckBox surroundingSpacesNeedQuotes; - @FXML private CheckBox ignoreEmptyLines; - @FXML - private ComboBox quoteMode; - @FXML private ComboBox fileEncoding; @@ -83,7 +74,6 @@ public class PreferencesController extends FXMLController { @Override public void initialize(URL location, ResourceBundle resources) { - quoteMode.getItems().addAll("normal", "always", "column"); fileEncoding.getItems().addAll(Charset.availableCharsets().keySet()); UnaryOperator allowOnlyOneCharacter = change -> { @@ -102,24 +92,23 @@ public class PreferencesController extends FXMLController { } private void revalidate() { - valid.setValue(quoteChar.getText().length() == 1 && delimiterChar.getText().length() == 1); + valid.setValue(quoteChar.getText().length() <= 1 && delimiterChar.getText().length() == 1); } - public void setCsvPreference(CsvPreference csvPreference) { - quoteChar.setText(Character.toString(csvPreference.getQuoteChar())); - delimiterChar.setText(Character.toString((char)csvPreference.getDelimiterChar())); - surroundingSpacesNeedQuotes.setSelected(csvPreference.isSurroundingSpacesNeedQuotes()); - ignoreEmptyLines.setSelected(csvPreference.isIgnoreEmptyLines()); - quoteMode.getSelectionModel().select(getQuoteModeName(csvPreference.getQuoteMode())); - endOfLineSymbols = csvPreference.getEndOfLineSymbols(); + public void setCsvPreference(Preferences csvPreference) { + if (csvPreference.quoteChar() != null) { + quoteChar.setText(csvPreference.quoteChar().toString()); + } else { + quoteChar.setText(""); + } + delimiterChar.setText(Character.toString(csvPreference.delimiterChar())); + ignoreEmptyLines.setSelected(csvPreference.ignoreEmptyLines()); + endOfLineSymbols = csvPreference.endOfLineSymbols(); } - public CsvPreference getCsvPreference() { - return new CsvPreference.Builder(quoteChar.getText().charAt(0), delimiterChar.getText().charAt(0), endOfLineSymbols) - .useQuoteMode(getQuoteMode(quoteMode.getSelectionModel().getSelectedItem())) - .surroundingSpacesNeedQuotes(surroundingSpacesNeedQuotes.isSelected()) - .ignoreEmptyLines(ignoreEmptyLines.isSelected()) - .build(); + public Preferences getCsvPreference() { + var quote = quoteChar.getText().length() == 0 ? null : quoteChar.getText().charAt(0); + return new Preferences(quote, delimiterChar.getText().charAt(0), endOfLineSymbols, ignoreEmptyLines.isSelected()); } public void setFileEncoding(String fileEncoding) { diff --git a/src/main/java/ninja/javafx/smartcsv/fx/table/EditableValidationCell.java b/src/main/java/ninja/javafx/smartcsv/fx/table/EditableValidationCell.java index 8617928..8892ae1 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/table/EditableValidationCell.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/table/EditableValidationCell.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/fx/table/ObservableMapValueFactory.java b/src/main/java/ninja/javafx/smartcsv/fx/table/ObservableMapValueFactory.java index 893cd1c..02225d9 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/table/ObservableMapValueFactory.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/table/ObservableMapValueFactory.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/fx/table/ValidationCellFactory.java b/src/main/java/ninja/javafx/smartcsv/fx/table/ValidationCellFactory.java index 43be0f1..e5e25fe 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/table/ValidationCellFactory.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/table/ValidationCellFactory.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/fx/table/model/CSVModel.java b/src/main/java/ninja/javafx/smartcsv/fx/table/model/CSVModel.java index cb688b2..7f1095f 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/table/model/CSVModel.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/table/model/CSVModel.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/fx/table/model/CSVRow.java b/src/main/java/ninja/javafx/smartcsv/fx/table/model/CSVRow.java index 29d198d..b795c9d 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/table/model/CSVRow.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/table/model/CSVRow.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/fx/table/model/CSVValue.java b/src/main/java/ninja/javafx/smartcsv/fx/table/model/CSVValue.java index 7087c46..f7db2dd 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/table/model/CSVValue.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/table/model/CSVValue.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/fx/table/model/ColumnValueProvider.java b/src/main/java/ninja/javafx/smartcsv/fx/table/model/ColumnValueProvider.java index 7fc46ca..5b2c64c 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/table/model/ColumnValueProvider.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/table/model/ColumnValueProvider.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/fx/util/ColorConstants.java b/src/main/java/ninja/javafx/smartcsv/fx/util/ColorConstants.java index 9cdd0d8..042e916 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/util/ColorConstants.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/util/ColorConstants.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/fx/util/I18nValidationUtil.java b/src/main/java/ninja/javafx/smartcsv/fx/util/I18nValidationUtil.java index 721a0db..d856f28 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/util/I18nValidationUtil.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/util/I18nValidationUtil.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/fx/util/LoadFileService.java b/src/main/java/ninja/javafx/smartcsv/fx/util/LoadFileService.java index 48280c1..aa3bb32 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/util/LoadFileService.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/util/LoadFileService.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/fx/util/SaveFileService.java b/src/main/java/ninja/javafx/smartcsv/fx/util/SaveFileService.java index 92150fe..c9bc5fe 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/util/SaveFileService.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/util/SaveFileService.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/fx/validation/StringFormatEditorCellFactory.java b/src/main/java/ninja/javafx/smartcsv/fx/validation/StringFormatEditorCellFactory.java index 4ac5ae1..250a91b 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/validation/StringFormatEditorCellFactory.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/validation/StringFormatEditorCellFactory.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/fx/validation/StringFormatStringConverter.java b/src/main/java/ninja/javafx/smartcsv/fx/validation/StringFormatStringConverter.java index 1ed2842..d2466a5 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/validation/StringFormatStringConverter.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/validation/StringFormatStringConverter.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/fx/validation/ValidationEditorController.java b/src/main/java/ninja/javafx/smartcsv/fx/validation/ValidationEditorController.java index e4a358c..7dd3ddd 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/validation/ValidationEditorController.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/validation/ValidationEditorController.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/preferences/CharsetHelper.java b/src/main/java/ninja/javafx/smartcsv/preferences/CharsetHelper.java index 05143ab..0cd2e20 100644 --- a/src/main/java/ninja/javafx/smartcsv/preferences/CharsetHelper.java +++ b/src/main/java/ninja/javafx/smartcsv/preferences/CharsetHelper.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/preferences/EncodingFileReader.java b/src/main/java/ninja/javafx/smartcsv/preferences/EncodingFileReader.java index d677c9f..1b120aa 100644 --- a/src/main/java/ninja/javafx/smartcsv/preferences/EncodingFileReader.java +++ b/src/main/java/ninja/javafx/smartcsv/preferences/EncodingFileReader.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/preferences/EncodingFileWriter.java b/src/main/java/ninja/javafx/smartcsv/preferences/EncodingFileWriter.java index 4811ee8..ebb95a2 100644 --- a/src/main/java/ninja/javafx/smartcsv/preferences/EncodingFileWriter.java +++ b/src/main/java/ninja/javafx/smartcsv/preferences/EncodingFileWriter.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/preferences/QuoteModeHelper.java b/src/main/java/ninja/javafx/smartcsv/preferences/Preferences.java similarity index 55% rename from src/main/java/ninja/javafx/smartcsv/preferences/QuoteModeHelper.java rename to src/main/java/ninja/javafx/smartcsv/preferences/Preferences.java index a2af3e7..487433b 100644 --- a/src/main/java/ninja/javafx/smartcsv/preferences/QuoteModeHelper.java +++ b/src/main/java/ninja/javafx/smartcsv/preferences/Preferences.java @@ -2,8 +2,8 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja - + Copyright (c) 2015-2021 javafx.ninja + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights @@ -21,36 +21,18 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - + */ package ninja.javafx.smartcsv.preferences; -import org.supercsv.quote.AlwaysQuoteMode; -import org.supercsv.quote.ColumnQuoteMode; -import org.supercsv.quote.NormalQuoteMode; -import org.supercsv.quote.QuoteMode; +public record Preferences( + Character quoteChar, + char delimiterChar, + String endOfLineSymbols, + boolean ignoreEmptyLines) { -/** - * Helper class for mapping quote quoteModeName - */ -public class QuoteModeHelper { - - public static QuoteMode getQuoteMode(String quoteModeName) { - switch (quoteModeName) { - case "always": return new AlwaysQuoteMode(); - case "column": return new ColumnQuoteMode(); - default: return new NormalQuoteMode(); - } - } - - public static String getQuoteModeName(QuoteMode quoteMode) { - if (quoteMode instanceof AlwaysQuoteMode) { - return "always"; - } else if (quoteMode instanceof ColumnQuoteMode) { - return "column"; - } else { - return "normal"; - } + public static Preferences defaultPreferences() { + return new Preferences('\"',',', "\n", true); } } diff --git a/src/main/java/ninja/javafx/smartcsv/preferences/PreferencesFileReader.java b/src/main/java/ninja/javafx/smartcsv/preferences/PreferencesFileReader.java index 5414ed2..84660e6 100644 --- a/src/main/java/ninja/javafx/smartcsv/preferences/PreferencesFileReader.java +++ b/src/main/java/ninja/javafx/smartcsv/preferences/PreferencesFileReader.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -28,27 +28,23 @@ package ninja.javafx.smartcsv.preferences; import com.google.gson.GsonBuilder; import ninja.javafx.smartcsv.FileReader; -import org.supercsv.prefs.CsvPreference; -import org.supercsv.quote.AlwaysQuoteMode; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; -import static ninja.javafx.smartcsv.preferences.QuoteModeHelper.getQuoteMode; +import static ninja.javafx.smartcsv.preferences.Preferences.defaultPreferences; /** * file reader for the preferences */ -public class PreferencesFileReader implements FileReader { +public class PreferencesFileReader implements FileReader { - private CsvPreference csvPreference; + private Preferences csvPreference; public PreferencesFileReader() { - csvPreference = new CsvPreference. - Builder(CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE). - useQuoteMode(new AlwaysQuoteMode()).build(); + csvPreference = defaultPreferences(); } @Override @@ -56,22 +52,15 @@ public class PreferencesFileReader implements FileReader { Map config = new GsonBuilder().create().fromJson(new java.io.FileReader(filename), HashMap.class); if (config != null) { - char quoteChar = config.get("quoteChar").toString().charAt(0); + Character quoteChar = config.get("quoteChar") == null ? null : config.get("quoteChar").toString().charAt(0); char delimiterChar = config.get("delimiterChar").toString().charAt(0); String endOfLineSymbols = config.get("endOfLineSymbols").toString(); - boolean surroundingSpacesNeedQuotes = (Boolean) config.get("surroundingSpacesNeedQuotes"); boolean ignoreEmptyLines = (Boolean) config.get("ignoreEmptyLines"); - String quoteMode = config.get("quoteMode").toString(); - - csvPreference = new CsvPreference.Builder(quoteChar, delimiterChar, endOfLineSymbols) - .useQuoteMode(getQuoteMode(quoteMode)) - .surroundingSpacesNeedQuotes(surroundingSpacesNeedQuotes) - .ignoreEmptyLines(ignoreEmptyLines) - .build(); + csvPreference = new Preferences(quoteChar, delimiterChar, endOfLineSymbols, ignoreEmptyLines); } } - public CsvPreference getContent() { + public Preferences getContent() { return csvPreference; } diff --git a/src/main/java/ninja/javafx/smartcsv/preferences/PreferencesFileWriter.java b/src/main/java/ninja/javafx/smartcsv/preferences/PreferencesFileWriter.java index d3a2d49..70c7954 100644 --- a/src/main/java/ninja/javafx/smartcsv/preferences/PreferencesFileWriter.java +++ b/src/main/java/ninja/javafx/smartcsv/preferences/PreferencesFileWriter.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -29,7 +29,6 @@ package ninja.javafx.smartcsv.preferences; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import ninja.javafx.smartcsv.FileWriter; -import org.supercsv.prefs.CsvPreference; import java.io.File; import java.io.IOException; @@ -40,22 +39,20 @@ import java.util.Map; /** * Save preferences to configuration file */ -public class PreferencesFileWriter implements FileWriter { +public class PreferencesFileWriter implements FileWriter { - private CsvPreference csvPreference; + private Preferences csvPreference; - public void setContent(CsvPreference csvPreference) { + public void setContent(Preferences csvPreference) { this.csvPreference = csvPreference; } public void write(File file) throws IOException { Map preferences = new HashMap<>(); - preferences.put("quoteChar", Character.toString(csvPreference.getQuoteChar())); - preferences.put("delimiterChar", Character.toString((char)csvPreference.getDelimiterChar())); - preferences.put("endOfLineSymbols", csvPreference.getEndOfLineSymbols()); - preferences.put("surroundingSpacesNeedQuotes", csvPreference.isSurroundingSpacesNeedQuotes()); - preferences.put("ignoreEmptyLines", csvPreference.isIgnoreEmptyLines()); - preferences.put("quoteMode", QuoteModeHelper.getQuoteModeName(csvPreference.getQuoteMode())); + preferences.put("quoteChar", csvPreference.quoteChar() == null ? null: csvPreference.quoteChar().toString()); + preferences.put("delimiterChar", Character.toString((char)csvPreference.delimiterChar())); + preferences.put("endOfLineSymbols", csvPreference.endOfLineSymbols()); + preferences.put("ignoreEmptyLines", csvPreference.ignoreEmptyLines()); Gson gson = new GsonBuilder().setPrettyPrinting().create(); Files.write(file.toPath(), gson.toJson(preferences).getBytes()); diff --git a/src/main/java/ninja/javafx/smartcsv/validation/RevalidationService.java b/src/main/java/ninja/javafx/smartcsv/validation/RevalidationService.java index 80a8084..f58b56b 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/RevalidationService.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/RevalidationService.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/ValidationError.java b/src/main/java/ninja/javafx/smartcsv/validation/ValidationError.java index 4292a6a..00979e2 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/ValidationError.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/ValidationError.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/ValidationFileReader.java b/src/main/java/ninja/javafx/smartcsv/validation/ValidationFileReader.java index 08b4580..c8d9f82 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/ValidationFileReader.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/ValidationFileReader.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/ValidationFileWriter.java b/src/main/java/ninja/javafx/smartcsv/validation/ValidationFileWriter.java index efd54dd..3f04da6 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/ValidationFileWriter.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/ValidationFileWriter.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/ValidationMessage.java b/src/main/java/ninja/javafx/smartcsv/validation/ValidationMessage.java index b2d8194..4443047 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/ValidationMessage.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/ValidationMessage.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/Validator.java b/src/main/java/ninja/javafx/smartcsv/validation/Validator.java index 1ab7c6b..5a02dd4 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/Validator.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/Validator.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/checker/BinaryValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/checker/BinaryValidation.java index c7132e9..812fb0d 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/checker/BinaryValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/checker/BinaryValidation.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/checker/DateValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/checker/DateValidation.java index 5514a51..a2c2b8d 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/checker/DateValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/checker/DateValidation.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/checker/DoubleValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/checker/DoubleValidation.java index 2b0619b..107421c 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/checker/DoubleValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/checker/DoubleValidation.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/checker/EmailValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/checker/EmailValidation.java index 2c1d054..333b1aa 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/checker/EmailValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/checker/EmailValidation.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/checker/GroovyValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/checker/GroovyValidation.java index 4e2fbbe..86d315f 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/checker/GroovyValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/checker/GroovyValidation.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/checker/IntegerValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/checker/IntegerValidation.java index 3343b6b..2cf6cbb 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/checker/IntegerValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/checker/IntegerValidation.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/checker/MaxLengthValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/checker/MaxLengthValidation.java index 60544a8..473f279 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/checker/MaxLengthValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/checker/MaxLengthValidation.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/checker/MinLengthValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/checker/MinLengthValidation.java index cadf740..e6d16ba 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/checker/MinLengthValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/checker/MinLengthValidation.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/checker/NotEmptyValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/checker/NotEmptyValidation.java index 3736049..58fd462 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/checker/NotEmptyValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/checker/NotEmptyValidation.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/checker/RegExpValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/checker/RegExpValidation.java index c896901..564fb2c 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/checker/RegExpValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/checker/RegExpValidation.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/checker/UniqueValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/checker/UniqueValidation.java index 5cefa02..ede8ab6 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/checker/UniqueValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/checker/UniqueValidation.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/checker/UriValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/checker/UriValidation.java index 5e38752..b6e1847 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/checker/UriValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/checker/UriValidation.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/checker/UuidValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/checker/UuidValidation.java index ccf2cbc..34eca77 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/checker/UuidValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/checker/UuidValidation.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/checker/Validation.java b/src/main/java/ninja/javafx/smartcsv/validation/checker/Validation.java index 33e46e9..4dbdfc1 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/checker/Validation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/checker/Validation.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/checker/ValueOfValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/checker/ValueOfValidation.java index 1fafb00..3b03dc8 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/checker/ValueOfValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/checker/ValueOfValidation.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/configuration/Constraints.java b/src/main/java/ninja/javafx/smartcsv/validation/configuration/Constraints.java index d77c27b..e839664 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/configuration/Constraints.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/configuration/Constraints.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/configuration/Field.java b/src/main/java/ninja/javafx/smartcsv/validation/configuration/Field.java index d460f44..9dabf2e 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/configuration/Field.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/configuration/Field.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/configuration/StringFormat.java b/src/main/java/ninja/javafx/smartcsv/validation/configuration/StringFormat.java index 42af89d..279b498 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/configuration/StringFormat.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/configuration/StringFormat.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/configuration/Type.java b/src/main/java/ninja/javafx/smartcsv/validation/configuration/Type.java index 4f4dcf4..7a1dd78 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/configuration/Type.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/configuration/Type.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/ninja/javafx/smartcsv/validation/configuration/ValidationConfiguration.java b/src/main/java/ninja/javafx/smartcsv/validation/configuration/ValidationConfiguration.java index 6034ba5..020990e 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/configuration/ValidationConfiguration.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/configuration/ValidationConfiguration.java @@ -2,7 +2,7 @@ The MIT License (MIT) ----------------------------------------------------------------------------- - Copyright (c) 2015-2019 javafx.ninja + Copyright (c) 2015-2021 javafx.ninja Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/resources/ninja/javafx/smartcsv/fx/about/about.fxml b/src/main/resources/ninja/javafx/smartcsv/fx/about/about.fxml index 4b61443..4ac3b60 100644 --- a/src/main/resources/ninja/javafx/smartcsv/fx/about/about.fxml +++ b/src/main/resources/ninja/javafx/smartcsv/fx/about/about.fxml @@ -61,8 +61,8 @@