mirror of
https://github.com/frosch95/SmartCSV.fx.git
synced 2026-04-11 13:38:23 +02:00
Compare commits
32 Commits
0.9.3
...
dark_theme
| Author | SHA1 | Date | |
|---|---|---|---|
| 355c9d3ce4 | |||
| 8cecca2172 | |||
|
|
35f395d44a | ||
|
|
9961373d76 | ||
|
|
fd6938fa80 | ||
|
|
78f3f5909e | ||
|
|
d572dcdeed | ||
| af6ce56f71 | |||
| 2f692352b7 | |||
| 5b59c76200 | |||
| 7e40daa1e5 | |||
| 2da843e1e2 | |||
| d1ffd09941 | |||
|
|
4c29d29bf5 | ||
|
|
c4f91d94f1 | ||
| 8c43c5a1de | |||
| 187002997c | |||
| aa7e38c613 | |||
| 13a41468d4 | |||
| f41979960b | |||
| a7fce854ca | |||
| 4f40418aea | |||
| d7c821d1fe | |||
|
|
49f8003f97 | ||
|
|
5f8383c6a1 | ||
| 03dcf20229 | |||
| 543125812a | |||
| c52f6c0bc8 | |||
| 422bd73bad | |||
| e6672834fb | |||
| 8e0ea66552 | |||
|
|
bf476308a2 |
21
.github/workflows/build-and-test.yml
vendored
Normal file
21
.github/workflows/build-and-test.yml
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
name: Build and Test with Gradle
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up JDK 17
|
||||||
|
uses: actions/setup-java@v1
|
||||||
|
with:
|
||||||
|
java-version: 17
|
||||||
|
- name: Grant execute permission for gradlew
|
||||||
|
run: chmod +x gradlew
|
||||||
|
- name: Build with Gradle
|
||||||
|
run: ./gradlew build
|
||||||
|
- name: Test with Gradle
|
||||||
|
run: ./gradlew test
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
# SmartCSV.fx
|
# SmartCSV.fx
|
||||||
|
    
|
||||||
## Description
|
## Description
|
||||||
A simple JavaFX application to load, save and edit a CSV file and provide a [JSON Table Schema](http://specs.frictionlessdata.io/json-table-schema/) for columns to check the values in the columns.
|
A simple JavaFX application to load, save and edit a CSV file and provide a [JSON Table Schema](http://specs.frictionlessdata.io/json-table-schema/) for columns to check the values in the columns.
|
||||||
|
|
||||||
@@ -14,7 +15,7 @@ even in a "normal" CSV editor. So I decided to write this simple JavaFX applicat
|
|||||||
|
|
||||||
[Wiki & Documentation](https://github.com/frosch95/SmartCSV.fx/wiki)
|
[Wiki & Documentation](https://github.com/frosch95/SmartCSV.fx/wiki)
|
||||||
|
|
||||||
binary distribution of the [latest release (0.9.2)](https://github.com/frosch95/SmartCSV.fx/releases/download/0.9.2/SmartCSV.fx-0.9.2-SNAPSHOT.zip)
|
binary distribution of the [latest release (1.0.1)](https://github.com/frosch95/SmartCSV.fx/releases/download/1.0.1/SmartCSV.fx-1.0.1.zip)
|
||||||
|
|
||||||
## Talks
|
## Talks
|
||||||
[Introduction](http://javafx.ninja/talks/introduction/)
|
[Introduction](http://javafx.ninja/talks/introduction/)
|
||||||
@@ -23,7 +24,7 @@ binary distribution of the [latest release (0.9.2)](https://github.com/frosch95/
|
|||||||
### The MIT License (MIT)
|
### The MIT License (MIT)
|
||||||
|
|
||||||
|
|
||||||
Copyright (c) 2015-2019 Andreas Billmann <andreas.billmann@javafx.ninja>
|
Copyright (c) 2015-2020 Andreas Billmann <andreas.billmann@javafx.ninja>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
44
build.gradle
44
build.gradle
@@ -11,29 +11,39 @@ repositories {
|
|||||||
jcenter()
|
jcenter()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
apply plugin: 'java'
|
||||||
|
sourceCompatibility = 17
|
||||||
|
targetCompatibility = 17
|
||||||
|
|
||||||
javafx {
|
javafx {
|
||||||
version = "13"
|
|
||||||
modules = [ 'javafx.controls', 'javafx.fxml' ]
|
modules = [ 'javafx.controls', 'javafx.fxml' ]
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
testCompile group: 'junit', name: 'junit', version: '4.12'
|
// https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api
|
||||||
testCompile group: 'org.hamcrest', name: 'hamcrest-library', version: '1.3'
|
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.2'
|
||||||
compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '3.0.0-beta-3'
|
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '5.5.2'
|
||||||
compile group: 'org.springframework', name:'spring-context', version: '5.2.0.RELEASE'
|
testImplementation group: 'org.hamcrest', name: 'hamcrest-library', version: '2.2'
|
||||||
compile group: 'net.sf.supercsv', name: 'super-csv', version: '2.4.0'
|
testImplementation group: 'org.mockito', name: 'mockito-core', version:'3.1.0'
|
||||||
compile group: 'commons-validator', name: 'commons-validator', version: '1.6'
|
implementation group: 'org.codehaus.groovy', name: 'groovy-all', version: '3.0.6'
|
||||||
compile group: 'de.jensd', name: 'fontawesomefx-commons', version: '11.0'
|
implementation group: 'org.springframework', name:'spring-context', version: '5.3.10'
|
||||||
compile group: 'de.jensd', name: 'fontawesomefx-fontawesome', version: '4.7.0-11'
|
implementation group: 'net.sf.supercsv', name: 'super-csv', version: '2.4.0'
|
||||||
compile group: 'de.jensd', name: 'fontawesomefx-materialdesignfont', version: '1.7.22-11'
|
implementation group: 'commons-validator', name: 'commons-validator', version: '1.7'
|
||||||
compile group: 'de.jensd', name: 'fontawesomefx-materialicons', version: '2.2.0-11'
|
implementation group: 'de.jensd', name: 'fontawesomefx-commons', version: '11.0'
|
||||||
compile group: 'org.controlsfx', name: 'controlsfx', version: '11.0.0'
|
implementation group: 'de.jensd', name: 'fontawesomefx-fontawesome', version: '4.7.0-11'
|
||||||
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.5'
|
implementation group: 'de.jensd', name: 'fontawesomefx-materialdesignfont', version: '1.7.22-11'
|
||||||
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.0'
|
implementation group: 'de.jensd', name: 'fontawesomefx-materialicons', version: '2.2.0-11'
|
||||||
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.11.0'
|
implementation group: 'org.controlsfx', name: 'controlsfx', version: '11.0.2'
|
||||||
compile group: 'org.fxmisc.richtext', name: 'richtextfx', version: '0.10.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'
|
||||||
|
}
|
||||||
|
|
||||||
|
test {
|
||||||
|
useJUnitPlatform()
|
||||||
}
|
}
|
||||||
|
|
||||||
group 'ninja.javafx'
|
group 'ninja.javafx'
|
||||||
version '0.9.2-SNAPSHOT'
|
version '1.0.1'
|
||||||
mainClassName = 'ninja.javafx.smartcsv.Main'
|
mainClassName = 'ninja.javafx.smartcsv.Main'
|
||||||
|
|||||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,5 +1,5 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -1,3 +1,29 @@
|
|||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Copyright (c) 2015-2019 javafx.ninja <info@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
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
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;
|
package ninja.javafx.smartcsv;
|
||||||
|
|
||||||
import ninja.javafx.smartcsv.fx.SmartCSV;
|
import ninja.javafx.smartcsv.fx.SmartCSV;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -29,6 +29,7 @@ package ninja.javafx.smartcsv.csv;
|
|||||||
import ninja.javafx.smartcsv.FileReader;
|
import ninja.javafx.smartcsv.FileReader;
|
||||||
import ninja.javafx.smartcsv.fx.table.model.CSVModel;
|
import ninja.javafx.smartcsv.fx.table.model.CSVModel;
|
||||||
import ninja.javafx.smartcsv.fx.table.model.CSVRow;
|
import ninja.javafx.smartcsv.fx.table.model.CSVRow;
|
||||||
|
import org.supercsv.exception.SuperCsvException;
|
||||||
import org.supercsv.io.CsvMapReader;
|
import org.supercsv.io.CsvMapReader;
|
||||||
import org.supercsv.io.ICsvMapReader;
|
import org.supercsv.io.ICsvMapReader;
|
||||||
|
|
||||||
@@ -47,10 +48,8 @@ public class CSVFileReader extends CSVConfigurable implements FileReader<CSVMode
|
|||||||
@Override
|
@Override
|
||||||
public void read(File file) throws IOException {
|
public void read(File file) throws IOException {
|
||||||
|
|
||||||
ICsvMapReader mapReader = null;
|
try (ICsvMapReader mapReader = new CsvMapReader(new java.io.FileReader(file.getAbsoluteFile(), Charset.forName(fileEncoding)),
|
||||||
try {
|
csvPreference)) {
|
||||||
mapReader = new CsvMapReader(new java.io.FileReader(file.getAbsoluteFile(), Charset.forName(fileEncoding)),
|
|
||||||
csvPreference);
|
|
||||||
model = new CSVModel();
|
model = new CSVModel();
|
||||||
|
|
||||||
// the header columns are used as the keys to the Map
|
// the header columns are used as the keys to the Map
|
||||||
@@ -64,11 +63,10 @@ public class CSVFileReader extends CSVConfigurable implements FileReader<CSVMode
|
|||||||
model.addValue(row, column, customerMap.get(column));
|
model.addValue(row, column, customerMap.get(column));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (IOException | SuperCsvException ex) {
|
||||||
} finally {
|
// TODO perhaps a custom NinjaException that can properly identify and localize the exception message
|
||||||
if (mapReader != null) {
|
// is this a file not found? is this a corrupt csv? etc
|
||||||
mapReader.close();
|
throw new IOException("Failed to read " + file + ": " + ex.getMessage(), ex);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -1,9 +1,34 @@
|
|||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Copyright (c) 2015-2019 javafx.ninja <info@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
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
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.export;
|
package ninja.javafx.smartcsv.export;
|
||||||
|
|
||||||
import javafx.concurrent.Service;
|
import javafx.concurrent.Service;
|
||||||
import javafx.concurrent.Task;
|
import javafx.concurrent.Task;
|
||||||
import ninja.javafx.smartcsv.fx.table.model.CSVModel;
|
import ninja.javafx.smartcsv.fx.table.model.CSVModel;
|
||||||
import ninja.javafx.smartcsv.validation.ValidationError;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
|
|||||||
@@ -1,3 +1,29 @@
|
|||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Copyright (c) 2015-2019 javafx.ninja <info@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
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
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.files;
|
package ninja.javafx.smartcsv.files;
|
||||||
|
|
||||||
import javafx.beans.property.BooleanProperty;
|
import javafx.beans.property.BooleanProperty;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -30,6 +30,7 @@ import javafx.application.Application;
|
|||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.scene.Parent;
|
import javafx.scene.Parent;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
|
import javafx.scene.image.Image;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import ninja.javafx.smartcsv.fx.about.AboutController;
|
import ninja.javafx.smartcsv.fx.about.AboutController;
|
||||||
import org.springframework.context.annotation.*;
|
import org.springframework.context.annotation.*;
|
||||||
@@ -84,9 +85,13 @@ public class SmartCSV extends Application {
|
|||||||
private void showUI(Stage primaryStage, String name, String version) {
|
private void showUI(Stage primaryStage, String name, String version) {
|
||||||
SmartCSVController smartCVSController = appContext.getBean(SmartCSVController.class);
|
SmartCSVController smartCVSController = appContext.getBean(SmartCSVController.class);
|
||||||
Scene scene = new Scene((Parent) smartCVSController.getView());
|
Scene scene = new Scene((Parent) smartCVSController.getView());
|
||||||
|
var darkThemeCss = scene.getRoot().getStylesheets().get(0);
|
||||||
|
scene.getRoot().getStylesheets().remove(darkThemeCss);
|
||||||
|
scene.getRoot().getStylesheets().add(darkThemeCss);
|
||||||
|
|
||||||
primaryStage.setScene(scene);
|
primaryStage.setScene(scene);
|
||||||
primaryStage.setTitle(String.format("%s %s", name, version));
|
primaryStage.setTitle(String.format("%s %s", name, version));
|
||||||
|
primaryStage.getIcons().add(new Image(SmartCSV.class.getResourceAsStream("/ninja/javafx/smartcsv/icon/logo.png")));
|
||||||
primaryStage.show();
|
primaryStage.show();
|
||||||
primaryStage.setMaximized(true);
|
primaryStage.setMaximized(true);
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
package ninja.javafx.smartcsv.fx;
|
package ninja.javafx.smartcsv.fx;
|
||||||
|
|
||||||
|
import javafx.beans.InvalidationListener;
|
||||||
import javafx.beans.binding.Bindings;
|
import javafx.beans.binding.Bindings;
|
||||||
import javafx.collections.ListChangeListener;
|
import javafx.collections.ListChangeListener;
|
||||||
import javafx.collections.WeakListChangeListener;
|
import javafx.collections.WeakListChangeListener;
|
||||||
@@ -51,14 +52,15 @@ import ninja.javafx.smartcsv.fx.table.ValidationCellFactory;
|
|||||||
import ninja.javafx.smartcsv.fx.table.model.CSVModel;
|
import ninja.javafx.smartcsv.fx.table.model.CSVModel;
|
||||||
import ninja.javafx.smartcsv.fx.table.model.CSVRow;
|
import ninja.javafx.smartcsv.fx.table.model.CSVRow;
|
||||||
import ninja.javafx.smartcsv.fx.table.model.CSVValue;
|
import ninja.javafx.smartcsv.fx.table.model.CSVValue;
|
||||||
|
import ninja.javafx.smartcsv.fx.util.JavaFxUtils;
|
||||||
import ninja.javafx.smartcsv.fx.util.LoadFileService;
|
import ninja.javafx.smartcsv.fx.util.LoadFileService;
|
||||||
import ninja.javafx.smartcsv.fx.util.SaveFileService;
|
import ninja.javafx.smartcsv.fx.util.SaveFileService;
|
||||||
import ninja.javafx.smartcsv.fx.validation.ValidationEditorController;
|
import ninja.javafx.smartcsv.fx.validation.ValidationEditorController;
|
||||||
import ninja.javafx.smartcsv.preferences.*;
|
import ninja.javafx.smartcsv.preferences.*;
|
||||||
import ninja.javafx.smartcsv.validation.configuration.ValidationConfiguration;
|
|
||||||
import ninja.javafx.smartcsv.validation.ValidationError;
|
import ninja.javafx.smartcsv.validation.ValidationError;
|
||||||
import ninja.javafx.smartcsv.validation.ValidationFileReader;
|
import ninja.javafx.smartcsv.validation.ValidationFileReader;
|
||||||
import ninja.javafx.smartcsv.validation.ValidationFileWriter;
|
import ninja.javafx.smartcsv.validation.ValidationFileWriter;
|
||||||
|
import ninja.javafx.smartcsv.validation.configuration.ValidationConfiguration;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@@ -84,6 +86,7 @@ import static javafx.scene.layout.AnchorPane.*;
|
|||||||
@Component
|
@Component
|
||||||
public class SmartCSVController extends FXMLController {
|
public class SmartCSVController extends FXMLController {
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// constants
|
// constants
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
@@ -594,8 +597,9 @@ public class SmartCSVController extends FXMLController {
|
|||||||
//Show open file dialog
|
//Show open file dialog
|
||||||
File file = fileChooser.showOpenDialog(applicationPane.getScene().getWindow());
|
File file = fileChooser.showOpenDialog(applicationPane.getScene().getWindow());
|
||||||
if (file != null) {
|
if (file != null) {
|
||||||
|
File previousFile = storageFile.getFile();
|
||||||
storageFile.setFile(file);
|
storageFile.setFile(file);
|
||||||
useLoadFileService(storageFile, t -> resetContent());
|
useLoadFileService(storageFile, t -> resetContent(), () -> storageFile.setFile(previousFile));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -624,13 +628,20 @@ public class SmartCSVController extends FXMLController {
|
|||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void useLoadFileService(FileStorage fileStorage, EventHandler<WorkerStateEvent> onSucceededHandler) {
|
private void useLoadFileService(FileStorage<?> fileStorage, EventHandler<WorkerStateEvent> onSucceededHandler) {
|
||||||
|
useLoadFileService(fileStorage, onSucceededHandler, () -> {
|
||||||
|
// nothing to rollback
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void useLoadFileService(FileStorage<?> fileStorage, EventHandler<WorkerStateEvent> onSucceededHandler, Runnable rollbackAction) {
|
||||||
loadFileService.setFileStorage(fileStorage);
|
loadFileService.setFileStorage(fileStorage);
|
||||||
loadFileService.restart();
|
loadFileService.restart();
|
||||||
loadFileService.setOnSucceeded(onSucceededHandler);
|
loadFileService.setOnSucceeded(onSucceededHandler);
|
||||||
|
loadFileService.setOnFailed(event -> JavaFxUtils.onServiceError(event, "LoadFileService Error", "Failed to load the file.", rollbackAction));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void useSaveFileService(FileStorage fileStorage) {
|
private void useSaveFileService(FileStorage<?> fileStorage) {
|
||||||
saveFileService.setFileStorage(fileStorage);
|
saveFileService.setFileStorage(fileStorage);
|
||||||
saveFileService.restart();
|
saveFileService.restart();
|
||||||
saveFileService.setOnSucceeded(t -> resetContent());
|
saveFileService.setOnSucceeded(t -> resetContent());
|
||||||
@@ -656,6 +667,10 @@ public class SmartCSVController extends FXMLController {
|
|||||||
addColumn(column, tableView);
|
addColumn(column, tableView);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tableView.getColumns().addListener(
|
||||||
|
(InvalidationListener) observable -> currentCsvFile.getContent().setHeader(
|
||||||
|
tableView.getColumns().stream().map((x) -> x.getText()).toArray(String[]::new)));
|
||||||
|
|
||||||
tableView.getItems().setAll(currentCsvFile.getContent().getRows());
|
tableView.getItems().setAll(currentCsvFile.getContent().getRows());
|
||||||
tableView.setEditable(true);
|
tableView.setEditable(true);
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -1,3 +1,29 @@
|
|||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Copyright (c) 2015-2019 javafx.ninja <info@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
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
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.fx.list;
|
package ninja.javafx.smartcsv.fx.list;
|
||||||
|
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
@@ -9,9 +35,6 @@ import javafx.scene.layout.Region;
|
|||||||
|
|
||||||
import java.util.function.UnaryOperator;
|
import java.util.function.UnaryOperator;
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by abi on 05.08.2016.
|
|
||||||
*/
|
|
||||||
public class GotoLineDialog extends Dialog<Integer> {
|
public class GotoLineDialog extends Dialog<Integer> {
|
||||||
|
|
||||||
private final GridPane grid;
|
private final GridPane grid;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -125,7 +125,7 @@ public class EditableValidationCell extends TableCell<CSVRow, CSVValue> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ValueTextField extends TextField {
|
private static class ValueTextField extends TextField {
|
||||||
private CSVValue value;
|
private CSVValue value;
|
||||||
|
|
||||||
public ValueTextField(CSVValue value) {
|
public ValueTextField(CSVValue value) {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -47,7 +47,6 @@ public class ObservableMapValueFactory implements
|
|||||||
@Override
|
@Override
|
||||||
public ObjectProperty<CSVValue> call(TableColumn.CellDataFeatures<CSVRow, CSVValue> features) {
|
public ObjectProperty<CSVValue> call(TableColumn.CellDataFeatures<CSVRow, CSVValue> features) {
|
||||||
CSVRow row = features.getValue();
|
CSVRow row = features.getValue();
|
||||||
ObjectProperty<CSVValue> value = row.getColumns().get(key);
|
return row.getColumns().get(key);
|
||||||
return value;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -1,3 +1,29 @@
|
|||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Copyright (c) 2015-2019 javafx.ninja <info@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
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
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.fx.table.model;
|
package ninja.javafx.smartcsv.fx.table.model;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
73
src/main/java/ninja/javafx/smartcsv/fx/util/JavaFxUtils.java
Normal file
73
src/main/java/ninja/javafx/smartcsv/fx/util/JavaFxUtils.java
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Copyright (c) 2021 javafx.ninja <info@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
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
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.fx.util;
|
||||||
|
|
||||||
|
import javafx.concurrent.Worker;
|
||||||
|
import javafx.concurrent.WorkerStateEvent;
|
||||||
|
import javafx.scene.control.Alert;
|
||||||
|
import ninja.javafx.smartcsv.fx.SmartCSVController;
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class helps extract useful messages from exceptions
|
||||||
|
* TODO: make I18n maybe?
|
||||||
|
*/
|
||||||
|
public final class JavaFxUtils {
|
||||||
|
|
||||||
|
private static final Logger logger = LogManager.getLogger(SmartCSVController.class);
|
||||||
|
|
||||||
|
private JavaFxUtils() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void onServiceError(WorkerStateEvent event, String windowTitle, String errorHeader) {
|
||||||
|
onServiceError(event, windowTitle, errorHeader, () -> {
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void onServiceError(WorkerStateEvent event, String windowTitle, String errorHeader, Runnable rollbackAction) {
|
||||||
|
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||||
|
alert.setTitle(windowTitle);
|
||||||
|
alert.setHeaderText(errorHeader);
|
||||||
|
alert.setContentText(findExceptionMessage(event.getSource()));
|
||||||
|
alert.showAndWait();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String findExceptionMessage(Worker<?> source) {
|
||||||
|
if (source == null) {
|
||||||
|
return "Cannot identify the source of the event!";
|
||||||
|
} else if (source.getException() == null) {
|
||||||
|
return "The event did not have an exception?";
|
||||||
|
}
|
||||||
|
Throwable exception = source.getException();
|
||||||
|
logger.error("Error in " + source.getClass().getSimpleName(), exception);
|
||||||
|
if (exception.getMessage() == null) {
|
||||||
|
return "Exception of type " + exception.getClass() + " had no message, check the logs.";
|
||||||
|
}
|
||||||
|
return exception.getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -34,17 +34,17 @@ import ninja.javafx.smartcsv.files.FileStorage;
|
|||||||
* Service class for async load of a csv file
|
* Service class for async load of a csv file
|
||||||
*/
|
*/
|
||||||
@org.springframework.stereotype.Service
|
@org.springframework.stereotype.Service
|
||||||
public class LoadFileService extends Service {
|
public class LoadFileService extends Service<Void> {
|
||||||
|
|
||||||
private FileStorage file;
|
private FileStorage<?> file;
|
||||||
|
|
||||||
public void setFileStorage(FileStorage file) {
|
public void setFileStorage(FileStorage<?> file) {
|
||||||
this.file = file;
|
this.file = file;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Task createTask() {
|
protected Task<Void> createTask() {
|
||||||
return new Task() {
|
return new Task<>() {
|
||||||
@Override
|
@Override
|
||||||
protected Void call() throws Exception {
|
protected Void call() throws Exception {
|
||||||
if (file != null) {
|
if (file != null) {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -31,22 +31,22 @@ import javafx.concurrent.Task;
|
|||||||
import ninja.javafx.smartcsv.files.FileStorage;
|
import ninja.javafx.smartcsv.files.FileStorage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service class for async load of a csv file
|
* Service class for async save of a csv file
|
||||||
*/
|
*/
|
||||||
@org.springframework.stereotype.Service
|
@org.springframework.stereotype.Service
|
||||||
public class SaveFileService extends Service {
|
public class SaveFileService extends Service<Void> {
|
||||||
|
|
||||||
private FileStorage file;
|
private FileStorage<?> file;
|
||||||
|
|
||||||
public void setFileStorage(FileStorage value) {
|
public void setFileStorage(FileStorage<?> value) {
|
||||||
file = value;
|
file = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Task createTask() {
|
protected Task<Void> createTask() {
|
||||||
return new Task() {
|
return new Task<>() {
|
||||||
@Override
|
@Override
|
||||||
protected Void call() throws Exception {
|
protected Void call() {
|
||||||
try {
|
try {
|
||||||
file.save();
|
file.save();
|
||||||
} catch (Throwable ex) {
|
} catch (Throwable ex) {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -43,7 +43,6 @@ import static ninja.javafx.smartcsv.preferences.QuoteModeHelper.getQuoteMode;
|
|||||||
*/
|
*/
|
||||||
public class PreferencesFileReader implements FileReader<CsvPreference> {
|
public class PreferencesFileReader implements FileReader<CsvPreference> {
|
||||||
|
|
||||||
private Map config;
|
|
||||||
private CsvPreference csvPreference;
|
private CsvPreference csvPreference;
|
||||||
|
|
||||||
public PreferencesFileReader() {
|
public PreferencesFileReader() {
|
||||||
@@ -54,14 +53,14 @@ public class PreferencesFileReader implements FileReader<CsvPreference> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void read(File filename) throws IOException {
|
public void read(File filename) throws IOException {
|
||||||
config = new GsonBuilder().create().fromJson(new java.io.FileReader(filename), HashMap.class);
|
Map config = new GsonBuilder().create().fromJson(new java.io.FileReader(filename), HashMap.class);
|
||||||
|
|
||||||
if (config != null) {
|
if (config != null) {
|
||||||
char quoteChar = config.get("quoteChar").toString().charAt(0);
|
char quoteChar = config.get("quoteChar").toString().charAt(0);
|
||||||
char delimiterChar = config.get("delimiterChar").toString().charAt(0);
|
char delimiterChar = config.get("delimiterChar").toString().charAt(0);
|
||||||
String endOfLineSymbols = config.get("endOfLineSymbols").toString();
|
String endOfLineSymbols = config.get("endOfLineSymbols").toString();
|
||||||
boolean surroundingSpacesNeedQuotes = (Boolean)config.get("surroundingSpacesNeedQuotes");
|
boolean surroundingSpacesNeedQuotes = (Boolean) config.get("surroundingSpacesNeedQuotes");
|
||||||
boolean ignoreEmptyLines = (Boolean)config.get("ignoreEmptyLines");
|
boolean ignoreEmptyLines = (Boolean) config.get("ignoreEmptyLines");
|
||||||
String quoteMode = config.get("quoteMode").toString();
|
String quoteMode = config.get("quoteMode").toString();
|
||||||
|
|
||||||
csvPreference = new CsvPreference.Builder(quoteChar, delimiterChar, endOfLineSymbols)
|
csvPreference = new CsvPreference.Builder(quoteChar, delimiterChar, endOfLineSymbols)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -37,11 +37,11 @@ import org.codehaus.groovy.control.CompilationFailedException;
|
|||||||
public class GroovyValidation extends EmptyValueIsValid {
|
public class GroovyValidation extends EmptyValueIsValid {
|
||||||
|
|
||||||
private String groovyScript;
|
private String groovyScript;
|
||||||
private GroovyShell shell = new GroovyShell();
|
|
||||||
private Script script;
|
private Script script;
|
||||||
|
|
||||||
public GroovyValidation(String groovyScript) {
|
public GroovyValidation(String groovyScript) {
|
||||||
this.groovyScript = groovyScript;
|
this.groovyScript = groovyScript;
|
||||||
|
GroovyShell shell = new GroovyShell();
|
||||||
script = shell.parse(groovyScript);
|
script = shell.parse(groovyScript);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -34,6 +34,7 @@ import java.util.UUID;
|
|||||||
*/
|
*/
|
||||||
public class UuidValidation extends EmptyValueIsValid {
|
public class UuidValidation extends EmptyValueIsValid {
|
||||||
|
|
||||||
|
@SuppressWarnings("ResultOfMethodCallIgnored")
|
||||||
@Override
|
@Override
|
||||||
public void check(int row, String value, ValidationError error) {
|
public void check(int row, String value, ValidationError error) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
</Label>
|
</Label>
|
||||||
<Label text="AOE Takashi (https://github.com/aoetk)" />
|
<Label text="AOE Takashi (https://github.com/aoetk)" />
|
||||||
<Label text="Hasan Kara (https://github.com/haisi)" />
|
<Label text="Hasan Kara (https://github.com/haisi)" />
|
||||||
|
<Label text="apixandru (https://github.com/apixandru)" />
|
||||||
<Label text="3rd party software">
|
<Label text="3rd party software">
|
||||||
<VBox.margin>
|
<VBox.margin>
|
||||||
<Insets top="8.0" />
|
<Insets top="8.0" />
|
||||||
@@ -89,7 +90,7 @@
|
|||||||
<Font size="18.0" />
|
<Font size="18.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<TextArea editable="false" prefHeight="200.0" prefWidth="200.0" text="Copyright (c) 2015-2019 Andreas Billmann <andreas.billmann@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 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 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." wrapText="true" />
|
<TextArea editable="false" prefHeight="200.0" prefWidth="200.0" text="Copyright (c) 2015-2021 Andreas Billmann <andreas.billmann@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 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 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." wrapText="true" />
|
||||||
</children>
|
</children>
|
||||||
<opaqueInsets>
|
<opaqueInsets>
|
||||||
<Insets />
|
<Insets />
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
application.name = SmartCSV.fx
|
application.name = SmartCSV.fx
|
||||||
application.version = 0.9.1
|
application.version = 1.0.0
|
||||||
|
|
||||||
# fxml views
|
# fxml views
|
||||||
fxml.smartcvs.view = /ninja/javafx/smartcsv/fx/smartcsv.fxml
|
fxml.smartcvs.view = /ninja/javafx/smartcsv/fx/smartcsv.fxml
|
||||||
|
|||||||
34
src/main/resources/ninja/javafx/smartcsv/fx/dark-theme.css
Normal file
34
src/main/resources/ninja/javafx/smartcsv/fx/dark-theme.css
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
.root {
|
||||||
|
-fx-base: rgb(39, 40, 40);
|
||||||
|
-fx-accent: rgb(80, 80, 80);
|
||||||
|
-fx-default-button: rgb(39, 40, 40);
|
||||||
|
-fx-focus-color: rgb(80, 80, 80);
|
||||||
|
-fx-faint-focus-color: #efefef22;
|
||||||
|
-fx-focused-text-base-color : ladder(
|
||||||
|
-fx-selection-bar,
|
||||||
|
-fx-light-text-color 45%,
|
||||||
|
-fx-dark-text-color 46%,
|
||||||
|
-fx-dark-text-color 59%,
|
||||||
|
-fx-mid-text-color 60%
|
||||||
|
);
|
||||||
|
-fx-focused-mark-color : -fx-focused-text-base-color ;
|
||||||
|
-fx-control-inner-background: rgb(39, 40, 40);
|
||||||
|
-fx-control-inner-background-alt: rgb(20, 20, 20);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.table-row-cell:selected {
|
||||||
|
-fx-background-color: rgb(80, 80, 80);
|
||||||
|
}
|
||||||
|
.table-row-cell {
|
||||||
|
-fx-background-color: #81c483;
|
||||||
|
}
|
||||||
|
.text-input:focused {
|
||||||
|
-fx-highlight-text-fill: ladder(
|
||||||
|
-fx-highlight-fill,
|
||||||
|
-fx-light-text-color 45%,
|
||||||
|
-fx-dark-text-color 46%,
|
||||||
|
-fx-dark-text-color 59%,
|
||||||
|
-fx-mid-text-color 60%
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -266,6 +266,7 @@
|
|||||||
<left>
|
<left>
|
||||||
</left>
|
</left>
|
||||||
<stylesheets>
|
<stylesheets>
|
||||||
|
<URL value="@/ninja/javafx/smartcsv/fx/dark-theme.css" />
|
||||||
<URL value="@/ninja/javafx/smartcsv/fx/smartcsv.css" />
|
<URL value="@/ninja/javafx/smartcsv/fx/smartcsv.css" />
|
||||||
</stylesheets>
|
</stylesheets>
|
||||||
<bottom>
|
<bottom>
|
||||||
|
|||||||
BIN
src/main/resources/ninja/javafx/smartcsv/icon/logo.afdesign
Normal file
BIN
src/main/resources/ninja/javafx/smartcsv/icon/logo.afdesign
Normal file
Binary file not shown.
BIN
src/main/resources/ninja/javafx/smartcsv/icon/logo.png
Normal file
BIN
src/main/resources/ninja/javafx/smartcsv/icon/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 750 B |
BIN
src/main/resources/ninja/javafx/smartcsv/icon/logo_256x256.png
Normal file
BIN
src/main/resources/ninja/javafx/smartcsv/icon/logo_256x256.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.1 KiB |
BIN
src/main/resources/ninja/javafx/smartcsv/icon/logo_32x32.png
Normal file
BIN
src/main/resources/ninja/javafx/smartcsv/icon/logo_32x32.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.0 KiB |
BIN
src/main/resources/ninja/javafx/smartcsv/icon/logo_64x64.png
Normal file
BIN
src/main/resources/ninja/javafx/smartcsv/icon/logo_64x64.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
109
src/test/java/ninja/javafx/smartcsv/files/FileStorageTest.java
Normal file
109
src/test/java/ninja/javafx/smartcsv/files/FileStorageTest.java
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
package ninja.javafx.smartcsv.files;
|
||||||
|
|
||||||
|
import ninja.javafx.smartcsv.FileReader;
|
||||||
|
import ninja.javafx.smartcsv.FileWriter;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
|
import static org.hamcrest.Matchers.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
public class FileStorageTest {
|
||||||
|
|
||||||
|
private FileReader<String> reader;
|
||||||
|
private FileWriter<String> writer;
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// subject under test
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
private FileStorage<String> sut;
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// init
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@BeforeEach
|
||||||
|
public void initialize() {
|
||||||
|
reader = mock(FileReader.class);
|
||||||
|
writer = mock(FileWriter.class);
|
||||||
|
sut = new FileStorage<>(reader, writer);
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// tests
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@Test
|
||||||
|
public void setFile_ShouldStoreFile() {
|
||||||
|
|
||||||
|
// pre execution assertion
|
||||||
|
assertThat("get file returns null", sut.getFile(), nullValue());
|
||||||
|
assertThat("property is null", sut.fileProperty().isNull().get(), equalTo(true));
|
||||||
|
|
||||||
|
// execution
|
||||||
|
final File file = new File("file");
|
||||||
|
sut.setFile(file);
|
||||||
|
|
||||||
|
// assertion
|
||||||
|
assertThat("get file returns the file", sut.getFile(), sameInstance(file));
|
||||||
|
assertThat("property is not null", sut.fileProperty().isNull().get(), equalTo(false));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void load_ShouldReadContentFromReader() throws Exception {
|
||||||
|
// setup
|
||||||
|
final File file = new File("file");
|
||||||
|
sut.setFile(file);
|
||||||
|
when(reader.getContent()).thenReturn("CONTENT");
|
||||||
|
|
||||||
|
// execution
|
||||||
|
sut.load();
|
||||||
|
|
||||||
|
// assertion
|
||||||
|
verify(reader).read(file);
|
||||||
|
assertThat("content is set", sut.getContent(), equalTo("CONTENT"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void load_ShouldResetFileChangedProperty() throws Exception {
|
||||||
|
// setup
|
||||||
|
sut.setFileChanged(true);
|
||||||
|
when(reader.getContent()).thenReturn("CONTENT");
|
||||||
|
|
||||||
|
// execution
|
||||||
|
sut.load();
|
||||||
|
|
||||||
|
// assertion
|
||||||
|
assertThat("file changed is reset", sut.isFileChanged(), equalTo(false));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void save_ShouldWriteContentToWriter() throws Exception {
|
||||||
|
// setup
|
||||||
|
final String content = "CONTENT";
|
||||||
|
sut.setContent(content);
|
||||||
|
final File file = new File("file");
|
||||||
|
sut.setFile(file);
|
||||||
|
|
||||||
|
// execution
|
||||||
|
sut.save();
|
||||||
|
|
||||||
|
// assertion
|
||||||
|
verify(writer).setContent(content);
|
||||||
|
verify(writer).write(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void save_ShouldResetFileChangedProperty() throws Exception {
|
||||||
|
// setup
|
||||||
|
sut.setFileChanged(true);
|
||||||
|
|
||||||
|
// execution
|
||||||
|
sut.save();
|
||||||
|
|
||||||
|
// assertion
|
||||||
|
assertThat("file changed is reset", sut.isFileChanged(), equalTo(false));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
package ninja.javafx.smartcsv.fx.table.model;
|
package ninja.javafx.smartcsv.fx.table.model;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.*;
|
import static org.hamcrest.Matchers.*;
|
||||||
import static org.junit.Assert.assertThat;
|
import static org.junit.Assert.assertThat;
|
||||||
@@ -39,14 +39,13 @@ public class CSVModelTest {
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// constants
|
// constants
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
static final String TESTHEADER = "TESTHEADER";
|
private static final String TESTHEADER = "TESTHEADER";
|
||||||
static final String TESTVALUE = "TESTVALUE";
|
private static final String TESTVALUE = "TESTVALUE";
|
||||||
static final String FILEPATH = "filepath";
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// subject under test
|
// subject under test
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
CSVModel sut = new CSVModel();
|
private CSVModel sut = new CSVModel();
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// tests
|
// tests
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package ninja.javafx.smartcsv.fx.table.model;
|
package ninja.javafx.smartcsv.fx.table.model;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.hasKey;
|
import static org.hamcrest.Matchers.hasKey;
|
||||||
import static org.hamcrest.Matchers.is;
|
import static org.hamcrest.Matchers.is;
|
||||||
@@ -14,13 +14,13 @@ public class CSVRowTest {
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// constants
|
// constants
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
static final String COLUMN = "COLUMN";
|
private static final String COLUMN = "COLUMN";
|
||||||
static final String VALUE = "VALUE";
|
private static final String VALUE = "VALUE";
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// subject under test
|
// subject under test
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
CSVRow sut = new CSVRow();
|
private CSVRow sut = new CSVRow();
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -39,18 +39,19 @@ public class CharsetHelperTest {
|
|||||||
public void getCharsetName_known_charset() {
|
public void getCharsetName_known_charset() {
|
||||||
String result = CharsetHelper.getCharsetName("UTF-16");
|
String result = CharsetHelper.getCharsetName("UTF-16");
|
||||||
assertEquals(StandardCharsets.UTF_16.name(), result);
|
assertEquals(StandardCharsets.UTF_16.name(), result);
|
||||||
|
assertNotEquals(StandardCharsets.UTF_16.name(), Charset.defaultCharset());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getCharsetName_unknown_charset() {
|
public void getCharsetName_unknown_charset() {
|
||||||
String result = CharsetHelper.getCharsetName("foobar");
|
String result = CharsetHelper.getCharsetName("foobar");
|
||||||
assertEquals(StandardCharsets.UTF_8.name(), result);
|
assertEquals(Charset.defaultCharset().name(), result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getCharsetName_null_charset() {
|
public void getCharsetName_null_charset() {
|
||||||
String result = CharsetHelper.getCharsetName(null);
|
String result = CharsetHelper.getCharsetName(null);
|
||||||
assertEquals(StandardCharsets.UTF_8.name(), result);
|
assertEquals(Charset.defaultCharset().name(), result);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2015-2016 javafx.ninja <info@javafx.ninja>
|
Copyright (c) 2015-2019 javafx.ninja <info@javafx.ninja>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -29,17 +29,15 @@ package ninja.javafx.smartcsv.validation;
|
|||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
import ninja.javafx.smartcsv.validation.configuration.ValidationConfiguration;
|
import ninja.javafx.smartcsv.validation.configuration.ValidationConfiguration;
|
||||||
import org.junit.Before;
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.params.provider.Arguments;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.jupiter.params.provider.MethodSource;
|
||||||
import org.junit.runners.Parameterized;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import static java.util.Arrays.asList;
|
import static java.util.Arrays.asList;
|
||||||
import static java.util.Collections.singletonList;
|
import static java.util.Collections.singletonList;
|
||||||
import static java.util.stream.Collectors.joining;
|
|
||||||
import static org.hamcrest.Matchers.is;
|
import static org.hamcrest.Matchers.is;
|
||||||
import static org.junit.Assert.assertThat;
|
import static org.junit.Assert.assertThat;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
@@ -47,50 +45,22 @@ import static org.junit.Assert.assertTrue;
|
|||||||
/**
|
/**
|
||||||
* unit test for header validator
|
* unit test for header validator
|
||||||
*/
|
*/
|
||||||
@RunWith(Parameterized.class)
|
|
||||||
public class HeaderValidationTest {
|
public class HeaderValidationTest {
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// parameters
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
private ValidationConfiguration config;
|
|
||||||
private Boolean expectedResult;
|
|
||||||
private List<ValidationMessage> expectedErrors;
|
|
||||||
private String[] headerNames;
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// subject under test
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
private Validator sut;
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// parameterized constructor
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
public HeaderValidationTest(String configHeaderNames,
|
|
||||||
String[] headerNames,
|
|
||||||
Boolean expectedResult,
|
|
||||||
List<ValidationMessage> expectedErrors) {
|
|
||||||
Gson gson = new GsonBuilder().create();
|
|
||||||
this.config = gson.fromJson(configHeaderNames, ValidationConfiguration.class);
|
|
||||||
this.headerNames = headerNames;
|
|
||||||
this.expectedResult = expectedResult;
|
|
||||||
this.expectedErrors = expectedErrors;
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// init
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
@Before
|
|
||||||
public void initialize() {
|
|
||||||
sut = new Validator(config, new TestColumnValueProvider());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// tests
|
// tests
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
@Test
|
@ParameterizedTest
|
||||||
public void validation() {
|
@MethodSource("validationConfigurations")
|
||||||
|
public void validation(String configHeaderNames,
|
||||||
|
String[] headerNames,
|
||||||
|
Boolean expectedResult,
|
||||||
|
List<ValidationMessage> expectedErrors) {
|
||||||
|
// setup
|
||||||
|
Gson gson = new GsonBuilder().create();
|
||||||
|
ValidationConfiguration config = gson.fromJson(configHeaderNames, ValidationConfiguration.class);
|
||||||
|
Validator sut = new Validator(config, new TestColumnValueProvider());
|
||||||
|
|
||||||
// execution
|
// execution
|
||||||
ValidationError result = sut.isHeaderValid(headerNames);
|
ValidationError result = sut.isHeaderValid(headerNames);
|
||||||
|
|
||||||
@@ -104,17 +74,17 @@ public class HeaderValidationTest {
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// parameters for tests
|
// parameters for tests
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
@Parameterized.Parameters
|
public static Stream<Arguments> validationConfigurations() {
|
||||||
public static Collection validationConfigurations() {
|
return Stream.of(
|
||||||
return asList(new Object[][] {
|
Arguments.of( json(), new String[] {}, true, null ),
|
||||||
{ json(), new String[] {}, true, null },
|
Arguments.of( json("a"), new String[] {"a"}, true, null ),
|
||||||
{ json("a"), new String[] {"a"}, true, null },
|
Arguments.of( json("a"), new String[] {"b"}, false, singletonList(new ValidationMessage("validation.message.header.match", "0", "a", "b"))),
|
||||||
{ json("a"), new String[] {"b"}, false, singletonList(new ValidationMessage("validation.message.header.match", "0", "a", "b"))},
|
Arguments.of( json("a"), new String[] {"a","b"}, false, singletonList(new ValidationMessage("validation.message.header.length", "2", "1"))),
|
||||||
{ json("a"), new String[] {"a","b"}, false, singletonList(new ValidationMessage("validation.message.header.length", "2", "1"))},
|
Arguments.of( json("a", "b"), new String[] {"b", "a"}, false, asList(new ValidationMessage("validation.message.header.match", "0", "a", "b"), new ValidationMessage("validation.message.header.match", "1", "b", "a")) )
|
||||||
{ json("a", "b"), new String[] {"b", "a"}, false, asList(new ValidationMessage("validation.message.header.match", "0", "a", "b"), new ValidationMessage("validation.message.header.match", "1", "b", "a")) }
|
);
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("StringConcatenationInLoop")
|
||||||
public static String json(String... headerNames) {
|
public static String json(String... headerNames) {
|
||||||
|
|
||||||
String json = "{ \"fields\": [";
|
String json = "{ \"fields\": [";
|
||||||
|
|||||||
@@ -3,13 +3,12 @@ package ninja.javafx.smartcsv.validation;
|
|||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
import ninja.javafx.smartcsv.validation.configuration.ValidationConfiguration;
|
import ninja.javafx.smartcsv.validation.configuration.ValidationConfiguration;
|
||||||
import org.junit.Before;
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.params.provider.Arguments;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.jupiter.params.provider.MethodSource;
|
||||||
import org.junit.runners.Parameterized;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import static java.util.Arrays.asList;
|
import static java.util.Arrays.asList;
|
||||||
import static java.util.stream.Collectors.joining;
|
import static java.util.stream.Collectors.joining;
|
||||||
@@ -20,59 +19,21 @@ import static org.junit.Assert.assertThat;
|
|||||||
/**
|
/**
|
||||||
* unit test for validator
|
* unit test for validator
|
||||||
*/
|
*/
|
||||||
@RunWith(Parameterized.class)
|
|
||||||
public class ValidatorTest {
|
public class ValidatorTest {
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// parameters
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
private String config;
|
|
||||||
private String value;
|
|
||||||
private Boolean expectedResult;
|
|
||||||
private ValidationMessage expectedError;
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// subject under test
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
private Validator sut;
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// parameterized constructor
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
public ValidatorTest(String config,
|
|
||||||
String value,
|
|
||||||
Boolean expectedResult,
|
|
||||||
ValidationMessage expectedError) {
|
|
||||||
this.config = config;
|
|
||||||
this.value = value;
|
|
||||||
this.expectedResult = expectedResult;
|
|
||||||
this.expectedError = expectedError;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// init
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
@Before
|
|
||||||
public void initialize() {
|
|
||||||
Gson gson = new GsonBuilder().create();
|
|
||||||
ValidationConfiguration validationConfiguration = gson.fromJson(config, ValidationConfiguration.class);
|
|
||||||
sut = new Validator(validationConfiguration, new TestColumnValueProvider());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// tests
|
// tests
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
@Test
|
@ParameterizedTest
|
||||||
public void validation() {
|
@MethodSource("validationConfigurations")
|
||||||
System.out.println("===================================================");
|
public void validation(String config,
|
||||||
System.out.println(config);
|
String value,
|
||||||
System.out.println(value + " " + expectedResult + " " + expectedError);
|
Boolean expectedResult,
|
||||||
System.out.println("===================================================\n");
|
ValidationMessage expectedError) {
|
||||||
|
// setup
|
||||||
|
Gson gson = new GsonBuilder().create();
|
||||||
|
ValidationConfiguration validationConfiguration = gson.fromJson(config, ValidationConfiguration.class);
|
||||||
|
Validator sut = new Validator(validationConfiguration, new TestColumnValueProvider());
|
||||||
|
|
||||||
// execution
|
// execution
|
||||||
ValidationError result = sut.isValid(0, "column", value);
|
ValidationError result = sut.isValid(0, "column", value);
|
||||||
@@ -87,45 +48,42 @@ public class ValidatorTest {
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// parameters for tests
|
// parameters for tests
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
@Parameterized.Parameters
|
public static Stream<Arguments> validationConfigurations() {
|
||||||
public static Collection validationConfigurations() {
|
return Stream.of(
|
||||||
return asList(new Object[][] {
|
Arguments.of( constraintsJSON("string", "required", true), "value", true, null ),
|
||||||
{ constraintsJSON("string", "required", true), "value", true, null },
|
Arguments.of( constraintsJSON("string", "required", true), "", false, new ValidationMessage("validation.message.not.empty") ),
|
||||||
{ constraintsJSON("string", "required", true), "", false, new ValidationMessage("validation.message.not.empty") },
|
Arguments.of( constraintsJSON("string", "required", true), null, false, new ValidationMessage("validation.message.not.empty") ),
|
||||||
{ constraintsJSON("string", "required", true), null, false, new ValidationMessage("validation.message.not.empty") },
|
Arguments.of( constraintsJSON("integer", null, true), "999", true, null ),
|
||||||
{ constraintsJSON("integer", null, true), "999", true, null },
|
Arguments.of( constraintsJSON("integer", null, true), "a", false, new ValidationMessage("validation.message.integer") ),
|
||||||
{ constraintsJSON("integer", null, true), "a", false, new ValidationMessage("validation.message.integer") },
|
Arguments.of( constraintsJSON("number", null, true), "999", true, null ),
|
||||||
{ constraintsJSON("number", null, true), "999", true, null },
|
Arguments.of( constraintsJSON("number", null, true), "999.000", true, null ),
|
||||||
{ constraintsJSON("number", null, true), "999.000", true, null },
|
Arguments.of( constraintsJSON("number", null, true), "a", false, new ValidationMessage("validation.message.double") ),
|
||||||
{ constraintsJSON("number", null, true), "a", false, new ValidationMessage("validation.message.double") },
|
Arguments.of( constraintsJSON("string", "minLength", 2), "12", true, null ),
|
||||||
{ constraintsJSON("string", "minLength", 2), "12", true, null },
|
Arguments.of( constraintsJSON("string", "minLength", 2), "1", false, new ValidationMessage("validation.message.min.length", "2") ),
|
||||||
{ constraintsJSON("string", "minLength", 2), "1", false, new ValidationMessage("validation.message.min.length", "2") },
|
Arguments.of( constraintsJSON("string", "maxLength", 2), "12", true, null ),
|
||||||
{ constraintsJSON("string", "maxLength", 2), "12", true, null },
|
Arguments.of( constraintsJSON("string", "maxLength", 2), "123", false, new ValidationMessage("validation.message.max.length", "2") ),
|
||||||
{ constraintsJSON("string", "maxLength", 2), "123", false, new ValidationMessage("validation.message.max.length", "2") },
|
Arguments.of( constraintsJSON("string", "pattern", "[a-z]*"), "abc", true, null ),
|
||||||
{ constraintsJSON("string", "pattern", "[a-z]*"), "abc", true, null },
|
Arguments.of( constraintsJSON("string", "pattern", "[a-z]*"), "abcA", false, new ValidationMessage("validation.message.regexp", "[a-z]*") ),
|
||||||
{ constraintsJSON("string", "pattern", "[a-z]*"), "abcA", false, new ValidationMessage("validation.message.regexp", "[a-z]*") },
|
Arguments.of( constraintsJSON("string", "enum", asList("a","b","c","d","e")), "c", true, null ),
|
||||||
{ constraintsJSON("string", "enum", asList("a","b","c","d","e")), "c", true, null },
|
Arguments.of( constraintsJSON("string", "enum", asList("a","b","c","d","e")), "f", false, new ValidationMessage("validation.message.value.of", "f", "a, b, c, d, e") ),
|
||||||
{ constraintsJSON("string", "enum", asList("a","b","c","d","e")), "f", false, new ValidationMessage("validation.message.value.of", "f", "a, b, c, d, e") },
|
|
||||||
|
|
||||||
{ formatJSON("string", null), "some string", true, null },
|
Arguments.of( formatJSON("string", null), "some string", true, null ),
|
||||||
{ formatJSON("string", "email"), "test@javafx.ninja", true, null },
|
Arguments.of( formatJSON("string", "email"), "test@javafx.ninja", true, null ),
|
||||||
{ formatJSON("string", "email"), "wrong email", false, new ValidationMessage("validation.message.email") },
|
Arguments.of( formatJSON("string", "email"), "wrong email", false, new ValidationMessage("validation.message.email") ),
|
||||||
{ formatJSON("string", "uri"), "http://www.javafx.ninja", true, null },
|
Arguments.of( formatJSON("string", "uri"), "http://www.javafx.ninja", true, null ),
|
||||||
{ formatJSON("string", "uri"), "!$%&/()", false, new ValidationMessage("validation.message.uri") },
|
Arguments.of( formatJSON("string", "uri"), "!$%&/()", false, new ValidationMessage("validation.message.uri") ),
|
||||||
{ formatJSON("string", "binary"), "dGVzdA==", true, null },
|
Arguments.of( formatJSON("string", "binary"), "dGVzdA==", true, null ),
|
||||||
{ formatJSON("string", "binary"), "no binary", false, new ValidationMessage("validation.message.binary") },
|
Arguments.of( formatJSON("string", "binary"), "no binary", false, new ValidationMessage("validation.message.binary") ),
|
||||||
{ formatJSON("string", "uuid"), "6ba7b810-9dad-11d1-80b4-00c04fd430c8", true, null },
|
Arguments.of( formatJSON("string", "uuid"), "6ba7b810-9dad-11d1-80b4-00c04fd430c8", true, null ),
|
||||||
{ formatJSON("string", "uuid"), "no uuid", false, new ValidationMessage("validation.message.uuid") },
|
Arguments.of( formatJSON("string", "uuid"), "no uuid", false, new ValidationMessage("validation.message.uuid") ),
|
||||||
{ formatJSON("date", null), "2015-11-27", true, null },
|
Arguments.of( formatJSON("date", null), "2015-11-27", true, null ),
|
||||||
{ formatJSON("date", null), "27.11.2015", false, new ValidationMessage("validation.message.date.format", "yyyy-MM-dd") },
|
Arguments.of( formatJSON("date", null), "27.11.2015", false, new ValidationMessage("validation.message.date.format", "yyyy-MM-dd") ),
|
||||||
{ formatJSON("date", "yyyyMMdd"), "20151127", true, null },
|
Arguments.of( formatJSON("date", "yyyyMMdd"), "20151127", true, null ),
|
||||||
{ formatJSON("date", "yyyyMMdd"), "27.11.2015", false, new ValidationMessage("validation.message.date.format", "yyyyMMdd") },
|
Arguments.of( formatJSON("date", "yyyyMMdd"), "27.11.2015", false, new ValidationMessage("validation.message.date.format", "yyyyMMdd") ),
|
||||||
|
|
||||||
|
Arguments.of( customAttributeJSON( "groovy", "value.contains('a')? 'true' : 'no a inside'"), "abcdef", true, null ),
|
||||||
{ customAttributeJSON( "groovy", "value.contains('a')? 'true' : 'no a inside'"), "abcdef", true, null },
|
Arguments.of( customAttributeJSON( "groovy", "value.contains('a')? 'true' : 'no a inside'"), "bcdefg", false, new ValidationMessage("no a inside") )
|
||||||
{ customAttributeJSON( "groovy", "value.contains('a')? 'true' : 'no a inside'"), "bcdefg", false, new ValidationMessage("no a inside") },
|
);
|
||||||
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String constraintsJSON(String type, String constraint, Object value) {
|
public static String constraintsJSON(String type, String constraint, Object value) {
|
||||||
|
|||||||
Reference in New Issue
Block a user