Skip to content
Snippets Groups Projects
Commit c3ecb72d authored by Jan Kožusznik's avatar Jan Kožusznik
Browse files

Refactoring, fix of Person visibility

parent 6b0310a7
Branches
No related merge requests found
...@@ -2,7 +2,7 @@ package table_view; ...@@ -2,7 +2,7 @@ package table_view;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
class Person { public class Person {
private final Long id; private final Long id;
private final SimpleStringProperty firstName; private final SimpleStringProperty firstName;
......
...@@ -12,6 +12,12 @@ import java.util.LinkedList; ...@@ -12,6 +12,12 @@ import java.util.LinkedList;
class PersonDAO implements AutoCloseable{ class PersonDAO implements AutoCloseable{
private static final String INSERT_SQL = "INSERT INTO person(first_name, last_name, email) values (?,?,?)"; private static final String INSERT_SQL = "INSERT INTO person(first_name, last_name, email) values (?,?,?)";
private static final String SELECT_SQL = "SELECT id, first_name, last_name, email FROM person";
private static final String UPDATE_SQL = "UPDATE person set first_name = ?, last_name = ?, email = ? WHERE id = ?";
private static final String DELETE_SQL = "DELETE FROM person WHERE id = ?";
private Connection conn; private Connection conn;
...@@ -61,7 +67,7 @@ class PersonDAO implements AutoCloseable{ ...@@ -61,7 +67,7 @@ class PersonDAO implements AutoCloseable{
checkConnection(); checkConnection();
Collection<Person> result = new LinkedList<>(); Collection<Person> result = new LinkedList<>();
try (Statement stm = conn.createStatement()){ try (Statement stm = conn.createStatement()){
stm.execute("SELECT id, first_name, last_name, email FROM person"); stm.execute(SELECT_SQL);
ResultSet resultSet = stm.getResultSet(); ResultSet resultSet = stm.getResultSet();
while(resultSet.next()) { while(resultSet.next()) {
result.add(new Person(resultSet.getLong(1), resultSet.getString(2), resultSet.getString(3),resultSet.getString(4))); result.add(new Person(resultSet.getLong(1), resultSet.getString(2), resultSet.getString(3),resultSet.getString(4)));
...@@ -75,7 +81,7 @@ class PersonDAO implements AutoCloseable{ ...@@ -75,7 +81,7 @@ class PersonDAO implements AutoCloseable{
public boolean updatePerson(Person p) { public boolean updatePerson(Person p) {
checkConnection(); checkConnection();
try (PreparedStatement ps = conn.prepareStatement("UPDATE person set first_name = ?, last_name = ?, email = ? WHERE id = ?")){ try (PreparedStatement ps = conn.prepareStatement(UPDATE_SQL)){
ps.setString(1, p.getFirstName()); ps.setString(1, p.getFirstName());
ps.setString(2, p.getLastName()); ps.setString(2, p.getLastName());
ps.setString(3, p.getEmail()); ps.setString(3, p.getEmail());
...@@ -90,7 +96,7 @@ class PersonDAO implements AutoCloseable{ ...@@ -90,7 +96,7 @@ class PersonDAO implements AutoCloseable{
public boolean deletePerson(Person p) { public boolean deletePerson(Person p) {
checkConnection(); checkConnection();
try (PreparedStatement ps = conn.prepareStatement("DELETE FROM person WHERE id = ?")){ try (PreparedStatement ps = conn.prepareStatement(DELETE_SQL)){
ps.setLong(1, p.getId()); ps.setLong(1, p.getId());
ps.executeUpdate(); ps.executeUpdate();
return true; return true;
......
...@@ -4,6 +4,7 @@ import javafx.application.Application; ...@@ -4,6 +4,7 @@ import javafx.application.Application;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.scene.Group; import javafx.scene.Group;
import javafx.scene.Scene; import javafx.scene.Scene;
...@@ -23,9 +24,9 @@ import javafx.stage.WindowEvent; ...@@ -23,9 +24,9 @@ import javafx.stage.WindowEvent;
public class TableViewSample extends Application { public class TableViewSample extends Application {
private TableView<Person> table = new TableView<Person>(); private final PersonDAO dao;
private final PersonDAO dao; private TableView<Person> table = new TableView<>();
private final ObservableList<Person> data; private final ObservableList<Person> data;
...@@ -55,42 +56,17 @@ public class TableViewSample extends Application { ...@@ -55,42 +56,17 @@ public class TableViewSample extends Application {
label.setFont(new Font("Arial", 20)); label.setFont(new Font("Arial", 20));
table.setEditable(true); table.setEditable(true);
TableColumn<Person,String> firstNameCol = new TableColumn<>("First Name");
firstNameCol.setMinWidth(100);
firstNameCol.setCellValueFactory(
new PropertyValueFactory<Person, String>("firstName"));
firstNameCol.setCellFactory(TextFieldTableCell.forTableColumn());
firstNameCol.setOnEditCommit(this::handleOnEditCommitFirstName);
TableColumn<Person,String> lastNameCol = new TableColumn<>("Last Name");
lastNameCol.setMinWidth(100);
lastNameCol.setCellValueFactory(
new PropertyValueFactory<Person, String>("lastName"));
lastNameCol.setCellFactory(TextFieldTableCell.forTableColumn());
lastNameCol.setOnEditCommit(this::handleOnEditCommitLastName);
TableColumn<Person,String> emailCol = new TableColumn<>("Email");
emailCol.setMinWidth(200);
emailCol.setCellValueFactory(
new PropertyValueFactory<Person, String>("email"));
emailCol.setCellFactory(TextFieldTableCell.forTableColumn());
emailCol.setOnEditCommit(this::handleOnEditCommitEmail);
table.setItems(data); table.setItems(data);
TableColumn<Person, String> firstNameCol = constructColumn("First Name","firstName", this::handleOnEditCommitFirstName);
TableColumn<Person,String> lastNameCol = constructColumn("Last Name","lastName", this::handleOnEditCommitLastName);
TableColumn<Person,String> emailCol = constructColumn("Email","email",this::handleOnEditCommitEmail);
table.getColumns().addAll(firstNameCol, lastNameCol, emailCol); table.getColumns().addAll(firstNameCol, lastNameCol, emailCol);
addFirstName = new TextField();
addFirstName.setPromptText("First Name"); addFirstName = constructTextField(firstNameCol,"First Name");
addFirstName.setMaxWidth(firstNameCol.getPrefWidth()); addLastName = constructTextField(lastNameCol,"Last Name");
addLastName = new TextField(); addEmail = constructTextField(emailCol,"Email");
addLastName.setMaxWidth(lastNameCol.getPrefWidth());
addLastName.setPromptText("Last Name");
addEmail = new TextField();
addEmail.setMaxWidth(emailCol.getPrefWidth());
addEmail.setPromptText("Email");
final Button addButton = new Button("Add"); final Button addButton = new Button("Add");
addButton.setOnAction(this::handleOnAdd); addButton.setOnAction(this::handleOnAdd);
...@@ -105,13 +81,25 @@ public class TableViewSample extends Application { ...@@ -105,13 +81,25 @@ public class TableViewSample extends Application {
((Group) scene.getRoot()).getChildren().addAll(vbox); ((Group) scene.getRoot()).getChildren().addAll(vbox);
stage.setScene(scene); stage.setScene(scene);
fillTable();
stage.show(); stage.show();
stage.setOnCloseRequest(this::exitProgram); stage.setOnCloseRequest(this::exitProgram);
} }
private void fillTable() { private TextField constructTextField(TableColumn<Person, String> column, String string) {
TextField result = new TextField();
result.setPromptText("First Name");
result.setMaxWidth(column.getPrefWidth());
return result;
}
private TableColumn<Person, String> constructColumn(String name, String propertyName,
EventHandler<CellEditEvent<Person, String>> callback) {
TableColumn<Person, String> col = new TableColumn<>(name);
col.setMinWidth(100);
col.setCellValueFactory(new PropertyValueFactory<>(propertyName));
col.setCellFactory(TextFieldTableCell.forTableColumn());
col.setOnEditCommit(callback);
return col;
} }
private void handleOnAdd(ActionEvent e) { private void handleOnAdd(ActionEvent e) {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment