iifast

Java Table DataBase To PDF

Feb 25th, 2020
276
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 12.07 KB | None | 0 0
  1.  
  2. import com.itextpdf.text.Document;
  3. import com.itextpdf.text.pdf.PdfPTable;
  4. import com.itextpdf.text.pdf.PdfWriter;
  5. import com.jfoenix.controls.JFXButton;
  6. import com.jfoenix.controls.JFXDialog;
  7. import com.jfoenix.controls.JFXDialogLayout;
  8. import com.jfoenix.controls.JFXTextField;
  9. import com.jfoenix.controls.JFXTreeTableColumn;
  10. import com.jfoenix.controls.JFXTreeTableView;
  11. import com.jfoenix.controls.RecursiveTreeItem;
  12. import com.jfoenix.controls.datamodels.treetable.RecursiveTreeObject;
  13. import java.io.FileOutputStream;
  14. import java.io.IOException;
  15. import java.net.URL;
  16. import java.sql.Connection;
  17. import java.sql.DriverManager;
  18. import java.sql.PreparedStatement;
  19. import java.sql.ResultSet;
  20. import java.sql.SQLException;
  21. import java.sql.Statement;
  22. import java.util.ResourceBundle;
  23. import java.util.logging.Level;
  24. import java.util.logging.Logger;
  25. import javafx.beans.value.ObservableValue;
  26. import javafx.collections.FXCollections;
  27. import javafx.collections.ObservableList;
  28. import javafx.event.ActionEvent;
  29. import javafx.event.EventHandler;
  30. import javafx.fxml.FXML;
  31. import javafx.fxml.FXMLLoader;
  32. import javafx.fxml.Initializable;
  33. import javafx.scene.Parent;
  34. import javafx.scene.Scene;
  35. import javafx.scene.control.TreeItem;
  36. import javafx.scene.control.TreeTableColumn;
  37. import javafx.scene.input.MouseEvent;
  38. import javafx.scene.layout.Pane;
  39. import javafx.scene.layout.StackPane;
  40. import javafx.scene.text.Text;
  41. import javafx.stage.Stage;
  42. import javafx.stage.StageStyle;
  43. import javafx.util.Callback;
  44. import javax.swing.JOptionPane;
  45.  
  46. /**
  47.  * FXML Controller class
  48.  *
  49.  * @author medam
  50.  */
  51. public class ReclamationController implements Initializable {
  52.    
  53.     @FXML
  54.     private JFXTreeTableView<Reclamation> treeView;
  55.     @FXML
  56.     private JFXTextField idreclamation;
  57.     @FXML
  58.     private JFXButton AjouterButton;
  59.     @FXML
  60.     private JFXButton DeleteButton;
  61.     @FXML
  62.     private JFXButton UpdateButton;
  63.    
  64.     private Connection con;
  65.     @FXML
  66.     private JFXTextField description;
  67.     @FXML
  68.     private Pane pane_logout;
  69.     @FXML
  70.     private Pane pane_exit;
  71.     @FXML
  72.     private Pane pane_home;
  73.     @FXML
  74.     private StackPane stackepane;
  75.     @FXML
  76.     private JFXButton CreatePdf;
  77.    
  78.    
  79.  
  80.     /**
  81.      * Initializes the controller class.
  82.      */
  83.     @Override
  84.     public void initialize(URL url, ResourceBundle rb) {
  85.     con = DataBase.getInstance().getConnection();
  86.     loadAllReclamation("SELECT * FROM reclamation");  
  87.    
  88.     }  
  89.    
  90.      public void loadAllReclamation(String sql){
  91.    
  92.         JFXTreeTableColumn<Reclamation,String> idreclamation = new JFXTreeTableColumn<>("Reclamation Id");
  93.         idreclamation.setPrefWidth(200);
  94.         idreclamation.setCellValueFactory(new Callback<TreeTableColumn.CellDataFeatures<Reclamation, String>, ObservableValue<String>>() {
  95.             @Override
  96.             public ObservableValue<String> call(TreeTableColumn.CellDataFeatures<Reclamation, String> param) {
  97.                 return param.getValue().getValue().idreclamation;
  98.             }
  99.         });
  100.        
  101.          JFXTreeTableColumn<Reclamation,String> description = new JFXTreeTableColumn<>("Reclamation Description");
  102.         description.setPrefWidth(550);
  103.         description.setCellValueFactory(new Callback<TreeTableColumn.CellDataFeatures<Reclamation, String>, ObservableValue<String>>() {
  104.             @Override
  105.             public ObservableValue<String> call(TreeTableColumn.CellDataFeatures<Reclamation, String> param) {
  106.                 return param.getValue().getValue().description;
  107.             }
  108.         });
  109.        
  110.        
  111.         ObservableList<Reclamation> reclamations =FXCollections.observableArrayList();
  112.        
  113.         try {
  114.             PreparedStatement ps = (PreparedStatement) con.prepareStatement(sql);
  115.             ResultSet rs = ps.executeQuery();
  116.            
  117.             while(rs.next()){
  118.             reclamations.add(new Reclamation(rs.getString(1)+"",rs.getString(2)));
  119.             }
  120.        
  121.         } catch (SQLException ex) {
  122.             Logger.getLogger(ReclamationController.class.getName()).log(Level.SEVERE, null, ex);
  123.         }
  124.        
  125.         final TreeItem<Reclamation> root = new RecursiveTreeItem <Reclamation>(reclamations,RecursiveTreeObject::getChildren);
  126.         treeView.getColumns().setAll(idreclamation,description);
  127.         treeView.setRoot(root);
  128.         treeView.setShowRoot(false);
  129.        
  130.        
  131.     }
  132.  
  133.     @FXML
  134.     private void ajouterReclamation(MouseEvent event) {
  135.        
  136.         try {
  137.             PreparedStatement pre = con.prepareStatement("INSERT INTO `velo`.`reclamation` ( `idreclamation`, `description`) VALUES ( ?, ?);");
  138.             pre.setString(1, idreclamation.getText());
  139.             pre.setString(2, description.getText());
  140.             pre.executeUpdate();
  141.             loadAllReclamation("SELECT * FROM reclamation");
  142.         } catch (SQLException ex) {
  143.             Logger.getLogger(ReclamationController.class.getName()).log(Level.SEVERE, null, ex);
  144.         }
  145.     }
  146.  
  147.     @FXML
  148.     private void DeleteReclamation(MouseEvent event) {
  149.     String deletequery = "DELETE FROM `velo`.`reclamation` where idReclamation = ?";
  150.  
  151.         try {
  152.             PreparedStatement preparedStatement = con.prepareStatement(deletequery);
  153.             preparedStatement.setString(1, idreclamation.getText());
  154.             preparedStatement.execute();
  155.             preparedStatement.close();
  156.           loadAllReclamation("SELECT * FROM reclamation");  
  157.         } catch (SQLException e) { e.printStackTrace(); }
  158.     }
  159.  
  160.     @FXML
  161.     private void UpdateReclamation(MouseEvent event) {
  162.        
  163.        String query = "UPDATE `velo`.`reclamation` SET description = ? "
  164.                 + " where idReclamation = ? ";
  165.  
  166.         try {
  167.  
  168.             PreparedStatement preparedStatement = con.prepareStatement(query);
  169.             preparedStatement.setString(1, description.getText());
  170.             preparedStatement.setString(2, idreclamation.getText());
  171.             preparedStatement.executeUpdate();
  172.             preparedStatement.close();
  173.             loadAllReclamation("SELECT * FROM reclamation");
  174.            
  175.         }catch(SQLException e){e.printStackTrace();}
  176.        
  177.     }
  178.  
  179.     @FXML
  180.     private void mouse_exit_logout(MouseEvent event) {
  181.     pane_logout.setStyle("-fx-background-color: white; -fx-background-radius: 6px;");
  182.    
  183.     }
  184.  
  185.     @FXML
  186.     private void mouse_hover_logout(MouseEvent event) {
  187.     pane_logout.setStyle("-fx-background-color: #58fffc; -fx-background-radius: 6px;");
  188.    
  189.     }
  190.  
  191.     @FXML
  192.     private void logout(MouseEvent event) {
  193.               JFXDialogLayout dialogLayout = new JFXDialogLayout();
  194.         dialogLayout.setHeading(new Text("Alret"));
  195.         dialogLayout.setBody(new Text("Do you want to Logout ?"));
  196.         JFXButton ok = new JFXButton("Yes");
  197.         JFXButton Cancel = new JFXButton("Cancel");
  198.        
  199.         JFXDialog dialog = new JFXDialog(stackepane,dialogLayout,JFXDialog.DialogTransition.CENTER);
  200.         ok.setOnAction(new EventHandler<ActionEvent>() {
  201.             @Override
  202.             public void handle(ActionEvent event) {
  203.  
  204.             // move you back to loginscreen
  205.         Stage login = new Stage();
  206.         Parent root = null;
  207.         try{
  208.         root = FXMLLoader.load(getClass().getResource("LoginScreen.fxml"));
  209.         }catch(IOException e) {e.printStackTrace();}  
  210.        
  211.         Stage current = (Stage)pane_logout.getScene().getWindow();
  212.         Scene scene = new Scene(root);
  213.         login.setScene(scene);
  214.         login.initStyle(StageStyle.TRANSPARENT);
  215.         current.hide();
  216.         login.show();
  217.            
  218.             }
  219.         });
  220.        
  221.         Cancel.setOnAction(new EventHandler<ActionEvent>(){
  222.            @Override
  223.             public void handle(ActionEvent event) {
  224.              
  225.             dialog.close();
  226.             }
  227.         });
  228.         dialogLayout.setActions(ok,Cancel);
  229.         dialog.show();  
  230.     }
  231.  
  232.    
  233.    
  234.     @FXML
  235.     private void mouse_exit_exit(MouseEvent event) {
  236.         pane_exit.setStyle("-fx-background-color: white; -fx-background-radius: 6px;");
  237.    
  238.     }
  239.  
  240.     @FXML
  241.     private void mouse_hover_exit(MouseEvent event) {
  242.     pane_exit.setStyle("-fx-background-color: #ff3b3b; -fx-background-radius: 6px;");
  243.    
  244.     }
  245.  
  246.     @FXML
  247.     private void exit(MouseEvent event) {
  248.         JFXDialogLayout dialogLayout = new JFXDialogLayout();
  249.         dialogLayout.setHeading(new Text("Close"));
  250.         dialogLayout.setBody(new Text("Do you want to exit !"));
  251.         JFXButton ok = new JFXButton("ok");
  252.         JFXButton Cancel = new JFXButton("cancel");
  253.        
  254.         JFXDialog dialog = new JFXDialog(stackepane,dialogLayout,JFXDialog.DialogTransition.CENTER);
  255.         ok.setOnAction(new EventHandler<ActionEvent>() {
  256.             @Override
  257.             public void handle(ActionEvent event) {
  258.              
  259.             System.exit(0);
  260.             }
  261.         });
  262.        
  263.         Cancel.setOnAction(new EventHandler<ActionEvent>(){
  264.            @Override
  265.             public void handle(ActionEvent event) {
  266.              
  267.             dialog.close();
  268.             }
  269.         });
  270.        
  271.         dialogLayout.setActions(ok,Cancel);
  272.         dialog.show();
  273.    
  274.     }
  275.  
  276.     @FXML
  277.     private void mouse_exit_homep(MouseEvent event) {
  278.     pane_home.setStyle("-fx-background-color: white; -fx-background-radius: 6px;");
  279.     }
  280.  
  281.     @FXML
  282.     private void mouse_hover_homep(MouseEvent event) {
  283.     pane_home.setStyle("-fx-background-color: #56ff4a; -fx-background-radius: 6px;");
  284.     }
  285.  
  286.     @FXML
  287.     private void homepage(MouseEvent event) {
  288.         Stage home = new Stage();
  289.         Parent root = null;
  290.         try {
  291.             root = FXMLLoader.load(getClass().getResource("HomeScreen.fxml"));
  292.        
  293.         } catch (IOException ex) {
  294.             Logger.getLogger(ReclamationController.class.getName()).log(Level.SEVERE, null, ex);
  295.         }
  296.         Stage current = (Stage)pane_home.getScene().getWindow();
  297.         Scene scene = new Scene(root);
  298.         home.setScene(scene);
  299.         home.initStyle(StageStyle.TRANSPARENT);
  300.         current.hide();
  301.         home.show();
  302.     }
  303.  
  304.     //add jar : itextpdf-5.5.1.jar
  305.     @FXML  //JFXButton → fx:id : CreatePdf  // On Action : CreatePdf
  306.     private void CreatePdf(ActionEvent event) throws Exception {
  307.         try {
  308.         Document document = new Document();
  309.        PdfWriter.getInstance(document,new FileOutputStream("C:\\Users\\medam\\Documents\\NetBeansProjects\\VeloFx\\src\\pdf\\TestPDF.pdf"));
  310.        document.open();
  311.        PdfPTable table=new PdfPTable(2);
  312.        table.setWidthPercentage(100);
  313.     table.getDefaultCell().setBorder(2);
  314.        table.addCell("idreclamation");
  315.        table.addCell("description");
  316.        
  317.        
  318.      
  319.         com.itextpdf.text.Paragraph p = new com.itextpdf.text.Paragraph();
  320.             p.add("Reclamation List ");
  321.             p.setAlignment(com.itextpdf.text.Element.ALIGN_CENTER);
  322.             document.add(p);
  323.                   // document.add(com.itextpdf.text.Image.getInstance("C:/Users/pablo/Documents/NetBeansProjects/Pi_dev/src/Images/bank.png"));
  324.  
  325.        Class.forName("com.mysql.jdbc.Driver");
  326.        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3308/velo", "root", "");
  327.        Statement st=con.createStatement();
  328.        ResultSet rs=st.executeQuery("SELECT idreclamation,description FROM `reclamation`");
  329.        while(rs.next()){
  330.        table.addCell(rs.getString("idreclamation"));
  331.        table.addCell(rs.getString("description")); //name in DB
  332.  
  333.        
  334.        }
  335.        document.add(table);
  336.         JOptionPane.showMessageDialog(
  337.                 null, " données exportées en pdf avec succés ");
  338.                document.close();
  339.            
  340.            
  341.  
  342.         } catch (Exception e) {
  343.  
  344.             System.out.println("Error PDF");
  345.             System.out.println(e.getStackTrace());
  346.             System.out.println(e.getMessage());
  347.         }
  348.    
  349.     }
  350.     }
Advertisement
Add Comment
Please, Sign In to add comment