esoe 2 years ago
parent
commit
bee0ed0f6e
  1. 0
      java/labs/done/j130-lab1.pdf
  2. 53
      java/samples/fxml/Lab140_2FXML/build.xml
  3. 4
      java/samples/fxml/Lab140_2FXML/build/built-jar.properties
  4. BIN
      java/samples/fxml/Lab140_2FXML/build/classes/controller/PersonDto.class
  5. BIN
      java/samples/fxml/Lab140_2FXML/build/classes/lab140_2fxml/EducationStage.class
  6. 21
      java/samples/fxml/Lab140_2FXML/build/classes/lab140_2fxml/FXMLDocument.fxml
  7. BIN
      java/samples/fxml/Lab140_2FXML/build/classes/lab140_2fxml/FXMLDocumentController.class
  8. 20
      java/samples/fxml/Lab140_2FXML/build/classes/lab140_2fxml/FXMLEducation.fxml
  9. BIN
      java/samples/fxml/Lab140_2FXML/build/classes/lab140_2fxml/FXMLEducationController.class
  10. BIN
      java/samples/fxml/Lab140_2FXML/build/classes/lab140_2fxml/Lab140_2FXML.class
  11. BIN
      java/samples/fxml/Lab140_2FXML/build/classes/model/Education.class
  12. BIN
      java/samples/fxml/Lab140_2FXML/build/classes/model/Person.class
  13. BIN
      java/samples/fxml/Lab140_2FXML/build/classes/repo/Repository.class
  14. 45
      java/samples/fxml/Lab140_2FXML/dist/Lab140_2FXML.html
  15. BIN
      java/samples/fxml/Lab140_2FXML/dist/Lab140_2FXML.jar
  16. 21
      java/samples/fxml/Lab140_2FXML/dist/Lab140_2FXML.jnlp
  17. BIN
      java/samples/fxml/Lab140_2FXML/dist/lib/derby.jar
  18. BIN
      java/samples/fxml/Lab140_2FXML/dist/lib/derbyclient.jar
  19. BIN
      java/samples/fxml/Lab140_2FXML/dist/lib/derbynet.jar
  20. 3958
      java/samples/fxml/Lab140_2FXML/dist/web-files/dtjava.js
  21. BIN
      java/samples/fxml/Lab140_2FXML/dist/web-files/error.png
  22. BIN
      java/samples/fxml/Lab140_2FXML/dist/web-files/get_java.png
  23. BIN
      java/samples/fxml/Lab140_2FXML/dist/web-files/get_javafx.png
  24. BIN
      java/samples/fxml/Lab140_2FXML/dist/web-files/javafx-chrome.png
  25. BIN
      java/samples/fxml/Lab140_2FXML/dist/web-files/javafx-loading-100x100.gif
  26. BIN
      java/samples/fxml/Lab140_2FXML/dist/web-files/javafx-loading-25x25.gif
  27. BIN
      java/samples/fxml/Lab140_2FXML/dist/web-files/upgrade_java.png
  28. BIN
      java/samples/fxml/Lab140_2FXML/dist/web-files/upgrade_javafx.png
  29. 3
      java/samples/fxml/Lab140_2FXML/manifest.mf
  30. 1421
      java/samples/fxml/Lab140_2FXML/nbproject/build-impl.xml
  31. 2
      java/samples/fxml/Lab140_2FXML/nbproject/configs/______________WebStart.properties
  32. 2
      java/samples/fxml/Lab140_2FXML/nbproject/configs/____________________.properties
  33. 8
      java/samples/fxml/Lab140_2FXML/nbproject/genfiles.properties
  34. 4049
      java/samples/fxml/Lab140_2FXML/nbproject/jfx-impl.xml
  35. 2
      java/samples/fxml/Lab140_2FXML/nbproject/private/configs/______________WebStart.properties
  36. 2
      java/samples/fxml/Lab140_2FXML/nbproject/private/configs/____________________.properties
  37. 4
      java/samples/fxml/Lab140_2FXML/nbproject/private/private.properties
  38. 114
      java/samples/fxml/Lab140_2FXML/nbproject/project.properties
  39. 25
      java/samples/fxml/Lab140_2FXML/nbproject/project.xml
  40. 100
      java/samples/fxml/Lab140_2FXML/src/controller/PersonDto.java
  41. 45
      java/samples/fxml/Lab140_2FXML/src/lab140_2fxml/EducationStage.java
  42. 21
      java/samples/fxml/Lab140_2FXML/src/lab140_2fxml/FXMLDocument.fxml
  43. 104
      java/samples/fxml/Lab140_2FXML/src/lab140_2fxml/FXMLDocumentController.java
  44. 20
      java/samples/fxml/Lab140_2FXML/src/lab140_2fxml/FXMLEducation.fxml
  45. 55
      java/samples/fxml/Lab140_2FXML/src/lab140_2fxml/FXMLEducationController.java
  46. 37
      java/samples/fxml/Lab140_2FXML/src/lab140_2fxml/Lab140_2FXML.java
  47. 112
      java/samples/fxml/Lab140_2FXML/src/model/Education.java
  48. 119
      java/samples/fxml/Lab140_2FXML/src/model/Person.java
  49. 100
      java/samples/fxml/Lab140_2FXML/src/repo/Repository.java

0
java/labs/j130-lab1.pdf → java/labs/done/j130-lab1.pdf

53
java/samples/fxml/Lab140_2FXML/build.xml

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?><!-- You may freely edit this file. See commented blocks below for --><!-- some examples of how to customize the build. --><!-- (If you delete it and reopen the project it will be recreated.) --><!-- By default, only the Clean and Build commands use this build script. --><project name="Lab140_2FXML" default="default" basedir="." xmlns:fx="javafx:com.sun.javafx.tools.ant">
<description>Builds, tests, and runs the project Lab140_2FXML.</description>
<import file="nbproject/build-impl.xml"/>
<!--
There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed
before and after some main targets. Those of them relevant for JavaFX project are:
-pre-init: called before initialization of project properties
-post-init: called after initialization of project properties
-pre-compile: called before javac compilation
-post-compile: called after javac compilation
-pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests
-pre-jfx-jar: called before FX SDK specific <fx:jar> task
-post-jfx-jar: called after FX SDK specific <fx:jar> task
-pre-jfx-deploy: called before FX SDK specific <fx:deploy> task
-post-jfx-deploy: called after FX SDK specific <fx:deploy> task
-pre-jfx-native: called just after -pre-jfx-deploy if <fx:deploy> runs in native packaging mode
-post-jfx-native: called just after -post-jfx-deploy if <fx:deploy> runs in native packaging mode
-post-clean: called after cleaning build products
(Targets beginning with '-' are not intended to be called on their own.)
Example of inserting a HTML postprocessor after javaFX SDK deployment:
<target name="-post-jfx-deploy">
<basename property="jfx.deployment.base" file="${jfx.deployment.jar}" suffix=".jar"/>
<property name="jfx.deployment.html" location="${jfx.deployment.dir}${file.separator}${jfx.deployment.base}.html"/>
<custompostprocess>
<fileset dir="${jfx.deployment.html}"/>
</custompostprocess>
</target>
Example of calling an Ant task from JavaFX SDK. Note that access to JavaFX SDK Ant tasks must be
initialized; to ensure this is done add the dependence on -check-jfx-sdk-version target:
<target name="-post-jfx-jar" depends="-check-jfx-sdk-version">
<echo message="Calling jar task from JavaFX SDK"/>
<fx:jar ...>
...
</fx:jar>
</target>
For more details about JavaFX SDK Ant tasks go to
http://docs.oracle.com/javafx/2/deployment/jfxpub-deployment.htm
For list of available properties check the files
nbproject/build-impl.xml and nbproject/jfx-impl.xml.
-->
</project>

4
java/samples/fxml/Lab140_2FXML/build/built-jar.properties

@ -0,0 +1,4 @@
#Tue, 21 Feb 2023 20:58:22 +0300
C\:\\Users\\denis.LAPTOP-4LI8UQ4O\\OneDrive\\\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b\\NetBeansProjects\\JavaFXTableExample_dist\\Lab140_2FXML=

BIN
java/samples/fxml/Lab140_2FXML/build/classes/controller/PersonDto.class

Binary file not shown.

BIN
java/samples/fxml/Lab140_2FXML/build/classes/lab140_2fxml/EducationStage.class

Binary file not shown.

21
java/samples/fxml/Lab140_2FXML/build/classes/lab140_2fxml/FXMLDocument.fxml

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml/1" fx:controller="lab140_2fxml.FXMLDocumentController">
<children>
<TableView fx:id="table" onMouseClicked="#handlerMouseClicked" onKeyPressed="#handlerKeyPressed" >
<columns>
<TableColumn fx:id="idColumn" text="ИД" prefWidth="100" />
<TableColumn fx:id="firstnameColumn" text="Имя" prefWidth="200" />
<TableColumn fx:id="lastnameColumn" text="Фамилия" prefWidth="200" />
<TableColumn fx:id="countColumn" text="кол-во" prefWidth="50" />
<TableColumn fx:id="genderColumn" text="пол" prefWidth="150" />
</columns>
</TableView>
</children>
</AnchorPane>

BIN
java/samples/fxml/Lab140_2FXML/build/classes/lab140_2fxml/FXMLDocumentController.class

Binary file not shown.

20
java/samples/fxml/Lab140_2FXML/build/classes/lab140_2fxml/FXMLEducation.fxml

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" fx:controller="lab140_2fxml.FXMLEducationController">
<children>
<TableView fx:id="table" >
<columns>
<TableColumn fx:id="idColumn" text="ИД" prefWidth="100" />
<TableColumn fx:id="universitynameColumn" text="Университет" prefWidth="300" />
<TableColumn fx:id="datefinishColumn" text="Дата окончания" prefWidth="100" />
<TableColumn fx:id="cityColumn" text="Город" prefWidth="100" />
</columns>
</TableView>
</children>
</AnchorPane>

BIN
java/samples/fxml/Lab140_2FXML/build/classes/lab140_2fxml/FXMLEducationController.class

Binary file not shown.

BIN
java/samples/fxml/Lab140_2FXML/build/classes/lab140_2fxml/Lab140_2FXML.class

Binary file not shown.

BIN
java/samples/fxml/Lab140_2FXML/build/classes/model/Education.class

Binary file not shown.

BIN
java/samples/fxml/Lab140_2FXML/build/classes/model/Person.class

Binary file not shown.

BIN
java/samples/fxml/Lab140_2FXML/build/classes/repo/Repository.class

Binary file not shown.

45
java/samples/fxml/Lab140_2FXML/dist/Lab140_2FXML.html vendored

@ -0,0 +1,45 @@
<html><head>
<SCRIPT src="./web-files/dtjava.js"></SCRIPT>
<script>
function launchApplication(jnlpfile) {
dtjava.launch( {
url : 'Lab140_2FXML.jnlp',
jnlp_content : 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxqbmxwIHNwZWM9IjEuMCIgeG1sbnM6amZ4PSJodHRwOi8vamF2YWZ4LmNvbSIgaHJlZj0iTGFiMTQwXzJGWE1MLmpubHAiPg0KICA8aW5mb3JtYXRpb24+DQogICAgPHRpdGxlPkxhYjE0MF8yRlhNTDwvdGl0bGU+DQogICAgPHZlbmRvcj5kZW5pczwvdmVuZG9yPg0KICAgIDxkZXNjcmlwdGlvbj5udWxsPC9kZXNjcmlwdGlvbj4NCiAgICA8b2ZmbGluZS1hbGxvd2VkLz4NCiAgPC9pbmZvcm1hdGlvbj4NCiAgPHJlc291cmNlcz4NCiAgICA8ajJzZSB2ZXJzaW9uPSIxLjYrIiBocmVmPSJodHRwOi8vamF2YS5zdW4uY29tL3Byb2R1Y3RzL2F1dG9kbC9qMnNlIi8+DQogICAgPGphciBocmVmPSJMYWIxNDBfMkZYTUwuamFyIiBzaXplPSIxNDc0NiIgZG93bmxvYWQ9ImVhZ2VyIiAvPg0KICAgIDxqYXIgaHJlZj0ibGliXGRlcmJ5LmphciIgc2l6ZT0iMzIzMjc3MCIgZG93bmxvYWQ9ImVhZ2VyIiAvPg0KICAgIDxqYXIgaHJlZj0ibGliXGRlcmJ5Y2xpZW50LmphciIgc2l6ZT0iNTg4Mzk0IiBkb3dubG9hZD0iZWFnZXIiIC8+DQogICAgPGphciBocmVmPSJsaWJcZGVyYnluZXQuamFyIiBzaXplPSIyNzI2MjYiIGRvd25sb2FkPSJlYWdlciIgLz4NCiAgPC9yZXNvdXJjZXM+DQogIDxhcHBsZXQtZGVzYyAgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAiIG1haW4tY2xhc3M9ImNvbS5qYXZhZngubWFpbi5Ob0phdmFGWEZhbGxiYWNrIiAgbmFtZT0iTGFiMTQwXzJGWE1MIiA+DQogICAgPHBhcmFtIG5hbWU9InJlcXVpcmVkRlhWZXJzaW9uIiB2YWx1ZT0iOC4wKyIvPg0KICA8L2FwcGxldC1kZXNjPg0KICA8amZ4OmphdmFmeC1kZXNjICB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCIgbWFpbi1jbGFzcz0ibGFiMTQwXzJmeG1sLkxhYjE0MF8yRlhNTCIgIG5hbWU9IkxhYjE0MF8yRlhNTCIgLz4NCiAgPHVwZGF0ZSBjaGVjaz0iYWx3YXlzIi8+DQo8L2pubHA+DQo='
},
{
javafx : '8.0+'
},
{}
);
return false;
}
</script>
<script>
function javafxEmbedlab140_2fxml() {
dtjava.embed(
{
id : 'lab140_2fxml',
url : 'Lab140_2FXML.jnlp',
placeholder : 'javafx-app-placeholder',
width : '800',
height : '600',
jnlp_content : 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxqbmxwIHNwZWM9IjEuMCIgeG1sbnM6amZ4PSJodHRwOi8vamF2YWZ4LmNvbSIgaHJlZj0iTGFiMTQwXzJGWE1MLmpubHAiPg0KICA8aW5mb3JtYXRpb24+DQogICAgPHRpdGxlPkxhYjE0MF8yRlhNTDwvdGl0bGU+DQogICAgPHZlbmRvcj5kZW5pczwvdmVuZG9yPg0KICAgIDxkZXNjcmlwdGlvbj5udWxsPC9kZXNjcmlwdGlvbj4NCiAgICA8b2ZmbGluZS1hbGxvd2VkLz4NCiAgPC9pbmZvcm1hdGlvbj4NCiAgPHJlc291cmNlcz4NCiAgICA8ajJzZSB2ZXJzaW9uPSIxLjYrIiBocmVmPSJodHRwOi8vamF2YS5zdW4uY29tL3Byb2R1Y3RzL2F1dG9kbC9qMnNlIi8+DQogICAgPGphciBocmVmPSJMYWIxNDBfMkZYTUwuamFyIiBzaXplPSIxNDc0NiIgZG93bmxvYWQ9ImVhZ2VyIiAvPg0KICAgIDxqYXIgaHJlZj0ibGliXGRlcmJ5LmphciIgc2l6ZT0iMzIzMjc3MCIgZG93bmxvYWQ9ImVhZ2VyIiAvPg0KICAgIDxqYXIgaHJlZj0ibGliXGRlcmJ5Y2xpZW50LmphciIgc2l6ZT0iNTg4Mzk0IiBkb3dubG9hZD0iZWFnZXIiIC8+DQogICAgPGphciBocmVmPSJsaWJcZGVyYnluZXQuamFyIiBzaXplPSIyNzI2MjYiIGRvd25sb2FkPSJlYWdlciIgLz4NCiAgPC9yZXNvdXJjZXM+DQogIDxhcHBsZXQtZGVzYyAgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAiIG1haW4tY2xhc3M9ImNvbS5qYXZhZngubWFpbi5Ob0phdmFGWEZhbGxiYWNrIiAgbmFtZT0iTGFiMTQwXzJGWE1MIiA+DQogICAgPHBhcmFtIG5hbWU9InJlcXVpcmVkRlhWZXJzaW9uIiB2YWx1ZT0iOC4wKyIvPg0KICA8L2FwcGxldC1kZXNjPg0KICA8amZ4OmphdmFmeC1kZXNjICB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCIgbWFpbi1jbGFzcz0ibGFiMTQwXzJmeG1sLkxhYjE0MF8yRlhNTCIgIG5hbWU9IkxhYjE0MF8yRlhNTCIgLz4NCiAgPHVwZGF0ZSBjaGVjaz0iYWx3YXlzIi8+DQo8L2pubHA+DQo='
},
{
javafx : '8.0+'
},
{}
);
}
<!-- Embed FX application into web page once page is loaded -->
dtjava.addOnloadCallback(javafxEmbedlab140_2fxml);
</script>
</head><body>
<h2>Test page for <b>Lab140_2FXML</b></h2>
<b>Webstart:</b> <a href='Lab140_2FXML.jnlp' onclick="return launchApplication('Lab140_2FXML.jnlp');">click to launch this app as webstart</a><br><hr><br>
<!-- Applet will be inserted here -->
<div id='javafx-app-placeholder'></div>
</body></html>

BIN
java/samples/fxml/Lab140_2FXML/dist/Lab140_2FXML.jar vendored

Binary file not shown.

21
java/samples/fxml/Lab140_2FXML/dist/Lab140_2FXML.jnlp vendored

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0" xmlns:jfx="http://javafx.com" href="Lab140_2FXML.jnlp">
<information>
<title>Lab140_2FXML</title>
<vendor>denis</vendor>
<description>null</description>
<offline-allowed/>
</information>
<resources>
<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
<jar href="Lab140_2FXML.jar" size="14746" download="eager" />
<jar href="lib\derby.jar" size="3232770" download="eager" />
<jar href="lib\derbyclient.jar" size="588394" download="eager" />
<jar href="lib\derbynet.jar" size="272626" download="eager" />
</resources>
<applet-desc width="800" height="600" main-class="com.javafx.main.NoJavaFXFallback" name="Lab140_2FXML" >
<param name="requiredFXVersion" value="8.0+"/>
</applet-desc>
<jfx:javafx-desc width="800" height="600" main-class="lab140_2fxml.Lab140_2FXML" name="Lab140_2FXML" />
<update check="always"/>
</jnlp>

BIN
java/samples/fxml/Lab140_2FXML/dist/lib/derby.jar vendored

Binary file not shown.

BIN
java/samples/fxml/Lab140_2FXML/dist/lib/derbyclient.jar vendored

Binary file not shown.

BIN
java/samples/fxml/Lab140_2FXML/dist/lib/derbynet.jar vendored

Binary file not shown.

3958
java/samples/fxml/Lab140_2FXML/dist/web-files/dtjava.js vendored

File diff suppressed because it is too large Load Diff

BIN
java/samples/fxml/Lab140_2FXML/dist/web-files/error.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 725 B

BIN
java/samples/fxml/Lab140_2FXML/dist/web-files/get_java.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

BIN
java/samples/fxml/Lab140_2FXML/dist/web-files/get_javafx.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
java/samples/fxml/Lab140_2FXML/dist/web-files/javafx-chrome.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
java/samples/fxml/Lab140_2FXML/dist/web-files/javafx-loading-100x100.gif vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
java/samples/fxml/Lab140_2FXML/dist/web-files/javafx-loading-25x25.gif vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
java/samples/fxml/Lab140_2FXML/dist/web-files/upgrade_java.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
java/samples/fxml/Lab140_2FXML/dist/web-files/upgrade_javafx.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

3
java/samples/fxml/Lab140_2FXML/manifest.mf

@ -0,0 +1,3 @@
Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build

1421
java/samples/fxml/Lab140_2FXML/nbproject/build-impl.xml

File diff suppressed because it is too large Load Diff

2
java/samples/fxml/Lab140_2FXML/nbproject/configs/______________WebStart.properties

@ -0,0 +1,2 @@
# Do not modify this property in this configuration. It can be re-generated.
$label=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u0430\u043a WebStart

2
java/samples/fxml/Lab140_2FXML/nbproject/configs/____________________.properties

@ -0,0 +1,2 @@
# Do not modify this property in this configuration. It can be re-generated.
$label=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435

8
java/samples/fxml/Lab140_2FXML/nbproject/genfiles.properties

@ -0,0 +1,8 @@
build.xml.data.CRC32=9b3f762f
build.xml.script.CRC32=ae828570
build.xml.stylesheet.CRC32=8064a381@1.80.1.48
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=9b3f762f
nbproject/build-impl.xml.script.CRC32=6fa596cb
nbproject/build-impl.xml.stylesheet.CRC32=830a3534@1.80.1.48

4049
java/samples/fxml/Lab140_2FXML/nbproject/jfx-impl.xml

File diff suppressed because it is too large Load Diff

2
java/samples/fxml/Lab140_2FXML/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

2
java/samples/fxml/Lab140_2FXML/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

4
java/samples/fxml/Lab140_2FXML/nbproject/private/private.properties

@ -0,0 +1,4 @@
auxiliary.org-netbeans-modules-projectapi.issue214819_5f_fx_5f_enabled=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=.
user.properties.file=C:\\Users\\denis.LAPTOP-4LI8UQ4O\\AppData\\Roaming\\NetBeans\\8.2\\build.properties

114
java/samples/fxml/Lab140_2FXML/nbproject/project.properties

@ -0,0 +1,114 @@
annotation.processing.enabled=true
annotation.processing.enabled.in.editor=false
annotation.processing.processor.options=
annotation.processing.processors.list=
annotation.processing.run.all.processors=true
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
application.title=Lab140_2FXML
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}/Lab140_2FXML.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.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.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.embedJNLP=true
javafx.deploy.includeDT=true
# \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=lab140_2fxml.Lab140_2FXML
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
# 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
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

25
java/samples/fxml/Lab140_2FXML/nbproject/project.xml

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
<buildExtensions xmlns="http://www.netbeans.org/ns/ant-build-extender/1">
<extension file="jfx-impl.xml" id="jfx3">
<dependency dependsOn="-jfx-copylibs" target="-post-jar"/>
<dependency dependsOn="-rebase-libs" target="-post-jar"/>
<dependency dependsOn="jfx-deployment" target="-post-jar"/>
<dependency dependsOn="jar" target="debug"/>
<dependency dependsOn="jar" target="profile"/>
<dependency dependsOn="jar" target="run"/>
</extension>
</buildExtensions>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>Lab140_2FXML</name>
<source-roots>
<root id="src.dir"/>
</source-roots>
<test-roots>
<root id="test.src.dir"/>
</test-roots>
</data>
</configuration>
</project>

100
java/samples/fxml/Lab140_2FXML/src/controller/PersonDto.java

@ -0,0 +1,100 @@
/*
* 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 controller;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import model.Education;
import model.Person;
/**
*
* @author denis
*/
public class PersonDto {
private int id;
private String firstname;
private String lastname;
private String gender;
private int educationCount;
private Set<Education> educations;
public PersonDto(Person person) {
this.id = person.getId();
this.firstname = person.getFirstname();
this.lastname = person.getLastname();
this.gender = person.getGender();
educationCount = person.getEducations().size();
educations = person.getEducations();
}
public int getId() {
return id;
}
public String getFirstname() {
return firstname;
}
public String getLastname() {
return lastname;
}
public String getGender() {
return gender;
}
public Set<Education> getEducations() {
return educations;
}
public int getEducationCount() {
return educations.size();
}
@Override
public int hashCode() {
int hash = 5;
hash = 23 * hash + this.id;
hash = 23 * hash + Objects.hashCode(this.firstname);
hash = 23 * hash + Objects.hashCode(this.lastname);
hash = 23 * 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 PersonDto other = (PersonDto) obj;
if (this.id != other.id) {
return false;
}
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;
}
return true;
}
@Override
public String toString() {
return "Person{" + "id=" + id + ", firstname=" + firstname + ", lastname=" + lastname + ", gender=" + gender + '}';
}
}

45
java/samples/fxml/Lab140_2FXML/src/lab140_2fxml/EducationStage.java

@ -0,0 +1,45 @@
/*
* 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 lab140_2fxml;
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 static int PERSONID;
public EducationStage(int id) {
PERSONID = id;
}
public void init(){
Parent root = null;
try {
root = FXMLLoader.load(getClass().getResource("FXMLEducation.fxml"));
Scene scene = new Scene(root);
setScene(scene);
initModality(Modality.APPLICATION_MODAL);
showAndWait();
} catch (IOException ex) {
Logger.getLogger(EducationStage.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

21
java/samples/fxml/Lab140_2FXML/src/lab140_2fxml/FXMLDocument.fxml

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml/1" fx:controller="lab140_2fxml.FXMLDocumentController">
<children>
<TableView fx:id="table" onMouseClicked="#handlerMouseClicked" onKeyPressed="#handlerKeyPressed" >
<columns>
<TableColumn fx:id="idColumn" text="ИД" prefWidth="100" />
<TableColumn fx:id="firstnameColumn" text="Имя" prefWidth="200" />
<TableColumn fx:id="lastnameColumn" text="Фамилия" prefWidth="200" />
<TableColumn fx:id="countColumn" text="кол-во" prefWidth="50" />
<TableColumn fx:id="genderColumn" text="пол" prefWidth="150" />
</columns>
</TableView>
</children>
</AnchorPane>

104
java/samples/fxml/Lab140_2FXML/src/lab140_2fxml/FXMLDocumentController.java

@ -0,0 +1,104 @@
/*
* 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 lab140_2fxml;
import controller.PersonDto;
import java.net.URL;
import java.util.ResourceBundle;
import java.util.Set;
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;
import model.Person;
import repo.Repository;
/**
*
* @author denis
*/
public class FXMLDocumentController implements Initializable {
@FXML
private TableView<PersonDto> table;
// @FXML
// private TableColumn<PersonDto, Integer> idColumn;
// @FXML
// private TableColumn<PersonDto, String> firstnameColumn;
// @FXML
// private TableColumn<PersonDto, String> lastnameColumn;
// @FXML
// private TableColumn<PersonDto, String> genderColumn;
// @FXML
// private TableColumn<PersonDto, Integer> countColumn;
@FXML
private void handlerMouseClicked(MouseEvent event) {
if(event.getClickCount()==2){
PersonDto dto = table.getSelectionModel().getSelectedItem();
System.out.println(dto);
int id = dto.getId();
new EducationStage(id).init();
}
}
@FXML
private void handlerKeyPressed(KeyEvent event) {
if(event.getCode()==KeyCode.ENTER){
PersonDto dto = table.getSelectionModel().getSelectedItem();
System.out.println(dto);
int id = dto.getId();
new EducationStage(id).init();
}
}
@Override
public void initialize(URL url, ResourceBundle rb) {
Repository repository = new Repository();
//получаем коллекцию персон из репозитория
Set<Person> persons = repository.getAllPerson();
//преобразовываем коллекцию персон в коллекцию personDto
Set<PersonDto> personDto = persons.stream().map(person -> new PersonDto(person)).collect(Collectors.toSet());
//создаем ObservableList на основе коллекции personDto
ObservableList<PersonDto> obsPersons = FXCollections.observableArrayList(personDto);
table.getColumns().forEach(column -> {
String title = column.getText();
switch(title){
case "ИД":
column.setCellValueFactory(new PropertyValueFactory<>("id"));
break;
case "Имя":
column.setCellValueFactory(new PropertyValueFactory<>("firstname"));
break;
case "Фамилия":
column.setCellValueFactory(new PropertyValueFactory<>("lastname"));
break;
case "кол-во":
column.setCellValueFactory(new PropertyValueFactory<>("educationCount"));
break;
case "пол":
column.setCellValueFactory(new PropertyValueFactory<>("gender"));
break;
}
});
// table.getColumns().get(0).setCellValueFactory(new PropertyValueFactory<>("id"));
// table.getColumns().get(1).setCellValueFactory(new PropertyValueFactory<>("firstname"));
// table.getColumns().get(2).setCellValueFactory(new PropertyValueFactory<>("lastname"));
// table.getColumns().get(3).setCellValueFactory(new PropertyValueFactory<>("gender"));
// table.getColumns().get(4).setCellValueFactory(new PropertyValueFactory<>("educationCount"));
table.setItems(obsPersons);
}
}

20
java/samples/fxml/Lab140_2FXML/src/lab140_2fxml/FXMLEducation.fxml

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" fx:controller="lab140_2fxml.FXMLEducationController">
<children>
<TableView fx:id="table" >
<columns>
<TableColumn fx:id="idColumn" text="ИД" prefWidth="100" />
<TableColumn fx:id="universitynameColumn" text="Университет" prefWidth="300" />
<TableColumn fx:id="datefinishColumn" text="Дата окончания" prefWidth="100" />
<TableColumn fx:id="cityColumn" text="Город" prefWidth="100" />
</columns>
</TableView>
</children>
</AnchorPane>

55
java/samples/fxml/Lab140_2FXML/src/lab140_2fxml/FXMLEducationController.java

@ -0,0 +1,55 @@
/*
* 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 lab140_2fxml;
import java.net.URL;
import java.sql.Date;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import model.Education;
import model.Person;
import repo.Repository;
/**
* FXML Controller class
*
* @author denis
*/
public class FXMLEducationController implements Initializable {
@FXML
private TableView<Education> table;
@FXML
private TableColumn<Education, Integer> idColumn;
@FXML
private TableColumn<Education, String> universitynameColumn;
@FXML
private TableColumn<Education, Date> datefinishColumn;
@FXML
private TableColumn<Education, String> cityColumn;
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
Repository repo = new Repository();
Person person = repo.findPersonById(EducationStage.PERSONID);
ObservableList<Education> list = FXCollections.observableArrayList(person.getEducations());
idColumn.setCellValueFactory(new PropertyValueFactory<>("id"));
universitynameColumn.setCellValueFactory(new PropertyValueFactory<>("universityname"));
datefinishColumn.setCellValueFactory(new PropertyValueFactory<>("datefinish"));
cityColumn.setCellValueFactory(new PropertyValueFactory<>("city"));
table.setItems(list);
}
}

37
java/samples/fxml/Lab140_2FXML/src/lab140_2fxml/Lab140_2FXML.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 lab140_2fxml;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
/**
*
* @author denis
*/
public class Lab140_2FXML extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.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);
}
}

112
java/samples/fxml/Lab140_2FXML/src/model/Education.java

@ -0,0 +1,112 @@
/*
* 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 model;
import java.sql.Date;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
/**
*
* @author denis
*/
public class Education {
private int id;
private String universityname;
private Date datefinish;
private String city;
private Set<Person> persons = new HashSet<>();
public Education(int id, String universityname, Date datefinish, String city) {
this.id = id;
this.universityname = universityname;
this.datefinish = datefinish;
this.city = city;
}
public int getId() {
return id;
}
public void setId(int 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;
}
public Set<Person> getPersons() {
return persons;
}
public void setPersons(Set<Person> persons) {
this.persons = persons;
}
@Override
public int hashCode() {
int hash = 3;
hash = 89 * hash + this.id;
hash = 89 * hash + Objects.hashCode(this.universityname);
hash = 89 * hash + Objects.hashCode(this.datefinish);
hash = 89 * 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 (this.id != other.id) {
return false;
}
if (!Objects.equals(this.universityname, other.universityname)) {
return false;
}
if (!Objects.equals(this.city, other.city)) {
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 + '}';
}
}

119
java/samples/fxml/Lab140_2FXML/src/model/Person.java

@ -0,0 +1,119 @@
/*
* 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 model;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
/**
*
* @author denis
*/
public class Person {
private int id;
private String firstname;
private String lastname;;
private String gender;
private Set<Education> educations = new HashSet<>();
public Person(int id, String firstname, String lastname, String gender) {
this.id = id;
this.firstname = firstname;
this.lastname = lastname;
this.gender = gender;
}
public int getId() {
return id;
}
public void setId(int 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 Set<Education> getEducations() {
return educations;
}
public void setEducations(Set<Education> educations) {
this.educations = educations;
}
public void addEducation(Education education){
educations.add(education);
education.getPersons().add(this);
}
@Override
public int hashCode() {
int hash = 5;
hash = 59 * hash + this.id;
hash = 59 * hash + Objects.hashCode(this.firstname);
hash = 59 * hash + Objects.hashCode(this.lastname);
hash = 59 * 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 (this.id != other.id) {
return false;
}
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;
}
return true;
}
@Override
public String toString() {
return "Person{" + "id=" + id + ", firstname=" + firstname + ", lastname=" + lastname + ", gender=" + gender + '}';
}
}

100
java/samples/fxml/Lab140_2FXML/src/repo/Repository.java

@ -0,0 +1,100 @@
/*
* 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 repo;
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.HashSet;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import model.Education;
import model.Person;
/**
*
* @author denis
*/
public class Repository {
public Set<Person> getAllPerson(){
Set<Person> persons = new HashSet<>();
try (Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/TrainingDatabase", "root", "root");
Statement stm = con.createStatement()) {
String sql = "SELECT * FROM PERSON LEFT JOIN EDUCATION ON PERSON.ID = EDUCATION.PERSONID";
try (ResultSet rs = stm.executeQuery(sql)){
while(rs.next()){
Person person;
{
int id = rs.getInt(1);
person = persons.stream().filter(p -> p.getId()==id).findFirst().orElse(null);
if(person==null){
String firstname = rs.getString(2);
String lastname = rs.getString(3);
String gender = rs.getString(4);
person = new Person(id, firstname, lastname, gender);
persons.add(person);
}
}
{
int id = rs.getInt(5);
String universityname = rs.getString(6);
Date datefinish = rs.getDate(7);
String City = rs.getString(8);
if(universityname!=null || datefinish!=null || City!=null){
Education education = new Education(id, universityname, datefinish, City);
person.addEducation(education);
}
}
}
}
} catch (SQLException ex) {
Logger.getLogger(Repository.class.getName()).log(Level.SEVERE, null, ex);
}
return persons;
}
public Person findPersonById(int personid){
Person person = null;
try (Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/TrainingDatabase", "root", "root");
Statement stm = con.createStatement()) {
String sql = "SELECT * FROM PERSON LEFT JOIN EDUCATION ON PERSON.ID = EDUCATION.PERSONID WHERE PERSON.ID=" + personid;
try (ResultSet rs = stm.executeQuery(sql)){
while(rs.next()){
{
int id = rs.getInt(1);
String firstname = rs.getString(2);
String lastname = rs.getString(3);
String gender = rs.getString(4);
if(person==null && (firstname!=null || lastname!=null || gender!=null)){
person = new Person(id, firstname, lastname, gender);
}
}
{
int id = rs.getInt(5);
String universityname = rs.getString(6);
Date datefinish = rs.getDate(7);
String City = rs.getString(8);
if(universityname!=null || datefinish!=null || City!=null){
Education education = new Education(id, universityname, datefinish, City);
person.addEducation(education);
}
}
}
}
} catch (SQLException ex) {
Logger.getLogger(Repository.class.getName()).log(Level.SEVERE, null, ex);
}
return person;
}
}
Loading…
Cancel
Save