diff --git a/java/samples/fxml/JavaFXTableExampleDist/build.xml b/java/samples/fxml/JavaFXTableExampleDist/build.xml
new file mode 100644
index 0000000..1f7d74b
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/build.xml
@@ -0,0 +1,53 @@
+
+ Builds, tests, and runs the project JavaFXTableExampleDist.
+
+
+
diff --git a/java/samples/fxml/JavaFXTableExampleDist/build/built-jar.properties b/java/samples/fxml/JavaFXTableExampleDist/build/built-jar.properties
new file mode 100644
index 0000000..4398a1e
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/build/built-jar.properties
@@ -0,0 +1,4 @@
+#Sat, 25 Feb 2023 13:32:48 +0300
+
+
+C\:\\Users\\denis.LAPTOP-4LI8UQ4O\\OneDrive\\\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b\\NetBeansProjects\\JavaFXTableExample_dist\\JavaFXTableExampleDist=
diff --git a/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/Education.class b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/Education.class
new file mode 100644
index 0000000..26cc181
Binary files /dev/null and b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/Education.class differ
diff --git a/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/EducationStage.class b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/EducationStage.class
new file mode 100644
index 0000000..c1b814d
Binary files /dev/null and b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/EducationStage.class differ
diff --git a/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/FXMLEducation.fxml b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/FXMLEducation.fxml
new file mode 100644
index 0000000..0a07947
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/FXMLEducation.fxml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/FXMLEducationController.class b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/FXMLEducationController.class
new file mode 100644
index 0000000..29775f6
Binary files /dev/null and b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/FXMLEducationController.class differ
diff --git a/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/FXMLMain.fxml b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/FXMLMain.fxml
new file mode 100644
index 0000000..a78ea8b
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/FXMLMain.fxml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/FXMLMainController.class b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/FXMLMainController.class
new file mode 100644
index 0000000..3d2a651
Binary files /dev/null and b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/FXMLMainController.class differ
diff --git a/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/Main.class b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/Main.class
new file mode 100644
index 0000000..9a7160b
Binary files /dev/null and b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/Main.class differ
diff --git a/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/Person.class b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/Person.class
new file mode 100644
index 0000000..e58bc7f
Binary files /dev/null and b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/Person.class differ
diff --git a/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/PersonDto.class b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/PersonDto.class
new file mode 100644
index 0000000..f2f345d
Binary files /dev/null and b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/PersonDto.class differ
diff --git a/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/Repository.class b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/Repository.class
new file mode 100644
index 0000000..8f3c8ac
Binary files /dev/null and b/java/samples/fxml/JavaFXTableExampleDist/build/classes/javafxtableexampledist/Repository.class differ
diff --git a/java/samples/fxml/JavaFXTableExampleDist/dist/JavaFXTableExampleDist.html b/java/samples/fxml/JavaFXTableExampleDist/dist/JavaFXTableExampleDist.html
new file mode 100644
index 0000000..3d6d847
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/dist/JavaFXTableExampleDist.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+Test page for JavaFXTableExampleDist
+ Webstart: click to launch this app as webstart
+
+
+
+
diff --git a/java/samples/fxml/JavaFXTableExampleDist/dist/JavaFXTableExampleDist.jar b/java/samples/fxml/JavaFXTableExampleDist/dist/JavaFXTableExampleDist.jar
new file mode 100644
index 0000000..803542c
Binary files /dev/null and b/java/samples/fxml/JavaFXTableExampleDist/dist/JavaFXTableExampleDist.jar differ
diff --git a/java/samples/fxml/JavaFXTableExampleDist/dist/JavaFXTableExampleDist.jnlp b/java/samples/fxml/JavaFXTableExampleDist/dist/JavaFXTableExampleDist.jnlp
new file mode 100644
index 0000000..dca7703
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/dist/JavaFXTableExampleDist.jnlp
@@ -0,0 +1,21 @@
+
+
+
+ JavaFXTableExampleDist
+ denis
+ null
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/samples/fxml/JavaFXTableExampleDist/dist/lib/derby.jar b/java/samples/fxml/JavaFXTableExampleDist/dist/lib/derby.jar
new file mode 100644
index 0000000..1c50529
Binary files /dev/null and b/java/samples/fxml/JavaFXTableExampleDist/dist/lib/derby.jar differ
diff --git a/java/samples/fxml/JavaFXTableExampleDist/dist/lib/derbyclient.jar b/java/samples/fxml/JavaFXTableExampleDist/dist/lib/derbyclient.jar
new file mode 100644
index 0000000..dde69cd
Binary files /dev/null and b/java/samples/fxml/JavaFXTableExampleDist/dist/lib/derbyclient.jar differ
diff --git a/java/samples/fxml/JavaFXTableExampleDist/dist/lib/derbynet.jar b/java/samples/fxml/JavaFXTableExampleDist/dist/lib/derbynet.jar
new file mode 100644
index 0000000..c51fb78
Binary files /dev/null and b/java/samples/fxml/JavaFXTableExampleDist/dist/lib/derbynet.jar differ
diff --git a/java/samples/fxml/JavaFXTableExampleDist/dist/web-files/dtjava.js b/java/samples/fxml/JavaFXTableExampleDist/dist/web-files/dtjava.js
new file mode 100644
index 0000000..b77ecd7
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/dist/web-files/dtjava.js
@@ -0,0 +1,3958 @@
+/*
+ * Copyright (c) 2006, 2017, Oracle and/or its affiliates. All rights reserved.
+ * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+/**
+ The Java Deployment Toolkit is a utility to deploy Java content in
+ the browser as applets or applications using the right version of Java.
+ If needed it can initiate an upgrade of user's system to install required
+ components of Java platform.
+
+ Note that some of the Deployment Toolkit methods may not be fully operational if
+ used before web page body is loaded (because DT native plugins could not be instantiated).
+ If you intend to use it before web page DOM tree is ready then dtjava.js
+ needs to be loaded inside the body element of the page and before use of other DT APIs.
+
+ @module java/deployment_toolkit
+*/
+var dtjava = function() {
+ function notNull(o) {
+ return (o != undefined && o != null);
+ }
+
+ function isDef(fn) {
+ return (fn != null && typeof fn != "undefined");
+ }
+
+ //return true if any of patterns from query list is found in the given string
+ function containsAny(lst, str) {
+ for (var q = 0; q < lst.length; q++) {
+ if (str.indexOf(lst[q]) != -1) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /* Location of static web content - images, javascript files. */
+ var jscodebase = (function () {
+ //
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/samples/fxml/JavaFXTableExampleDist/nbproject/private/configs/______________WebStart.properties b/java/samples/fxml/JavaFXTableExampleDist/nbproject/private/configs/______________WebStart.properties
new file mode 100644
index 0000000..7a1d99d
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/nbproject/private/configs/______________WebStart.properties
@@ -0,0 +1,2 @@
+# Do not modify this property in this configuration. It can be re-generated.
+javafx.run.as=webstart
diff --git a/java/samples/fxml/JavaFXTableExampleDist/nbproject/private/configs/____________________.properties b/java/samples/fxml/JavaFXTableExampleDist/nbproject/private/configs/____________________.properties
new file mode 100644
index 0000000..7a7b6e4
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/nbproject/private/configs/____________________.properties
@@ -0,0 +1,2 @@
+# Do not modify this property in this configuration. It can be re-generated.
+javafx.run.as=embedded
diff --git a/java/samples/fxml/JavaFXTableExampleDist/nbproject/private/private.properties b/java/samples/fxml/JavaFXTableExampleDist/nbproject/private/private.properties
new file mode 100644
index 0000000..75957f3
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/nbproject/private/private.properties
@@ -0,0 +1,12 @@
+auxiliary.org-netbeans-modules-projectapi.issue214819_5f_fx_5f_enabled=true
+compile.on.save=true
+do.depend=false
+do.jar=true
+# \u041d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0437\u0430\u0434\u0430\u0447\u0438 JavaFX Ant
+endorsed.javafx.ant.classpath=.
+javac.debug=true
+javadoc.preview=true
+javafx.run.as=standalone
+javafx.run.inbrowser=<\u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e>
+javafx.run.inbrowser.path=C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE
+user.properties.file=C:\\Users\\denis.LAPTOP-4LI8UQ4O\\AppData\\Roaming\\NetBeans\\8.2\\build.properties
diff --git a/java/samples/fxml/JavaFXTableExampleDist/nbproject/project.properties b/java/samples/fxml/JavaFXTableExampleDist/nbproject/project.properties
new file mode 100644
index 0000000..2725cea
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/nbproject/project.properties
@@ -0,0 +1,124 @@
+annotation.processing.enabled=true
+annotation.processing.enabled.in.editor=false
+annotation.processing.processors.list=
+annotation.processing.run.all.processors=true
+annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
+application.title=JavaFXTableExampleDist
+application.vendor=denis
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+build.generated.sources.dir=${build.dir}/generated-sources
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+compile.on.save=true
+compile.on.save.unsupported.javafx=true
+# Uncomment to specify the preferred debugger connection transport:
+#debug.transport=dt_socket
+debug.classpath=\
+ ${run.classpath}
+debug.test.classpath=\
+ ${run.test.classpath}
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/JavaFXTableExampleDist.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+endorsed.classpath=
+excludes=
+includes=**
+# Non-JavaFX jar file creation is deactivated in JavaFX 2.0+ projects
+jar.archive.disabled=true
+jar.compress=false
+javac.classpath=\
+ ${javafx.classpath.extension}:\
+ ${libs.JAVADB_DRIVER_LABEL.classpath}
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.deprecation=false
+javac.external.vm=false
+javac.processorpath=\
+ ${javac.classpath}
+javac.source=1.8
+javac.target=1.8
+javac.test.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}
+javac.test.processorpath=\
+ ${javac.test.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+javafx.application.implementation.version=1.0
+javafx.binarycss=false
+javafx.classpath.extension=\
+ ${java.home}/lib/javaws.jar:\
+ ${java.home}/lib/deploy.jar:\
+ ${java.home}/lib/plugin.jar
+javafx.deploy.adddesktopshortcut=false
+javafx.deploy.addstartmenushortcut=false
+javafx.deploy.allowoffline=true
+# If true, application update mode is set to 'background', if false, update mode is set to 'eager'
+javafx.deploy.backgroundupdate=false
+javafx.deploy.disable.proxy=false
+javafx.deploy.embedJNLP=true
+javafx.deploy.includeDT=true
+javafx.deploy.installpermanently=false
+javafx.deploy.permissionselevated=false
+# \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 'true' \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043f\u0438\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u0434\u043e \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 (\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0438)
+javafx.disable.concurrent.runs=false
+# \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 'true' \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Run-in-Browser \u0438\u043b\u0438 WebStart
+javafx.enable.concurrent.external.runs=false
+# This is a JavaFX project
+javafx.enabled=true
+javafx.fallback.class=com.javafx.main.NoJavaFXFallback
+# Main class for JavaFX
+javafx.main.class=javafxtableexampledist.Main
+javafx.preloader.class=
+# This project does not use Preloader
+javafx.preloader.enabled=false
+javafx.preloader.jar.filename=
+javafx.preloader.jar.path=
+javafx.preloader.project.path=
+javafx.preloader.type=none
+# Set true for GlassFish only. Rebases manifest classpaths of JARs in lib dir. Not usable with signed JARs.
+javafx.rebase.libs=false
+javafx.run.height=600
+javafx.run.width=800
+javafx.signing.blob=false
+javafx.signing.enabled=false
+javafx.signing.type=notsigned
+# Pre-JavaFX 2.0 WebStart is deactivated in JavaFX 2.0+ projects
+jnlp.enabled=false
+# Main class for Java launcher
+main.class=com.javafx.main.Main
+# \u0414\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0442\u043e\u0447\u043d\u0435\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 Codebase \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f RIA
+manifest.custom.codebase=*
+# \u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 Permissions \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b: sandbox, all-permissions)
+manifest.custom.permissions=
+manifest.file=manifest.mf
+meta.inf.dir=${src.dir}/META-INF
+mkdist.disabled=false
+native.bundling.enabled=false
+platform.active=default_platform
+run.classpath=\
+ ${dist.jar}:\
+ ${javac.classpath}:\
+ ${build.classes.dir}
+run.test.classpath=\
+ ${javac.test.classpath}:\
+ ${build.test.classes.dir}
+source.encoding=UTF-8
+src.dir=src
+test.src.dir=test
diff --git a/java/samples/fxml/JavaFXTableExampleDist/nbproject/project.xml b/java/samples/fxml/JavaFXTableExampleDist/nbproject/project.xml
new file mode 100644
index 0000000..357bd71
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/nbproject/project.xml
@@ -0,0 +1,25 @@
+
+
+ org.netbeans.modules.java.j2seproject
+
+
+
+
+
+
+
+
+
+
+
+
+ JavaFXTableExampleDist
+
+
+
+
+
+
+
+
+
diff --git a/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/Education.java b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/Education.java
new file mode 100644
index 0000000..5fdb7b6
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/Education.java
@@ -0,0 +1,111 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package javafxtableexampledist;
+
+import java.sql.Date;
+import java.util.Objects;
+
+/**
+ *
+ * @author denis
+ */
+public class Education {
+ private Integer id;
+ private String universityname;
+ private Date dateFinish;
+ private String city;
+ private Person person;
+
+ public Education(Integer id, String universityname, Date dateFinish, String city) {
+ this.id = id;
+ this.universityname = universityname;
+ this.dateFinish = dateFinish;
+ this.city = city;
+ }
+
+ public Person getPerson() {
+ return person;
+ }
+
+ public void setPerson(Person person) {
+ this.person = person;
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getUniversityname() {
+ return universityname;
+ }
+
+ public void setUniversityname(String universityname) {
+ this.universityname = universityname;
+ }
+
+ public Date getDateFinish() {
+ return dateFinish;
+ }
+
+ public void setDateFinish(Date dateFinish) {
+ this.dateFinish = dateFinish;
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 97 * hash + Objects.hashCode(this.id);
+ hash = 97 * hash + Objects.hashCode(this.universityname);
+ hash = 97 * hash + Objects.hashCode(this.dateFinish);
+ hash = 97 * hash + Objects.hashCode(this.city);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final Education other = (Education) obj;
+ if (!Objects.equals(this.universityname, other.universityname)) {
+ return false;
+ }
+ if (!Objects.equals(this.city, other.city)) {
+ return false;
+ }
+ if (!Objects.equals(this.id, other.id)) {
+ return false;
+ }
+ if (!Objects.equals(this.dateFinish, other.dateFinish)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "Education{" + "id=" + id + ", universityname=" + universityname + ", dateFinish=" + dateFinish + ", city=" + city + '}';
+ }
+}
+
diff --git a/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/EducationStage.java b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/EducationStage.java
new file mode 100644
index 0000000..50ef53a
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/EducationStage.java
@@ -0,0 +1,38 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package javafxtableexampledist;
+
+import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.stage.Modality;
+import javafx.stage.Stage;
+
+/**
+ *
+ * @author denis
+ */
+public class EducationStage extends Stage{
+
+ public void init(Person person){
+ Parent root;
+ try {
+ FXMLLoader loader = new FXMLLoader(getClass().getResource("FXMLEducation.fxml"));
+ root = loader.load();
+ Scene scene = new Scene(root);
+ setScene(scene);
+ initModality(Modality.APPLICATION_MODAL);
+ ((FXMLEducationController)loader.getController()).initTable(person);
+ showAndWait();
+ } catch (IOException ex) {
+ Logger.getLogger(EducationStage.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+
+}
diff --git a/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/FXMLEducation.fxml b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/FXMLEducation.fxml
new file mode 100644
index 0000000..0a07947
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/FXMLEducation.fxml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/FXMLEducationController.java b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/FXMLEducationController.java
new file mode 100644
index 0000000..c52251c
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/FXMLEducationController.java
@@ -0,0 +1,43 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package javafxtableexampledist;
+
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.TableView;
+import javafx.scene.control.cell.PropertyValueFactory;
+
+/**
+ * FXML Controller class
+ *
+ * @author denis
+ */
+public class FXMLEducationController implements Initializable {
+
+ @FXML
+ private TableView table;
+
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+
+ table.getColumns().get(0).setCellValueFactory(new PropertyValueFactory<>("id"));
+ table.getColumns().get(1).setCellValueFactory(new PropertyValueFactory<>("universityname"));
+ table.getColumns().get(2).setCellValueFactory(new PropertyValueFactory<>("dateFinish"));
+ table.getColumns().get(3).setCellValueFactory(new PropertyValueFactory<>("city"));
+ table.getColumns().get(4).setCellValueFactory(new PropertyValueFactory<>("person"));
+
+ }
+
+ public void initTable(Person person){
+ ObservableList educations = FXCollections.observableArrayList(new Repository().getEducationByPersonid(person.getId()));
+ table.setItems(educations);
+ }
+
+}
diff --git a/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/FXMLMain.fxml b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/FXMLMain.fxml
new file mode 100644
index 0000000..a78ea8b
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/FXMLMain.fxml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/FXMLMainController.java b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/FXMLMainController.java
new file mode 100644
index 0000000..63a833e
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/FXMLMainController.java
@@ -0,0 +1,78 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package javafxtableexampledist;
+
+import java.net.URL;
+import java.util.List;
+import java.util.ResourceBundle;
+import java.util.stream.Collectors;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.event.ActionEvent;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.Label;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.TableView;
+import javafx.scene.control.cell.PropertyValueFactory;
+import javafx.scene.input.KeyCode;
+import javafx.scene.input.KeyEvent;
+import javafx.scene.input.MouseEvent;
+
+/**
+ *
+ * @author denis
+ */
+public class FXMLMainController implements Initializable {
+
+ @FXML
+ private TableView table;
+ @FXML
+ private TableColumn idCol;
+ @FXML
+ private TableColumn firstCol;
+ @FXML
+ private TableColumn lastCol;
+ @FXML
+ private TableColumn genderCol;
+ @FXML
+ private TableColumn countCol;
+
+ @FXML
+ private void handleClickedAction(MouseEvent event) {
+ if(event.getClickCount()==2){
+ openEducationStage();
+ }
+ }
+
+ @FXML
+ private void handleKeyPressedAction(KeyEvent event){
+ if(event.getCode()==KeyCode.ENTER){
+ openEducationStage();
+ }
+ }
+
+ private void openEducationStage(){
+ Repository repository = new Repository();
+ int idperson = table.getSelectionModel().getSelectedItem().getId();
+ Person person = repository.findPersonById(idperson);
+ new EducationStage().init(person);
+ }
+
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+ Repository repository = new Repository();
+ List persons = repository.getAllPersonWithEducation();
+ List personDto = persons.stream().map(per -> new PersonDto(per)).collect(Collectors.toList());
+ idCol.setCellValueFactory(new PropertyValueFactory<>("id"));
+ firstCol.setCellValueFactory(new PropertyValueFactory<>("firstname"));
+ lastCol.setCellValueFactory(new PropertyValueFactory<>("lastname"));
+ genderCol.setCellValueFactory(new PropertyValueFactory<>("gender"));
+ countCol.setCellValueFactory(new PropertyValueFactory<>("educationCount"));
+ table.setItems(FXCollections.observableArrayList(personDto));
+ }
+
+}
diff --git a/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/Main.java b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/Main.java
new file mode 100644
index 0000000..c9f1e9b
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/Main.java
@@ -0,0 +1,37 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package javafxtableexampledist;
+
+import javafx.application.Application;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+
+/**
+ *
+ * @author denis
+ */
+public class Main extends Application {
+
+ @Override
+ public void start(Stage stage) throws Exception {
+ Parent root = FXMLLoader.load(getClass().getResource("FXMLMain.fxml"));
+
+ Scene scene = new Scene(root);
+
+ stage.setScene(scene);
+ stage.show();
+ }
+
+ /**
+ * @param args the command line arguments
+ */
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+}
diff --git a/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/Person.java b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/Person.java
new file mode 100644
index 0000000..e6974fd
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/Person.java
@@ -0,0 +1,122 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package javafxtableexampledist;
+
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+
+/**
+ *
+ * @author denis
+ */
+public class Person {
+
+ private Integer id;
+ private String firstname;
+ private String lastname;
+ private String gender;
+ private Set educations = new HashSet<>();
+
+ public Person(){}
+
+ public Person(Integer id, String firstname, String lastname, String gender) {
+ this.id = id;
+ this.firstname = firstname;
+ this.lastname = lastname;
+ this.gender = gender;
+ }
+
+ public void addEducation(Education education){
+ educations.add(education);
+ }
+
+ public Set getEducations() {
+ return educations;
+ }
+
+ public void setEducations(Set educations) {
+ this.educations = educations;
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public String getFirstname() {
+ return firstname;
+ }
+
+ public String getLastname() {
+ return lastname;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public void setFirstname(String firstname) {
+ this.firstname = firstname;
+ }
+
+ public void setLastname(String lastname) {
+ this.lastname = lastname;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 97 * hash + Objects.hashCode(this.id);
+ hash = 97 * hash + Objects.hashCode(this.firstname);
+ hash = 97 * hash + Objects.hashCode(this.lastname);
+ hash = 97 * hash + Objects.hashCode(this.gender);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final Person other = (Person) obj;
+ if (!Objects.equals(this.firstname, other.firstname)) {
+ return false;
+ }
+ if (!Objects.equals(this.lastname, other.lastname)) {
+ return false;
+ }
+ if (!Objects.equals(this.gender, other.gender)) {
+ return false;
+ }
+ if (!Objects.equals(this.id, other.id)) {
+ return false;
+ }
+ return true;
+ }
+
+
+
+ @Override
+ public String toString() {
+ return firstname + " " + lastname + ", " + gender;
+ }
+}
diff --git a/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/PersonDto.java b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/PersonDto.java
new file mode 100644
index 0000000..20b3402
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/PersonDto.java
@@ -0,0 +1,115 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package javafxtableexampledist;
+
+import java.util.Objects;
+
+/**
+ *
+ * @author denis
+ */
+public class PersonDto {
+
+ private Integer id;
+ private String firstname;
+ private String lastname;
+ private String gender;
+ private Integer educationCount;
+
+ public PersonDto(Person person) {
+ id = person.getId();
+ firstname = person.getFirstname();
+ lastname = person.getLastname();
+ gender = person.getGender();
+ educationCount = person.getEducations().size();
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getFirstname() {
+ return firstname;
+ }
+
+ public void setFirstname(String firstname) {
+ this.firstname = firstname;
+ }
+
+ public String getLastname() {
+ return lastname;
+ }
+
+ public void setLastname(String lastname) {
+ this.lastname = lastname;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public Integer getEducationCount() {
+ return educationCount;
+ }
+
+ public void setEducationCount(Integer educationCount) {
+ this.educationCount = educationCount;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 73 * hash + Objects.hashCode(this.id);
+ hash = 73 * hash + Objects.hashCode(this.firstname);
+ hash = 73 * hash + Objects.hashCode(this.lastname);
+ hash = 73 * hash + Objects.hashCode(this.gender);
+ hash = 73 * hash + Objects.hashCode(this.educationCount);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final PersonDto other = (PersonDto) obj;
+ if (!Objects.equals(this.firstname, other.firstname)) {
+ return false;
+ }
+ if (!Objects.equals(this.lastname, other.lastname)) {
+ return false;
+ }
+ if (!Objects.equals(this.gender, other.gender)) {
+ return false;
+ }
+ if (!Objects.equals(this.id, other.id)) {
+ return false;
+ }
+ if (!Objects.equals(this.educationCount, other.educationCount)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "PersonDto{" + "id=" + id + ", firstname=" + firstname + ", lastname=" + lastname + ", gender=" + gender + ", educationCount=" + educationCount + '}';
+ }
+}
diff --git a/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/Repository.java b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/Repository.java
new file mode 100644
index 0000000..a20bf04
--- /dev/null
+++ b/java/samples/fxml/JavaFXTableExampleDist/src/javafxtableexampledist/Repository.java
@@ -0,0 +1,120 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package javafxtableexampledist;
+
+import java.sql.Connection;
+import java.sql.Date;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author denis
+ */
+public class Repository {
+
+ private String url = "jdbc:derby://localhost:1527/TrainingDatabase";
+ private String user = "root";
+ private String psw = "root";
+
+ public List getAllPersonWithEducation(){
+ List persons = new ArrayList<>();
+ try(Connection con = DriverManager.getConnection(url, user, psw);
+ Statement stm = con.createStatement()){
+ try (ResultSet rs = stm.executeQuery("SELECT * FROM PERSON LEFT JOIN EDUCATION ON PERSON.ID=EDUCATION.PERSONID");){
+ while(rs.next()){
+ int personid = rs.getInt(1);
+ Person person = persons.stream().filter(per -> per.getId()==personid).findFirst().orElse(null);
+ if(person==null){
+ String firstname = rs.getString(2);
+ String lastname = rs.getString(3);
+ String gender = rs.getString(4);
+ person = new Person(personid, firstname, lastname, gender);
+ persons.add(person);
+ }
+ if(rs.getString(5)!=null){
+ int educationid = rs.getInt(5);
+ Integer educationid2 = Integer.valueOf(rs.getString(5));
+ String universityname = rs.getString(6);
+ Date dateFinish = rs.getDate(7);
+ String city = rs.getString(8);
+ Education education = new Education(educationid, universityname, dateFinish, city);
+ person.addEducation(education);
+ education.setPerson(person);
+ }
+ }
+ }
+ }catch (SQLException e){
+ e.printStackTrace();
+ }
+ return persons;
+ }
+
+ public List getAllPerson(){
+ List persons = new ArrayList<>();
+ try(Connection con = DriverManager.getConnection(url, user, psw);
+ Statement stm = con.createStatement()){
+ try (ResultSet rs = stm.executeQuery("SELECT * FROM PERSON");){
+ while(rs.next()){
+ int id = rs.getInt(1);
+ String firstname = rs.getString(2);
+ String lastname = rs.getString(3);
+ String gender = rs.getString(4);
+ persons.add(new Person(id, firstname, lastname, gender));
+ }
+ }
+ }catch (SQLException e){
+ e.printStackTrace();
+ }
+ return persons;
+ }
+
+ public Person findPersonById(int id){
+ Person person = new Person();
+ try(Connection con = DriverManager.getConnection(url, user, psw);
+ Statement stm = con.createStatement()){
+ try (ResultSet rs = stm.executeQuery("SELECT * FROM PERSON WHERE id=" + id);){
+ if(rs.next()){
+ person.setId(rs.getInt(1));
+ person.setFirstname(rs.getString(2));
+ person.setLastname(rs.getString(3));
+ person.setGender(rs.getString(4));
+ }
+ }
+ }catch (SQLException e){
+ e.printStackTrace();
+ }
+ return person;
+ }
+
+ public List getEducationByPersonid(int personid){
+ List educations = new ArrayList<>();
+
+ try(Connection con = DriverManager.getConnection(url, user, psw);
+ Statement stm = con.createStatement()){
+ try (ResultSet rs = stm.executeQuery("SELECT * FROM EDUCATION WHERE PERSONID=" + personid)){
+ while(rs.next()){
+ int id = rs.getInt(1);
+ String universityname = rs.getString(2);
+ Date dateFinish = rs.getDate(3);
+ String city = rs.getString(4);
+ Education education = new Education(id, universityname, dateFinish, city);
+ education.setPerson(findPersonById(personid));
+ educations.add(education);
+ }
+ }
+ }catch (SQLException e){
+ e.printStackTrace();
+ }
+
+ return educations;
+ }
+
+}