diff --git a/build.gradle b/build.gradle index fb3cb2e..edec9e1 100644 --- a/build.gradle +++ b/build.gradle @@ -3,43 +3,50 @@ plugins { id 'java' id 'groovy' id 'application' - id 'org.openjfx.javafxplugin' version '0.0.10' + id 'org.openjfx.javafxplugin' version '0.0.14' + id 'com.github.ben-manes.versions' version '0.48.0' } repositories { mavenCentral() - jcenter() } apply plugin: 'java' -sourceCompatibility = 17 -targetCompatibility = 17 + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(25) + } +} javafx { - version = "17" + version = "25" modules = [ 'javafx.controls', 'javafx.fxml' ] } dependencies { - // https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api - testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.8.2' - testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.8.2' - testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '5.8.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.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.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' + // updated testing libraries + testImplementation group: 'org.junit.platform', name: 'junit-platform-launcher', version: '6.0.0' + testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '6.0.0' + testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '6.0.0' + testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '6.0.0' + testImplementation group: 'org.hamcrest', name: 'hamcrest', version: '3.0' + testImplementation group: 'org.mockito', name: 'mockito-core', version:'5.20.0' + + // runtime libraries - bumped to recent stable versions where compatible + implementation group: 'org.apache.groovy', name: 'groovy', version: '5.0.2' + implementation group: 'org.springframework', name: 'spring-context', version: '6.2.12' + implementation group: 'de.siegmar', name: 'fastcsv', version: '4.1.0' + implementation group: 'commons-validator', name: 'commons-validator', version: '1.10.0' + implementation group: 'de.jensd', name: 'fontawesomefx-commons', version: '9.1.2' + implementation group: 'de.jensd', name: 'fontawesomefx-fontawesome', version: '4.7.0-9.1.2' + implementation group: 'de.jensd', name: 'fontawesomefx-materialdesignfont', version: '2.0.26-9.1.2' + implementation group: 'de.jensd', name: 'fontawesomefx-materialicons', version: '2.2.0-9.1.2' + implementation group: 'org.controlsfx', name: 'controlsfx', version: '11.2.2' + implementation group: 'com.google.code.gson', name: 'gson', version: '2.13.2' + implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.25.2' + implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.25.2' + implementation group: 'org.fxmisc.richtext', name: 'richtextfx', version: '0.11.6' } @@ -48,5 +55,9 @@ test { } group 'ninja.javafx' -version '1.4.0' -mainClassName = 'ninja.javafx.smartcsv.Main' +version '1.5.0' + +application { + mainClass = 'ninja.javafx.smartcsv.Main' + applicationDefaultJvmArgs = ["--enable-native-access=javafx.graphics"] +} diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ffed3a2..d706aba 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/java/ninja/javafx/smartcsv/csv/CSVFileReader.java b/src/main/java/ninja/javafx/smartcsv/csv/CSVFileReader.java index 6108537..5cffa7d 100644 --- a/src/main/java/ninja/javafx/smartcsv/csv/CSVFileReader.java +++ b/src/main/java/ninja/javafx/smartcsv/csv/CSVFileReader.java @@ -26,7 +26,8 @@ package ninja.javafx.smartcsv.csv; -import de.siegmar.fastcsv.reader.NamedCsvReader; +import de.siegmar.fastcsv.reader.CsvReader; +import de.siegmar.fastcsv.reader.NamedCsvRecord; import ninja.javafx.smartcsv.FileReader; import ninja.javafx.smartcsv.fx.table.model.CSVModel; @@ -49,7 +50,13 @@ public class CSVFileReader extends CSVConfigurable implements FileReader { @@ -66,14 +73,14 @@ public class CSVFileReader extends CSVConfigurable implements FileReader getNamedCsvReader(File file) throws IOException { + var builder = CsvReader.builder() .fieldSeparator(csvPreference.delimiterChar()); if (csvPreference.quoteChar() != null) { builder.quoteCharacter(csvPreference.quoteChar()); } - return builder.build(file.toPath(), Charset.forName(fileEncoding)); + return builder.ofNamedCsvRecord(file.toPath(), Charset.forName(fileEncoding)); } public CSVModel getContent() { diff --git a/src/main/java/ninja/javafx/smartcsv/csv/CSVFileWriter.java b/src/main/java/ninja/javafx/smartcsv/csv/CSVFileWriter.java index 4ee71cb..fc69aff 100644 --- a/src/main/java/ninja/javafx/smartcsv/csv/CSVFileWriter.java +++ b/src/main/java/ninja/javafx/smartcsv/csv/CSVFileWriter.java @@ -27,7 +27,7 @@ package ninja.javafx.smartcsv.csv; import de.siegmar.fastcsv.writer.CsvWriter; -import de.siegmar.fastcsv.writer.QuoteStrategy; +import de.siegmar.fastcsv.writer.QuoteStrategies; import ninja.javafx.smartcsv.fx.table.model.CSVModel; import ninja.javafx.smartcsv.fx.table.model.CSVRow; @@ -52,9 +52,9 @@ public class CSVFileWriter extends CSVConfigurable implements ninja.javafx.smart @Override public void write(File filename) throws IOException { try (var writer = getCsvWriter(filename)){ - writer.writeRow(model.getHeader()); + writer.writeRecord(model.getHeader()); for(CSVRow row: model.getRows()) { - writer.writeRow(convertMapFromModel(row)); + writer.writeRecord(convertMapFromModel(row)); } } } @@ -63,7 +63,7 @@ public class CSVFileWriter extends CSVConfigurable implements ninja.javafx.smart var writer = CsvWriter.builder().fieldSeparator(csvPreference.delimiterChar()); if (csvPreference.quoteChar() != null) { writer.quoteCharacter(csvPreference.quoteChar()); - writer.quoteStrategy(QuoteStrategy.ALWAYS); + writer.quoteStrategy(QuoteStrategies.ALWAYS); } return writer.build(filename.toPath(), Charset.forName(fileEncoding));