Advertisement
programajster

Z1_GUI_part4(hibernacja)

Oct 31st, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 14.08 KB | None | 0 0
  1.  
  2.  
  3. // Temat 5.
  4. // W języku Java, utwórz klasę do przechowywania oraz GUI do wprowadzania danych
  5. // wektorów w przestrzeni dwuwymiarowej (nazwa wektora, współrzędne x oraz y).
  6. // Projekt -> Properties -> Library -> Add Jar -> JDBC (mysql-connector-java*.jar //XAMPP
  7. import java.awt.BorderLayout;
  8. import java.awt.Container;
  9. import java.awt.Dimension;
  10. import java.awt.FlowLayout;
  11. import java.awt.GraphicsConfiguration;
  12. import java.awt.GridLayout;
  13. import java.awt.event.ActionEvent;
  14. import java.awt.event.ActionListener;
  15. import java.sql.Connection;
  16. import java.sql.DriverManager;
  17. import java.sql.ResultSet;
  18. import java.sql.SQLException;
  19. import java.sql.Statement;
  20. import java.util.ArrayList;
  21. import java.util.Vector;
  22. import javax.swing.*;
  23. import javax.swing.table.DefaultTableModel;
  24. import javax.xml.parsers.DocumentBuilder;
  25. import javax.xml.parsers.DocumentBuilderFactory;
  26. import javax.xml.transform.Result;
  27. import javax.xml.transform.Source;
  28. import javax.xml.transform.Transformer;
  29. import javax.xml.transform.TransformerFactory;
  30. import javax.xml.transform.dom.DOMSource;
  31. import javax.xml.transform.stream.StreamResult;
  32. import org.w3c.dom.*;
  33. import org.hibernate.Query;
  34. import org.hibernate.Session;
  35. import org.hibernate.SessionFactory;
  36. import org.hibernate.cfg.Configuration;
  37.  
  38. public class Projekt1 extends JFrame implements ActionListener {
  39.  
  40.     JPanel panelGlowny, panelDanych, panelPrzyciskow, panelTabeli;
  41.     JLabel et0, et1, et2, et3;
  42.     DefaultTableModel modelTabeli;
  43.     JTable Tabela;
  44.     JTextField pole0, pole1, pole2, pole3;
  45.     JButton przycisk1, przycisk_wczytaj, przycisk_zapisz;
  46.     Container zawartosc;
  47.     ArrayList<Wektor> kolekcja;
  48.     JMenuBar pasek;
  49.     JMenu menu1, menu2;
  50.     JMenuItem op1, op2, op3;
  51.  
  52.     public Projekt1(GraphicsConfiguration gc) {
  53.  
  54.         super(gc);
  55.  
  56.     }
  57.  
  58.     public Projekt1() {
  59.         super("Aplikacja");
  60.         this.setSize(800, 600);
  61.         this.zawartosc = this.getContentPane();
  62.  
  63.         this.panelGlowny = new JPanel(new BorderLayout());
  64.  
  65.         //Tworzenie panelu Danych
  66.         this.panelDanych = new JPanel(new GridLayout(4, 2));
  67.         this.et0 = new JLabel("Id: ");
  68.         this.et1 = new JLabel("Nazwa: ");
  69.         this.et2 = new JLabel("x: ");
  70.         this.et3 = new JLabel("y: ");
  71.         this.pole0 = new JTextField();
  72.         this.pole1 = new JTextField();
  73.         pole1.setSize(50, 200);
  74.         this.pole2 = new JTextField();
  75.         this.pole3 = new JTextField();
  76.         this.panelDanych.add(this.et0);
  77.         this.panelDanych.add(this.pole0);
  78.         this.panelDanych.add(this.et1);
  79.         this.panelDanych.add(this.pole1);
  80.         this.panelDanych.add(this.et2);
  81.         this.panelDanych.add(this.pole2);
  82.         this.panelDanych.add(this.et3);
  83.         this.panelDanych.add(this.pole3);
  84.         this.panelGlowny.add(this.panelDanych, BorderLayout.WEST);
  85.  
  86.         //tworzenie Menu
  87.         this.pasek = new JMenuBar();
  88.         this.menu1 = new JMenu("Baza Danych");
  89.         this.op1 = new JMenuItem("Wczytaj");
  90.         this.op1.addActionListener(this);
  91.         this.menu1.add(op1);
  92.         this.op2 = new JMenuItem("Zapisz");
  93.         this.op2.addActionListener(this);
  94.         this.menu1.add(op2);
  95.         this.menu2 = new JMenu("Hibernate");
  96.         this.op3 = new JMenuItem("Wczytaj_Hibernate");
  97.         this.op3.addActionListener(this);
  98.         this.menu2.add(op3);
  99.         this.pasek.add(menu1);
  100.         this.pasek.add(menu2);
  101.         this.setJMenuBar(pasek);
  102.  
  103.         //tworzenie panelu Przycisków i zawartosci w nim
  104.         this.panelPrzyciskow = new JPanel(new FlowLayout());
  105.  
  106.         this.przycisk1 = new JButton("ENTER");
  107.         this.przycisk1.addActionListener(this);
  108.         this.przycisk_wczytaj = new JButton("WCZYTAJ");
  109.         this.przycisk_wczytaj.addActionListener(this);
  110.         this.przycisk_zapisz = new JButton("ZAPISZ");
  111.         this.przycisk_zapisz.addActionListener(this);
  112.  
  113.         this.panelPrzyciskow.add(przycisk1);
  114.         this.panelPrzyciskow.add(przycisk_wczytaj);
  115.         this.panelPrzyciskow.add(przycisk_zapisz);
  116.  
  117.         this.panelGlowny.add(this.panelPrzyciskow, BorderLayout.SOUTH);
  118.  
  119.         //tworzenie panelu z tablica
  120.         this.panelTabeli = new JPanel(new BorderLayout());
  121.  
  122.         this.modelTabeli = new DefaultTableModel();
  123.         this.modelTabeli.addColumn("Id wektora");
  124.         this.modelTabeli.addColumn("Nazwa wektora");
  125.         this.modelTabeli.addColumn("Współrzędna x: ");
  126.         this.modelTabeli.addColumn("Współrzędna y: ");
  127.  
  128.         // this.modelTabeli.addRow(new Vector());
  129.         //this.modelTabeli.addRow(new Vector());
  130.         this.Tabela = new JTable(this.modelTabeli);
  131.  
  132.         this.panelTabeli.add(new JScrollPane(this.Tabela), BorderLayout.NORTH);
  133.  
  134.         //  this.panelTabeli.add(this.Tabela, BorderLayout.CENTER);
  135.         this.panelGlowny.add(this.panelTabeli, BorderLayout.CENTER);
  136.  
  137.         this.zawartosc.add(this.panelGlowny);
  138.  
  139.         this.setDefaultCloseOperation(EXIT_ON_CLOSE);
  140.         this.setVisible(true);
  141.         kolekcja = new ArrayList<Wektor>();
  142.     }
  143.  
  144.     public static void main(String[] args) {
  145.  
  146.         Projekt1 projekt1 = new Projekt1();
  147.  
  148.     }
  149.  
  150.     @Override
  151.     public void actionPerformed(ActionEvent e) {
  152.  
  153.         if (e.getActionCommand().equals("Wczytaj")) {
  154.             Connection polaczenie;
  155.             try {
  156.                 Class.forName("com.mysql.jdbc.Driver").newInstance();
  157.                 polaczenie = DriverManager.getConnection("jdbc:mysql://localhost/wektory1", "root", "");
  158.                 System.out.println(polaczenie);
  159.                 Statement instrukcja = polaczenie.createStatement();
  160.                 ResultSet wynik = instrukcja.executeQuery("SELECT * FROM wektory");
  161.                 while (wynik.next()) {
  162.  
  163.                     //kolekcja.add(w);
  164.                     //Object[] dane = new Object[3];
  165.                     //dane[0] = w.getNazwa();
  166.                     //dane[1] = w.getX();
  167.                     //dane[2] = w.getY();
  168.                     Object[] dane = new Object[4];
  169.  
  170.                     dane[0] = wynik.getObject("id");
  171.                     dane[1] = wynik.getObject("Nazwa");
  172.                     dane[2] = wynik.getObject("x");
  173.                     dane[3] = wynik.getObject("y");
  174.                     this.modelTabeli.addRow(dane);
  175.  
  176.                 }
  177.  
  178.                 polaczenie.close();
  179.  
  180.             } catch (InstantiationException ex) {
  181.                 ex.printStackTrace();
  182.             } catch (IllegalAccessException ex) {
  183.                 ex.printStackTrace();
  184.             } catch (ClassNotFoundException ex) {
  185.                 ex.printStackTrace();
  186.             } catch (SQLException ex) {
  187.                 ex.printStackTrace();
  188.             }
  189.  
  190.         }
  191.  
  192.         if (e.getActionCommand().equals("Zapisz")) {
  193.  
  194.             Connection polaczenie;
  195.             try {
  196.                 Class.forName("com.mysql.jdbc.Driver").newInstance();
  197.                 polaczenie = DriverManager.getConnection("jdbc:mysql://localhost/wektory1", "root", "");
  198.                 Statement instrukcja = polaczenie.createStatement();
  199.                 instrukcja.executeUpdate("DELETE FROM wektory");
  200.                 for (Wektor w : kolekcja) {
  201.                     String sql = "INSERT INTO wektory SET ";
  202.  
  203.                     sql += "Id='" + w.getId() + "', ";
  204.                     sql += "Nazwa='" + w.getNazwa() + "', ";
  205.                     sql += "X='" + w.getX() + "', ";
  206.                     sql += "Y='" + w.getY() + "' ";
  207.                     System.out.println(sql);
  208.                     instrukcja.executeUpdate(sql);
  209.                 }
  210.                 polaczenie.close();
  211.             } catch (InstantiationException ex) {
  212.                 ex.printStackTrace();
  213.             } catch (IllegalAccessException ex) {
  214.                 ex.printStackTrace();
  215.             } catch (ClassNotFoundException ex) {
  216.                 ex.printStackTrace();
  217.             } catch (SQLException ex) {
  218.                 ex.printStackTrace();
  219.             }
  220.         }
  221.  
  222.         if (e.getActionCommand().equals("Wczytaj_Hibernate")) {
  223.  
  224.             SessionFactory fabrykaSesji = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
  225.             Session sesja = fabrykaSesji.openSession();
  226.             Query zapytanie = sesja.createQuery("from Wektor");
  227.             ArrayList<Wektor> rekordy = (ArrayList<Wektor>) zapytanie.list();
  228.             for (Wektor w : rekordy) {
  229.                 // System.out.println(w.getId() + " " + w.getNazwa()+ " "+ w.getX()+ " " + w.getY());
  230.                 kolekcja.add(w);
  231.             Object[] dane = new Object[4];
  232.             dane[0] = w.getId();
  233.             dane[1] = w.getNazwa();
  234.             dane[2] = w.getX();
  235.             dane[3] = w.getY();
  236.             this.modelTabeli.addRow(dane);
  237.             }
  238.             sesja.close();
  239.  
  240.         }
  241.  
  242.         if (e.getActionCommand().equals("ENTER")) {
  243.  
  244.             Wektor w = new Wektor(Integer.parseInt(this.pole0.getText()),
  245.                     this.pole1.getText(),
  246.                     Integer.parseInt(this.pole2.getText()),
  247.                     Integer.parseInt(this.pole3.getText()));
  248.             kolekcja.add(w);
  249.             Object[] dane = new Object[4];
  250.             dane[0] = w.getId();
  251.             dane[1] = w.getNazwa();
  252.             dane[2] = w.getX();
  253.             dane[3] = w.getY();
  254.  
  255.             this.modelTabeli.addRow(dane);
  256.  
  257.         }
  258.         if (e.getActionCommand().equals("WCZYTAJ")) {
  259.  
  260.             try {
  261.  
  262.                 DocumentBuilderFactory fabr = DocumentBuilderFactory.newInstance();
  263.                 DocumentBuilder parser = fabr.newDocumentBuilder();
  264.                 Document dokument = parser.parse("C:\\Users\\student.INFORMATYKA\\Desktop\\test.xml");
  265.                 Element root = dokument.getDocumentElement();
  266.  
  267.                 NodeList wektory = root.getElementsByTagName("wektor");
  268.  
  269.                 for (int i = 0; i < wektory.getLength(); i++) {
  270.                     int id = Integer.parseInt(((Element) wektory.item(i)).getAttribute("id"));
  271.                     String nazwa = ((Element) wektory.item(i)).getAttribute("nazwa");
  272.                     int x = Integer.parseInt(((Element) wektory.item(i)).getAttribute("x"));
  273.                     int y = Integer.parseInt(((Element) wektory.item(i)).getAttribute("y"));
  274.  
  275.                     Wektor w = new Wektor(id, nazwa, x, y);
  276.                     kolekcja.add(w);
  277.                     Object[] dane = new Object[4];
  278.                     dane[0] = w.getId();
  279.                     dane[1] = w.getNazwa();
  280.                     dane[2] = w.getX();
  281.                     dane[3] = w.getY();
  282.  
  283.                     this.modelTabeli.addRow(dane);
  284.  
  285.                 }
  286.  
  287.             } catch (Exception ex) {
  288.  
  289.             }
  290.  
  291.         }
  292.         if (e.getActionCommand().equals("ZAPISZ")) {
  293.  
  294.             try {
  295.                 DocumentBuilderFactory fabr = DocumentBuilderFactory.newInstance();
  296.                 DocumentBuilder parser = fabr.newDocumentBuilder();
  297.                 Document dokument = parser.newDocument();
  298.                 Element root = dokument.createElement("wektory");
  299.                 dokument.appendChild(root);
  300.  
  301.                 for (Wektor wektor : kolekcja) {
  302.                     Element k = dokument.createElement("wektor");
  303.                     k.setAttribute("id", String.valueOf(wektor.getId()));
  304.                     k.setAttribute("nazwa", wektor.getNazwa());
  305.                     k.setAttribute("x", String.valueOf(wektor.getX()));
  306.                     k.setAttribute("y", String.valueOf(wektor.getY()));
  307.                     root.appendChild(k);
  308.                 }
  309.  
  310.                 Transformer przekszt = TransformerFactory.newInstance().newTransformer();
  311.                 Source zrodlo = new DOMSource(dokument);
  312.                 Result wyjscie = new StreamResult("C:\\Users\\student.INFORMATYKA\\Desktop\\test1.xml");
  313.                 przekszt.transform(zrodlo, wyjscie);
  314.  
  315.             } catch (Exception ex) {
  316.                 System.out.println("Wyjatek");
  317.             }
  318.  
  319.         }
  320.     }
  321.  
  322. }
  323. //adding library hibernate.cf hibernate.hbm also jdbm connection
  324. //--------------Wektor.java
  325.  
  326.  
  327.  import java.io.Serializable;
  328. import java.util.ArrayList;
  329.  
  330. public class Wektor implements Serializable{
  331.  
  332.     String nazwa;
  333.  
  334.     public Wektor() {
  335.     }
  336.  
  337.     public Wektor(int id, String nazwa, int x, int y) {
  338.         this.nazwa = nazwa;
  339.         this.x = x;
  340.         this.y = y;
  341.         this.id = id;
  342.     }
  343.  
  344.     public String getNazwa() {
  345.         return nazwa;
  346.     }
  347.  
  348.     public void setNazwa(String nazwa) {
  349.         this.nazwa = nazwa;
  350.     }
  351.     int id, x, y;
  352.  
  353.     public int getId() {
  354.         return id;
  355.     }
  356.  
  357.     public void setId(int id) {
  358.         this.id = id;
  359.     }
  360.  
  361.     public int getX() {
  362.         return x;
  363.     }
  364.  
  365.     public void setX(int x) {
  366.         this.x = x;
  367.     }
  368.  
  369.     public int getY() {
  370.         return y;
  371.     }
  372.  
  373.     public void setY(int y) {
  374.         this.y = y;
  375.     }
  376. }
  377. //------------------------hibernate.cfg.xml
  378. <?xml version="1.0" encoding="UTF-8"?>
  379. <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  380. <hibernate-configuration>
  381.   <session-factory>
  382.     <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  383.     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  384.     <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/wektory1?zeroDateTimeBehavior=convertToNull</property>
  385.     <property name="hibernate.connection.username">root</property>
  386.     <mapping resource="hibernate.hbm.xml"/>
  387.   </session-factory>
  388. </hibernate-configuration>
  389. //--------------------------------hibernate.hbm.xml
  390. <?xml version="1.0" encoding="UTF-8"?>
  391. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  392. <hibernate-mapping>
  393.   <class name="Wektor" table="wektory">
  394.       <id name="id" column="id"/>
  395.  <property name="nazwa" column="nazwa"/>
  396.  <property name="x" column="x"/>
  397.  <property name="y" column="y"/>
  398.   </class>
  399. </hibernate-mapping>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement