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
No related merge requests found
......@@ -2,7 +2,7 @@ package table_view;
import javafx.beans.property.SimpleStringProperty;
class Person {
public class Person {
private final Long id;
private final SimpleStringProperty firstName;
......
......@@ -12,6 +12,12 @@ import java.util.LinkedList;
class PersonDAO implements AutoCloseable{
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;
......@@ -61,7 +67,7 @@ class PersonDAO implements AutoCloseable{
checkConnection();
Collection<Person> result = new LinkedList<>();
try (Statement stm = conn.createStatement()){
stm.execute("SELECT id, first_name, last_name, email FROM person");
stm.execute(SELECT_SQL);
ResultSet resultSet = stm.getResultSet();
while(resultSet.next()) {
result.add(new Person(resultSet.getLong(1), resultSet.getString(2), resultSet.getString(3),resultSet.getString(4)));
......@@ -75,7 +81,7 @@ class PersonDAO implements AutoCloseable{
public boolean updatePerson(Person p) {
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(2, p.getLastName());
ps.setString(3, p.getEmail());
......@@ -90,7 +96,7 @@ class PersonDAO implements AutoCloseable{
public boolean deletePerson(Person p) {
checkConnection();
try (PreparedStatement ps = conn.prepareStatement("DELETE FROM person WHERE id = ?")){
try (PreparedStatement ps = conn.prepareStatement(DELETE_SQL)){
ps.setLong(1, p.getId());
ps.executeUpdate();
return true;
......
......@@ -4,6 +4,7 @@ import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
......@@ -23,9 +24,9 @@ import javafx.stage.WindowEvent;
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;
......@@ -55,42 +56,17 @@ public class TableViewSample extends Application {
label.setFont(new Font("Arial", 20));
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);
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);
addFirstName = new TextField();
addFirstName.setPromptText("First Name");
addFirstName.setMaxWidth(firstNameCol.getPrefWidth());
addLastName = new TextField();
addLastName.setMaxWidth(lastNameCol.getPrefWidth());
addLastName.setPromptText("Last Name");
addEmail = new TextField();
addEmail.setMaxWidth(emailCol.getPrefWidth());
addEmail.setPromptText("Email");
addFirstName = constructTextField(firstNameCol,"First Name");
addLastName = constructTextField(lastNameCol,"Last Name");
addEmail = constructTextField(emailCol,"Email");
final Button addButton = new Button("Add");
addButton.setOnAction(this::handleOnAdd);
......@@ -105,13 +81,25 @@ public class TableViewSample extends Application {
((Group) scene.getRoot()).getChildren().addAll(vbox);
stage.setScene(scene);
fillTable();
stage.show();
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) {
......
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