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;
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