package jfxapp; import javafx.application.Platform; import javafx.beans.property.SimpleStringProperty; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.scene.control.*; import javafx.scene.input.MouseButton; import javafx.scene.input.MouseEvent; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.GridPane; import javafx.util.Callback; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.criterion.Order; import org.hibernate.criterion.Projections; import java.net.URL; import java.util.Iterator; import java.util.ResourceBundle; public class samexam6 { Integer pid = null; @FXML private ResourceBundle resources; @FXML private URL location; @FXML private TableView> table1; @FXML private TableColumn, String> col1; @FXML private TableColumn, String> col2; @FXML private TableColumn, String> col3; @FXML private TableColumn, String> col4; @FXML private TableColumn, String> col5; @FXML private TableColumn, String> col6; @FXML private TextField u_Cele; @FXML private TextField u_Datum; @FXML private TextField u_Maledes; @FXML private TextField n_Desetinne; @FXML private Button sr_Button; @FXML private Button nr_Button; @FXML private GridPane grid1; @FXML private TextField n_Datum; @FXML private AnchorPane contentPane; @FXML private TextField u_ID; @FXML private TextField u_Desetinne; @FXML private GridPane grid11; @FXML private TextField u_Text; @FXML private Button d_Button; @FXML private Button e_Button; @FXML private TextField n_Cele; @FXML private TextField n_Text; @FXML private TextField n_Maledes; @FXML private DatePicker dp_Datum; @FXML private Button a_Button; @FXML private Button u_Button; @FXML private TabPane tabPane; @FXML private TextField n_ID; @FXML void btn_D_Click(ActionEvent event) { onDelete(); } @FXML void btn_A_Click(ActionEvent event) { rec_Update(); } @FXML void btn_U_Click(ActionEvent event) { save_Update2(); } @FXML void btn_E_Click(ActionEvent event) { hibernate_Query(); } @FXML void btn_NR_Click(ActionEvent event) { new_Record(); } @FXML void btn_SR_Click(ActionEvent event) { save_Record2(); } @FXML void initialize() { viewTable(); table1.setOnMouseClicked(new EventHandler() { @Override public void handle(MouseEvent mouseEvent) { if (mouseEvent.getButton().equals(MouseButton.PRIMARY)) { if (mouseEvent.getClickCount() == 2) { tableClick(); } } } }); dp_Datum.setOnAction(event -> { n_Datum.setText(dp_Datum.getValue().toString()); }); } private void hibernate_Query() { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); Query query = session.createQuery("from udaje "); // System.out.println(query.list().get(0).toString()); for (Iterator iterator = query.iterate(); iterator.hasNext();) { udaje data = (udaje) iterator.next(); System.out.println(data.getId()+" , "+data.getCelecis()+" , "+data.getDescis() +" , "+data.getMaledes()+" , "+data.getRetezec()+" , "+data.getDatum()); } ObservableList list = javafx.collections.FXCollections.observableArrayList(query.list()); System.out.println(list.toString()); session.flush(); session.close(); } private void initTableColumn(final TableColumn[] column) { for (int i=0;i, String>, ObservableValue>() { @Override public ObservableValue call(TableColumn.CellDataFeatures, String> param) { return new SimpleStringProperty(param.getValue().get(finalI)); } }); } } private void alignTableColumn(final TableColumn[] column, final String[] align) { String pos = null; for (int i=0;i dataView() { ObservableList data = FXCollections.observableArrayList(); SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); Query query = session.createQuery("FROM udaje ORDER BY id"); for (Iterator iterator = query.iterate(); iterator.hasNext();) { udaje udaj = (udaje) iterator.next(); ObservableList row = FXCollections.observableArrayList(); row.add(udaj.getId().toString()); row.add(udaj.getCelecis().toString()); row.add(udaj.getDescis().toString()); row.add(udaj.getMaledes().toString()); row.add(udaj.getRetezec()); row.add(udaj.getDatum().toString()); data.add(row); } // System.out.println(data.toString()); session.flush(); sessionFactory.close(); return data; } private void viewTable() { final ObservableList data = dataView(); final TableColumn[] tc = new TableColumn[]{col1, col2, col3, col4, col5, col6}; initTableColumn(tc); alignTableColumn(tc, new String[]{"CA", "RA", "RA", "RA", "LA", "CA"}); table1.setItems(data); } private void tf_RO() { u_Cele.setEditable(false); u_Desetinne.setEditable(false); u_Maledes.setEditable(false); u_Text.setEditable(false); u_Datum.setEditable(false); } private void tf_RW() { u_Cele.setEditable(true); u_Desetinne.setEditable(true); u_Maledes.setEditable(true); u_Text.setEditable(true); u_Datum.setEditable(true); } private void tableClick() { pid = Integer.valueOf(String.valueOf(table1.getSelectionModel().getSelectedItems().get(0).get(0))); u_ID.setText(pid.toString()); u_Cele.setText(String.valueOf(table1.getSelectionModel().getSelectedItems().get(0).get(1))); u_Desetinne.setText(String.valueOf(table1.getSelectionModel().getSelectedItems().get(0).get(2))); u_Maledes.setText(String.valueOf(table1.getSelectionModel().getSelectedItems().get(0).get(3))); u_Text.setText(String.valueOf(table1.getSelectionModel().getSelectedItems().get(0).get(4))); u_Datum.setText(String.valueOf(table1.getSelectionModel().getSelectedItems().get(0).get(5))); tabPane.getSelectionModel().select(1); tf_RO(); d_Button.setDisable(false); a_Button.setDisable(false); u_Button.setDisable(true); e_Button.setDisable(true); } private void deleteRec1() { Short ID = pid.shortValue(); SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); session.getTransaction().begin(); Query query = session.createQuery("DELETE FROM udaje WHERE id = :ID"); query.setParameter("ID",ID); Integer res = query.executeUpdate(); session.getTransaction().commit(); System.out.println(res.toString()); session.flush(); sessionFactory.close(); } private void deleteRec2() { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); session.getTransaction().begin(); udaje radek = new udaje(); radek.setId(pid.shortValue()); session.delete(radek); session.getTransaction().commit(); session.flush(); sessionFactory.close(); } private void onDelete() { deleteRec2(); viewTable(); tabPane.getSelectionModel().select(0); } private void rec_Update() { tf_RW(); u_Button.setDisable(false); e_Button.setDisable(false); u_Cele.requestFocus(); } private void save_Update1() { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); session.getTransaction().begin(); Query query = session.createQuery("UPDATE udaje SET celecis= :cele, descis= :dese WHERE id = :ID"); query.setParameter("cele",Integer.valueOf(u_Cele.getText())); query.setParameter("dese",Double.valueOf(u_Desetinne.getText())); query.setParameter("ID",pid.shortValue()); query.executeUpdate(); session.getTransaction().commit(); session.flush(); sessionFactory.close(); viewTable(); tf_RO(); a_Button.setDisable(true); e_Button.setDisable(true); u_Button.setDisable(true); tabPane.getSelectionModel().select(0); } private void save_Update2() { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); session.getTransaction().begin(); udaje radek = (udaje) session.get(udaje.class, pid.shortValue()); radek.setCelecis(Integer.valueOf(u_Cele.getText())); radek.setDescis(Double.valueOf(u_Desetinne.getText())); session.update(radek); session.getTransaction().commit(); session.flush(); sessionFactory.close(); viewTable(); tf_RO(); a_Button.setDisable(true); e_Button.setDisable(true); u_Button.setDisable(true); tabPane.getSelectionModel().select(0); } private Integer maxKFV1() { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); Query query = session.createQuery("SELECT max(Table.id) FROM udaje Table"); Short maxid = (Short) query.list().get(0); session.flush(); sessionFactory.close(); return maxid + 1; } private Integer maxKFV2() { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); Criteria criteria = session .createCriteria(udaje.class) .setProjection(Projections.max("id")); Short maxid = (Short) criteria.uniqueResult(); session.flush(); sessionFactory.close(); return maxid + 1; } private Integer maxKFV3() { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); udaje data = (udaje) session .createCriteria(udaje.class) .addOrder(Order.desc("id")) .setMaxResults(1) .uniqueResult(); Short maxid = data.getId(); session.flush(); sessionFactory.close(); return maxid + 1; } private void setFocus(final TextField tf) { Platform.runLater(new Runnable() { @Override public void run() { tf.requestFocus(); } }); } private void new_Record() { pid = maxKFV3(); n_ID.setText(pid.toString()); dp_Datum.setValue(java.time.LocalDate.now()); sr_Button.setDisable(false); setFocus(n_Cele); } private void save_Record1() { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); session.getTransaction().begin(); Query query = session.createSQLQuery("INSERT INTO udaje VALUES (:ID, :Celec, :Desec, :Malec, :Retez, :Datum)"); query.setParameter("ID",pid.shortValue()); query.setParameter("Celec",Integer.valueOf(n_Cele.getText())); query.setParameter("Desec",Double.valueOf(n_Desetinne.getText())); query.setParameter("Malec",Double.valueOf(n_Maledes.getText())); query.setParameter("Retez",n_Text.getText()); query.setParameter("Datum",java.sql.Date.valueOf(dp_Datum.getValue())); query.executeUpdate(); session.getTransaction().commit(); session.flush(); sessionFactory.close(); viewTable(); sr_Button.setDisable(true); n_ID.setText(""); tabPane.getSelectionModel().select(0); } private void save_Record2() { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); session.getTransaction().begin(); udaje radek = new udaje(); radek.setId(pid.shortValue()); radek.setCelecis(Integer.valueOf(n_Cele.getText())); radek.setDescis(Double.valueOf(n_Desetinne.getText())); radek.setMaledes(Double.valueOf(n_Maledes.getText())); radek.setRetezec(n_Text.getText()); radek.setDatum(java.sql.Date.valueOf(dp_Datum.getValue())); session.save(radek); session.getTransaction().commit(); session.flush(); sessionFactory.close(); viewTable(); sr_Button.setDisable(true); n_ID.setText(""); tabPane.getSelectionModel().select(0); } }