Advertisement
Guest User

Untitled

a guest
Sep 1st, 2018
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 62.96 KB | None | 0 0
  1. /////////////////////// TABLICA /////////////////////////////////
  2. /**
  3.  * Pakiet
  4.  */
  5. package system;
  6.  
  7. import ludzie.Pacjent;
  8. import java.util.ArrayList;
  9. import javax.swing.table.AbstractTableModel;
  10.  
  11. /**
  12.  * Ustala jak JTable jest wyswietlana i jakie dane bedzie zawierac
  13.  * @author Mateusz Olejarz
  14.  */
  15. @SuppressWarnings("serial")
  16. public class TablicaPacjentow extends AbstractTableModel {
  17.    
  18.     private String[] nazwy_kolumn = {"ID doktora", "Nazwa uzytkownika doktora", "ID pacjenta", "Imie", "Nazwisko", "Data urodzenia", "Adres", "Numer Telefonu", "Okres rozliczeniowy", "Stan", "Komentarze"};
  19.     private ArrayList<Pacjent> lista_pacjentow = null;
  20.    
  21.     /**
  22.      * Konstruktor tworzacy AbstractTableModel i inicjalizujacy liste_pacjentow
  23.      * @param lista_pacjentow  - przefiltrowana lista pacjentow na ktorej oparty jest widok JTable
  24.      */
  25.     public TablicaPacjentow(ArrayList<Pacjent> lista_pacjentow) {
  26.         this.lista_pacjentow = lista_pacjentow;
  27.     }
  28.    
  29.     public Class<? extends Object> getColumnClass(int c) {
  30.         return getValueAt(0, c).getClass();
  31.     }
  32.    
  33.     public String zwroc_nazwy_kolumn(int kolumna) {
  34.         return nazwy_kolumn[kolumna];
  35.     }
  36.  
  37.     @Override
  38.     public int getRowCount() {
  39.         return lista_pacjentow.size();
  40.     }
  41.  
  42.     @Override
  43.     public int getColumnCount() {
  44.         return nazwy_kolumn.length;
  45.     }
  46.  
  47.     /**
  48.      * Mimo ze nie uzywana, musi byc nadpisana przez AbstractTableModel
  49.      */
  50.     @Override
  51.     public Object getValueAt(int row, int col) {
  52.         Pacjent pacjent = lista_pacjentow.get(row);
  53.          switch (col) {
  54.          case 0:
  55.               return pacjent.zwroc_id_doktora_pacjenta();
  56.          case 1:
  57.               return pacjent.zwroc_nazwe_uzytkownia_doktora_pacjenta();
  58.          case 2:
  59.               return pacjent.zwroc_id_pacjenta();
  60.          case 3:
  61.               return pacjent.zwroc_imie_pacjenta();
  62.          case 4:
  63.               return pacjent.zwroc_nazwisko_pacjenta();
  64.          case 5:
  65.               return pacjent.zwroc_date_urodzenia_pacjenta();
  66.          case 6:
  67.               return pacjent.zwroc_adres_pacjenta();
  68.          case 7:
  69.               return pacjent.zwroc_numer_telefonu_pacjenta();
  70.          case 8:
  71.               return pacjent.zwroc_okres_rozliczeniowy_pacjenta();
  72.          case 9:
  73.               return pacjent.zwroc_stan_pacjenta();
  74.          case 10:
  75.               return pacjent.zwroc_komentarze_do_pacjenta() ;
  76.          default:
  77.               return "unknown";
  78.          }
  79.     }
  80.    
  81.     /**
  82.      * Ustawia Liste z tablicy i uruchamia zdarzenie w tabeli
  83.      * @param lista_pacjentow  - tablica pacjentow
  84.      */
  85.     public void ustaw_liste(ArrayList<Pacjent> lista_pacjentow) {
  86.         this.lista_pacjentow = lista_pacjentow;
  87.         fireTableDataChanged();
  88.     }
  89.    
  90.     /**
  91.      * Usuwa wiersz wywolany w metodzie. Nastepnie uruchamia zdarzenie w tabeli
  92.      * @param wiersz - wiersz ktory ma zostac usuniety z tabeli
  93.      */
  94.     public void usun_wiersz(int wiersz) {
  95.         lista_pacjentow.remove(wiersz);
  96.         fireTableRowsDeleted(wiersz, wiersz);
  97.     }
  98.    
  99.     /**
  100.      * Dodaje wiersz do listy pacjentow
  101.      * @param Pacjent - obiekt Pacjent do dodania
  102.      */
  103.     public void dodaj_wiersz(Pacjent pacjent) {
  104.         lista_pacjentow.add(pacjent);
  105.         int wiersz = lista_pacjentow.indexOf(pacjent);
  106.        
  107.         for(int kolumna = 0; kolumna < lista_pacjentow.size(); kolumna++) {
  108.             fireTableCellUpdated(wiersz, kolumna);
  109.         }
  110.        
  111.         fireTableRowsInserted(wiersz, wiersz);
  112.     }
  113.  
  114.     @Override
  115.     public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
  116.         Pacjent pacjent = lista_pacjentow.get(rowIndex);
  117.        
  118.         switch (columnIndex) {
  119.         case 0:
  120.             if (aValue instanceof String) {
  121.                 pacjent.ustaw_imie((String) aValue);
  122.                 pacjent.ustaw_nazwisko((String) aValue);
  123.                 pacjent.ustaw_adres_pacjenta((String) aValue);
  124.                 pacjent.ustaw_stan_pacjenta((String) aValue);
  125.                 pacjent.ustaw_okres_rozliczeniowy_pacjenta((String) aValue);
  126.                 pacjent.ustaw_komentarze_do_pacjenta((String) aValue);
  127.                 pacjent.ustaw_date_urodzenia_pacjenta((String) aValue);
  128.                 pacjent.ustaw_nazwe_uzytkownia_doktora_pacjenta((String) aValue);
  129.             }
  130.             break;
  131.         case 1:
  132.             if (aValue instanceof Integer) {
  133.                 pacjent.ustaw_id_doktora_pacjenta((Integer) aValue);
  134.                 pacjent.ustaw_id_pacjenta((Integer) aValue);
  135.             }
  136.             break;
  137.     }
  138.        
  139.     fireTableCellUpdated(rowIndex, columnIndex);
  140.     }
  141.  
  142. }
  143.  
  144.  
  145. /////////////////////////// KONTROLER ///////////////////////////////////////
  146. /**
  147.  * Pakiet
  148.  */
  149. package system;
  150.  
  151. import ludzie.Doktor;
  152. import ludzie.Pacjent;
  153. import java.io.BufferedReader;
  154. import java.io.BufferedWriter;
  155. import java.io.File;
  156. import java.io.FileNotFoundException;
  157. import java.io.FileReader;
  158. import java.io.FileWriter;
  159. import java.io.IOException;
  160. import java.util.ArrayList;
  161.  
  162. /**
  163.  * Tworzy, otwiera i przesyla pliki oraz przesyla obiekty
  164.  * @author Mateusz Olejarz
  165.  */
  166. public class Kontroler {
  167.    
  168.     private static final int PDID = 0;
  169.     private static final int PNAZWA = 1;
  170.     private static final int PID = 2;
  171.     private static final int PIMIE = 3;
  172.     private static final int PNAZWISKO = 4;
  173.     private static final int PDATAURODZENIA = 5;
  174.     private static final int PADRES = 6;
  175.     private static final int PNUMERTELEFONU = 7;
  176.     private static final int POKRESROZLICZENIOWY = 8;
  177.     private static final int PSTAN = 9;
  178.     private static final int PKOMENTARZE = 10;
  179.     private static final int DID = 0;
  180.     private static final int DNAZWA = 1;
  181.     private static final int DHASLO = 2;
  182.     private static final int DIMIE = 3;
  183.     private static final int DNAZWISKO = 4;  
  184.     private static final String PRZECINKI = "\\s*,\\s*";
  185.     private String nazwa_pliku_pacjentow = "resources/pacjenci.csv";
  186.     private String nazwa_pliku_doktorow = "resources/lekarze.csv";
  187.     private File plik_pacjenci = new File(nazwa_pliku_pacjentow);
  188.     private File plik_doktorzy = new File(nazwa_pliku_doktorow);
  189.  
  190.    
  191.     /**
  192.      * Generuje nowy plik pacjentow o okreslonej sciezce
  193.      * @throws FileNotFoundException jesli podana nazwa pliku jest niepoprawna
  194.      */
  195.     public void zapisz_nowy_plik_pacjentow() throws FileNotFoundException {
  196.         if (!plik_pacjenci.exists()) {
  197.             try {
  198.                 plik_pacjenci.createNewFile();
  199.                 System.out.println("Nowy plik pacjentow zostal utworzony");
  200.             }
  201.             catch (IOException e) {
  202.                 e.printStackTrace();
  203.             }
  204.         }
  205.     }
  206.        
  207.     /**
  208.      * Generuje nowy plik doktorow o okreslonej sciezce.
  209.      * @throws FileNotFoundException  jesli podana nazwa pliku jest niepoprawna
  210.      */
  211.     public void zapisz_nowy_plik_doktorow() throws FileNotFoundException {
  212.         if (!plik_doktorzy.exists()) {
  213.             try {
  214.                 plik_doktorzy.createNewFile();
  215.                 System.out.println("Nowy plik doktorow zostal utworzony");
  216.             }
  217.             catch (IOException e) {
  218.                 e.printStackTrace();
  219.             }
  220.         }
  221.     }
  222.    
  223.     /**
  224.      * Wyodrebnia liste Doktorow z dowolnego pliku
  225.      * @return lista_doktorow  nowa lista doktorow
  226.      */
  227.     public ArrayList<Doktor> lista_doktorow_plik(){
  228.         BufferedReader odczyt_pliku = null;
  229.         ArrayList<Doktor> lista_doktorow = new  ArrayList<Doktor>();
  230.        
  231.         try {
  232.             String linia = "";
  233.             odczyt_pliku = new BufferedReader(new FileReader(nazwa_pliku_doktorow));
  234.             odczyt_pliku.readLine();
  235.             while ((linia = odczyt_pliku.readLine()) != null) {
  236.                 String[] s = linia.split(PRZECINKI,5);
  237.                 if (s.length > 0) {
  238.                     Doktor doktor = new Doktor();
  239.                     doktor.ustaw_imie(s[DIMIE]);
  240.                     doktor.ustaw_nazwisko(s[DNAZWISKO]);
  241.                     doktor.ustaw_id_doktora(Integer.parseInt(s[DID]));
  242.                     doktor.ustaw_nazwe_uzytkownika_doktora(s[DNAZWA]);
  243.                     doktor.ustaw_haslo_doktora(s[DHASLO]);
  244.                     lista_doktorow.add(doktor);
  245.                 }
  246.             }
  247.         }
  248.         catch (Exception e) {
  249.             System.out.println("Blad podczas odczytu CSV!");
  250.             e.printStackTrace();
  251.         }
  252.         finally {
  253.             try {
  254.                 odczyt_pliku.close();
  255.             }
  256.             catch (IOException e) {
  257.                 System.out.println("Blad podczas zamykania odczyt_pliku!");
  258.                 e.printStackTrace();
  259.             }
  260.         }
  261.        
  262.         return lista_doktorow;
  263.     }
  264.    
  265.     /**
  266.      * Wyciaga dane pacjentow z pliku CSV
  267.      * @param importowany_plik - plik dla ktorego musi zostac utworzona lista pacjentow i zweryfikowana
  268.      * @return lista_pacjentow - lista pacjentow do zweryfikowania
  269.      */
  270.     public ArrayList<Pacjent> lista_pacjentow_plik(File importowany_plik){
  271.         BufferedReader odczyt_pliku = null;
  272.         ArrayList<Pacjent> lista_pacjentow = new  ArrayList<Pacjent>();
  273.        
  274.         try {
  275.             String linia = "";
  276.             odczyt_pliku = new BufferedReader(new FileReader(importowany_plik.getAbsolutePath()));
  277.             odczyt_pliku.readLine();
  278.             while ((linia = odczyt_pliku.readLine()) != null) {
  279.                 String[] s = linia.split(PRZECINKI,11);
  280.                 if (s.length > 0) {
  281.                     Pacjent pacjent = new Pacjent();
  282.                     pacjent.ustaw_id_doktora_pacjenta(Integer.parseInt(s[PDID]));
  283.                     pacjent.ustaw_nazwe_uzytkownia_doktora_pacjenta(s[PNAZWA]);
  284.                     pacjent.ustaw_id_pacjenta(Integer.parseInt(s[PID]));
  285.                     pacjent.ustaw_imie_pacjenta(s[PIMIE]);
  286.                     pacjent.ustaw_nazwisko_pacjenta(s[PNAZWISKO]);
  287.                     pacjent.ustaw_date_urodzenia_pacjenta(s[PDATAURODZENIA]);
  288.                     pacjent.ustaw_adres_pacjenta(s[PADRES]);
  289.                     pacjent.ustaw_numer_telefonu_pacjenta(s[PNUMERTELEFONU]);
  290.                     pacjent.ustaw_okres_rozliczeniowy_pacjenta(s[POKRESROZLICZENIOWY]);
  291.                     pacjent.ustaw_stan_pacjenta(s[PSTAN]);
  292.                     pacjent.ustaw_komentarze_do_pacjenta(s[PKOMENTARZE]);
  293.                     lista_pacjentow.add(pacjent);
  294.                 }
  295.             }
  296.         }
  297.         catch (Exception e) {
  298.             System.out.println("Blad podczas odczytu CSV!");
  299.             e.printStackTrace();
  300.         }
  301.         finally {
  302.             try {
  303.                 odczyt_pliku.close();
  304.             }
  305.             catch (IOException e) {
  306.                 System.out.println("Blad podczas zamykania odczyt_pliku!");
  307.                 e.printStackTrace();
  308.             }
  309.         }
  310.        
  311.         return lista_pacjentow;
  312.     }
  313.    
  314.     /**
  315.      * Generuje liste pacjentow
  316.      * @return lista_pacjentow zwraca liste pacjentow dla poprawnych plikow
  317.      */
  318.     public ArrayList<Pacjent> lista_pacjentow_plik(){
  319.         BufferedReader odczyt_pliku = null;
  320.         ArrayList<Pacjent> lista_pacjentow = new  ArrayList<Pacjent>();
  321.        
  322.         try {
  323.             String line = "";
  324.             odczyt_pliku = new BufferedReader(new FileReader(nazwa_pliku_pacjentow));
  325.             odczyt_pliku.readLine();
  326.             while ((line = odczyt_pliku.readLine()) != null) {
  327.                 String[] s = line.split(PRZECINKI,11);
  328.                 if (s.length > 0) {
  329.                     Pacjent pacjent = new Pacjent();
  330.                     pacjent.ustaw_id_doktora_pacjenta(Integer.parseInt(s[PDID]));
  331.                     pacjent.ustaw_nazwe_uzytkownia_doktora_pacjenta(s[PNAZWA]);
  332.                     pacjent.ustaw_id_pacjenta(Integer.parseInt(s[PID]));
  333.                     pacjent.ustaw_imie_pacjenta(s[PIMIE]);
  334.                     pacjent.ustaw_nazwisko_pacjenta(s[PNAZWISKO]);
  335.                     pacjent.ustaw_date_urodzenia_pacjenta(s[PDATAURODZENIA]);
  336.                     pacjent.ustaw_adres_pacjenta(s[PADRES]);
  337.                     pacjent.ustaw_numer_telefonu_pacjenta(s[PNUMERTELEFONU]);
  338.                     pacjent.ustaw_okres_rozliczeniowy_pacjenta(s[POKRESROZLICZENIOWY]);
  339.                     pacjent.ustaw_stan_pacjenta(s[PSTAN]);
  340.                     pacjent.ustaw_komentarze_do_pacjenta(s[PKOMENTARZE]);
  341.                     lista_pacjentow.add(pacjent);
  342.                 }
  343.             }
  344.         }
  345.        
  346.         catch (Exception e) {
  347.             System.out.println("Blad podczas odczytu CSV!");
  348.             e.printStackTrace();
  349.         }
  350.        
  351.         finally {
  352.             try {
  353.                 odczyt_pliku.close();
  354.             }
  355.         catch (IOException e) {
  356.                 System.out.println("Blad podczas zamykania odczyt_pliku!");
  357.                 e.printStackTrace();
  358.             }
  359.         }
  360.        
  361.         return lista_pacjentow;
  362.     }
  363.    
  364.    /**
  365.     * Eksportuje liste pacjentow
  366.     * @param plik_docelowy  plik do kterego chcemy eksportowac
  367.     * @param eksportowana_lista_pacjentow lista pacjentow ktora uzytkownik eksportuje
  368.     * @throws IOException blad jesli bw nie moze zostac zamkniete
  369.     *
  370.     */
  371.     public void eksportuj_liste_pacjentow(ArrayList<Pacjent> eksportowana_lista_pacjentow, File plik_docelowy) throws IOException{
  372.         FileWriter fw = new FileWriter(plik_docelowy.getAbsoluteFile(), false);
  373.         BufferedWriter bw = new BufferedWriter(fw);
  374.        
  375.         if (!plik_docelowy.exists()) {
  376.             plik_docelowy.createNewFile();
  377.             bw.write("ID Doktora, Nazwa uzytkownika, ID pacjenta, Imie, Nazwisko, Data urodzenia, Adres, Numer telefonu, Okres rozliczeniowy, Stan, Komentarze");
  378.             bw.write("\n");
  379.         }
  380.        
  381.         @SuppressWarnings("resource")
  382.         BufferedReader wejscie = new BufferedReader(new FileReader(plik_docelowy));
  383.         @SuppressWarnings("unused")
  384.         String linia = null;
  385.        
  386.         if ((linia = wejscie.readLine()) == null) {
  387.             bw.write("ID Doktora, Nazwa uzytkownika, ID pacjenta, Imie, Nazwisko, Data urodzenia, Adres, Numer telefonu, Okres rozliczeniowy, Stan, Komentarze");
  388.             bw.write("\n");
  389.         }
  390.         for(Pacjent p: eksportowana_lista_pacjentow){
  391.             bw.append(p.zwroc_id_doktora_pacjenta() + ", " + p.zwroc_nazwe_uzytkownia_doktora_pacjenta()+","+p.zwroc_id_pacjenta()+","+p.zwroc_imie_pacjenta()+","+p.zwroc_nazwisko_pacjenta()+","+p.zwroc_date_urodzenia_pacjenta()+
  392.                     ","+p.zwroc_adres_pacjenta()+","+p.zwroc_numer_telefonu_pacjenta()+"," +p.zwroc_okres_rozliczeniowy_pacjenta()+ "," +p.zwroc_stan_pacjenta()+","+p.zwroc_komentarze_do_pacjenta());
  393.             bw.newLine();
  394.         }
  395.         try {
  396.             bw.close();
  397.         }
  398.         catch (IOException e) {
  399.             e.printStackTrace();
  400.         }
  401.     }
  402.    
  403.     /**
  404.      * Nadpisuje plik z pacjentami aktualna lista pacjentow
  405.      *  @param lista_pacjentow  lista pacjentow
  406.      *  @throws FileNotFoundException jesli nie znaleziono pliku
  407.      */
  408.     public void zapisz_pacjentow(ArrayList<Pacjent> lista_pacjentow) throws FileNotFoundException {
  409.         try {
  410.             File plik = new File(nazwa_pliku_pacjentow);
  411.             FileWriter fw = new FileWriter(plik.getAbsoluteFile(), false);
  412.             BufferedWriter bw = new BufferedWriter(fw);
  413.            
  414.             if (!plik.exists()) {
  415.                 plik.createNewFile();
  416.                 bw.write("ID Doktora, Nazwa uzytkownika, ID pacjenta, Imie, Nazwisko, Data urodzenia, Adres, Numer telefonu, Okres rozliczeniowy, Stan, Komentarze");
  417.                 bw.write("\n");
  418.             }
  419.            
  420.             @SuppressWarnings("resource")
  421.             BufferedReader wejscie = new BufferedReader(new FileReader(plik));
  422.             @SuppressWarnings("unused")
  423.            
  424.             String linia = null;
  425.             if ((linia = wejscie.readLine()) == null) {
  426.                 bw.write("ID Doktora, Nazwa uzytkownika, ID pacjenta, Imie, Nazwisko, Data urodzenia, Adres, Numer telefonu, Okres rozliczeniowy, Stan, Komentarze");
  427.                 bw.write("\n");
  428.             }
  429.             for(Pacjent p: lista_pacjentow){               
  430.                 bw.append(p.zwroc_id_doktora_pacjenta() + ", " + p.zwroc_nazwe_uzytkownia_doktora_pacjenta()+","+p.zwroc_id_pacjenta()+","+p.zwroc_imie_pacjenta()+","+p.zwroc_nazwisko_pacjenta()+","+p.zwroc_date_urodzenia_pacjenta()+
  431.                     ","+p.zwroc_adres_pacjenta()+","+p.zwroc_numer_telefonu_pacjenta()+"," +p.zwroc_okres_rozliczeniowy_pacjenta()+ "," +p.zwroc_stan_pacjenta()+","+p.zwroc_komentarze_do_pacjenta());
  432.                 bw.newLine();
  433.             }
  434.            
  435.             bw.close();
  436.  
  437.         }
  438.         catch (IOException e) {
  439.             e.printStackTrace();
  440.         }
  441.     }
  442.    
  443.     /**
  444.      * Zapisuje do pliku z doktorami jesli zarejestrowano nowego doktora
  445.      * @param lista_doktorow  lista doktorow
  446.      * @throws FileNotFoundException jesli nie ma pliku z doktorami
  447.      */
  448.     public void zapisz_doktorow(ArrayList<Doktor> lista_doktorow) throws FileNotFoundException {
  449.         try {
  450.             File plik = new File(nazwa_pliku_doktorow);
  451.             FileWriter fw = new FileWriter(plik.getAbsoluteFile(), false);
  452.             BufferedWriter bw = new BufferedWriter(fw);
  453.            
  454.             if (!plik.exists()) {
  455.                 plik.createNewFile();
  456.                 bw.write("ID doktora, Nazwa uzytkownika, Haslo, Imie, Nazwisko");
  457.                 bw.write("\n");
  458.             }
  459.            
  460.             @SuppressWarnings("resource")
  461.             BufferedReader wejscie = new BufferedReader(new FileReader(plik));
  462.             @SuppressWarnings("unused")
  463.             String linia = null;
  464.            
  465.             if ((linia = wejscie.readLine()) == null) {
  466.                 bw.write("ID doktora, Nazwa uzytkownika, Haslo, Imie, Nazwisko");
  467.                 bw.write("\n");
  468.             }
  469.            
  470.             for(Doktor d: lista_doktorow){             
  471.                 bw.append(d.zwroc_id_doktora() + ", " + d.zwroc_nazwe_uzytkownika_doktora()+","+d.zwroc_haslo_doktora()+","+d.zwroc_imie()+","+d.zwroc_nazwisko());
  472.                 bw.newLine();
  473.             }
  474.            
  475.             bw.close();
  476.         }
  477.         catch (IOException e) {
  478.             e.printStackTrace();
  479.         }
  480.     }
  481.    
  482. }
  483.  
  484.  
  485.  
  486. /////////////////////////////// WIDOK /////////////////////////////////////
  487.  
  488. /**
  489.  * Pakiet
  490.  */
  491. package system;
  492.  
  493. import weryfikacja.*;
  494. import ludzie.Doktor;
  495. import ludzie.Pacjent;
  496. import java.util.ArrayList;
  497. import java.util.Arrays;
  498. import java.util.List;
  499. import javax.swing.JFrame;
  500. import javax.swing.JPanel;
  501. import javax.swing.JPasswordField;
  502. import java.awt.Color;
  503. import java.awt.Component;
  504. import java.awt.Cursor;
  505. import java.awt.Desktop;
  506. import java.awt.EventQueue;
  507. import javax.swing.border.LineBorder;
  508. import javax.swing.event.DocumentEvent;
  509. import javax.swing.event.DocumentListener;
  510. import javax.swing.table.TableRowSorter;
  511. import javax.swing.text.JTextComponent;
  512. import net.miginfocom.swing.MigLayout;
  513. import java.awt.GridLayout;
  514. import java.awt.Image;
  515. import java.awt.event.ActionEvent;
  516. import java.awt.event.ActionListener;
  517. import java.awt.event.FocusEvent;
  518. import java.awt.event.FocusListener;
  519. import java.awt.event.MouseAdapter;
  520. import java.awt.event.MouseEvent;
  521. import java.awt.image.BufferedImage;
  522. import java.io.File;
  523. import java.io.FileNotFoundException;
  524. import java.io.IOException;
  525. import java.net.URI;
  526. import java.net.URISyntaxException;
  527. import javax.swing.JTextField;
  528. import javax.swing.JTextPane;
  529. import javax.swing.RowFilter;
  530. import javax.swing.SwingConstants;
  531. import javax.swing.JLabel;
  532. import javax.swing.JOptionPane;
  533. import javax.imageio.ImageIO;
  534. import javax.swing.ImageIcon;
  535. import javax.swing.JButton;
  536. import javax.swing.JComboBox;
  537. import javax.swing.JFileChooser;
  538. import javax.swing.JFormattedTextField;
  539. import java.awt.Font;
  540. import javax.swing.JSeparator;
  541. import javax.swing.JTable;
  542. import javax.swing.JScrollPane;
  543.  
  544. /**
  545.  * Klasa odpowiadajaca za wyglad aplikacji i polaczenie funkcjonalnosci
  546.  * @author Mateusz Olejarz
  547.  */
  548. public class Widok {
  549.  
  550.     public JFrame okno;
  551.  
  552.     /*
  553.      * Panele
  554.      */
  555.     private JPanel panel_logowania;
  556.     private JPanel panel_zbiornik;
  557.     private JPanel panel_tabel;
  558.     private JPanel panel_rejestracji;
  559.     private JPanel karta_pacjenta = new JPanel();
  560.     private JPanel panel_rejestracji_doktora;
  561.    
  562.     /*
  563.      * Arraylisty
  564.      */
  565.     private ArrayList<Doktor> lista_doktorow;
  566.     private ArrayList<Pacjent> lista_pacjentow;
  567.    
  568.     private Kontroler kontroler = new Kontroler();
  569.     private int indeks_pacjenta;
  570.    
  571.     /*
  572.      * Panel rejestracji lekarza
  573.      */
  574.     private JTextField imie_rejestracja;
  575.     private JTextField nazwisko_rejestracja;
  576.     private JTextField nazwa_uzytkownika_rejestracja;
  577.     private JPasswordField haslo_rejestracja;
  578.     private JPasswordField pole_na_haslo;
  579.     private JButton zarejestruj;
  580.     private JLabel ikona_rejestracji;
  581.    
  582.     /*
  583.      * Panel logowania
  584.      */
  585.     private JFormattedTextField nazwa_uzytkownika_login;
  586.     private JPasswordField haslo_login;
  587.    
  588.     /*
  589.      * Panel rejestracji pacjenta
  590.      */
  591.     private JTextField imie;
  592.     private JTextField nazwisko;
  593.     private JTextField data_urodzenia;
  594.     private JTextPane adres;
  595.     private JTextField telefon;
  596.     private JTextField stan;
  597.     private JComboBox<?> okres_rozliczeniowy;
  598.     private JTextPane komentarze;
  599.     private JLabel avatar;
  600.     private JScrollPane panel_komentarzy;
  601.     private JScrollPane panel_adresu;
  602.     private static List<String> lista_mozliwych_rozliczen = Arrays.asList("MisiÄ™czny", "Kwartalny", "Roczny", "Inny");
  603.    
  604.     /*
  605.      * Zdjecia
  606.      */
  607.     private StringBuilder ulr_stanu;
  608.     private String wygenerowane_url;
  609.     private File plik_skanu_1;
  610.     private File plik_skanu_2;
  611.     private File plik_skanu_3;
  612.     private JLabel skan_1;
  613.     private JLabel skan_2;
  614.     private JLabel skan_3;
  615.     private File pp;
  616.     private BufferedImage zdjecie;
  617.     private BufferedImage scanPhoto1;
  618.     private BufferedImage scanPhoto2;
  619.     private BufferedImage scanPhoto3;
  620.     private JLabel etykieta_url_stanu;
  621.    
  622.     /*
  623.      * Sciezki do plikow
  624.      */
  625.     private String logo_systemu = "resources/images/icons/srp_logo.png";
  626.     private String zdjecia_awatarow = "resources/images/avatary";
  627.     private String zdjecia_skanow = "resources/images/zdjecia_skanow";
  628.    
  629.     private JTextField filtruj_tekst;
  630.     private TablicaPacjentow model_tabeli = null;
  631.     private TableRowSorter<TablicaPacjentow> sortownik;
  632.     private JTable tablica_pacjentow_z_modelu = new JTable(model_tabeli);
  633.     private JScrollPane panel_pacjentow = new JScrollPane(tablica_pacjentow_z_modelu);
  634.     private ArrayList<Pacjent> przefiltrowana_lista_pacjentow;
  635.     private JLabel doktor_do_zalogowanego;
  636.     private boolean edycja = false;
  637.     private Doktor zalogowany_lekarz;
  638.  
  639.     public Widok() {
  640.         try {
  641.             kontroler.zapisz_nowy_plik_doktorow();
  642.             kontroler.zapisz_nowy_plik_pacjentow();
  643.         }
  644.         catch (FileNotFoundException e) {
  645.             e.printStackTrace();
  646.         }
  647.        
  648.         lista_doktorow = kontroler.lista_doktorow_plik();
  649.         inicjalizuj();     
  650.     }
  651.    
  652.     /**
  653.      * Inicjalizuje aplikacje
  654.      */
  655.     private void inicjalizuj() {
  656.         okno = new JFrame();
  657.         okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  658.         okno.setTitle("System Rejestracji Pacjentów");
  659.         okno.setBounds(0, 0, 1200, 700);
  660.         okno.getContentPane().setLayout(null);
  661.         okno.setLocationRelativeTo(null);
  662.         stworz_panel_logowania();
  663.         panel_logowania.setVisible(true);
  664.         panel_rejestracji_doktora();
  665.         panel_rejestracji_doktora.setVisible(false);
  666.         panel_zbiornik = new JPanel();
  667.         panel_zbiornik.setBounds(0, 0, 1200, 678);
  668.         panel_zbiornik.setLayout(null);
  669.         panel_zbiornik.setVisible(false);
  670.         okno.getContentPane().add(panel_zbiornik);
  671.         karta_pacjenta.setVisible(false);
  672.         stworz_panel_rejestracji_pacjenta();
  673.         panel_rejestracji.setVisible(false);
  674.         stworz_panel_tabel();
  675.     }
  676.    
  677.     /**
  678.      * Pozwala na rejestracje nowego doktora
  679.      * @return panel_rejestracji_doktora - JPanel zawierajacy wszytkie potrzebne informacje o stworzonym doktorze.
  680.      */
  681.     private JPanel panel_rejestracji_doktora() {
  682.         panel_rejestracji_doktora = new JPanel();
  683.         panel_rejestracji_doktora.setBackground(new Color(252,225,219));
  684.         panel_rejestracji_doktora.setBounds(0, 0, 1200, 678);
  685.         panel_rejestracji_doktora.setLayout(null);
  686.         okno.getContentPane().add(panel_rejestracji_doktora);
  687.         JLabel lblFirstName = new JLabel("Imie");
  688.         lblFirstName.setBounds(474, 231, 107, 16);
  689.         panel_rejestracji_doktora.add(lblFirstName);
  690.         JLabel lblLastName = new JLabel("Nazwisko");
  691.         lblLastName.setBounds(474, 273, 107, 16);
  692.         panel_rejestracji_doktora.add(lblLastName);
  693.         JLabel lblUsername = new JLabel("Login");
  694.         lblUsername.setBounds(474, 313, 107, 16);
  695.         panel_rejestracji_doktora.add(lblUsername);
  696.         JLabel lblPassword = new JLabel("Haslo");
  697.         lblPassword.setBounds(474, 363, 107, 16);
  698.         panel_rejestracji_doktora.add(lblPassword);
  699.         JLabel lblRegister = new JLabel("Zarejestruj jako lekarz");
  700.         lblRegister.setFont(new Font("Helvetica", Font.PLAIN, 18));
  701.         lblRegister.setBounds(535, 190, 175, 16);
  702.         panel_rejestracji_doktora.add(lblRegister);
  703.         imie_rejestracja = new JTextField();
  704.         imie_rejestracja.setBounds(636, 226, 130, 26);
  705.         panel_rejestracji_doktora.add(imie_rejestracja);
  706.         imie_rejestracja.setColumns(10);
  707.         nazwisko_rejestracja = new JTextField();
  708.         nazwisko_rejestracja.setColumns(10);
  709.         nazwisko_rejestracja.setBounds(636, 268, 130, 26);
  710.         panel_rejestracji_doktora.add(nazwisko_rejestracja);
  711.         nazwa_uzytkownika_rejestracja = new JTextField();
  712.         nazwa_uzytkownika_rejestracja.setColumns(10);
  713.         nazwa_uzytkownika_rejestracja.setBounds(636, 308, 130, 26);
  714.         panel_rejestracji_doktora.add(nazwa_uzytkownika_rejestracja);
  715.         JLabel lblConfirmPassword = new JLabel("Potwierdz haslo");
  716.         lblConfirmPassword.setBounds(474, 408, 161, 16);
  717.         panel_rejestracji_doktora.add(lblConfirmPassword);
  718.         JButton btnBack = new JButton("Powrot");
  719.        
  720.         btnBack.addActionListener(new ActionListener() {
  721.             public void actionPerformed(ActionEvent e) {
  722.                 panel_logowania.setVisible(true);
  723.                 panel_rejestracji_doktora.setVisible(false);
  724.                 haslo_login.setText("");
  725.                 nazwa_uzytkownika_login.setText("");
  726.             }
  727.         });
  728.        
  729.         btnBack.setBounds(452, 466, 161, 29);
  730.         panel_rejestracji_doktora.add(btnBack);
  731.         zarejestruj = new JButton("Zarejestruj i zaloguj");
  732.         zarejestruj.setBounds(625, 466, 161, 29);
  733.         panel_rejestracji_doktora.add(zarejestruj);
  734.        
  735.         zarejestruj.addActionListener(new ActionListener() {
  736.             @SuppressWarnings("deprecation")
  737.             public void actionPerformed(ActionEvent e) {
  738.                 if(!haslo_rejestracja.getText().equals(pole_na_haslo.getText())){
  739.                     JOptionPane.showMessageDialog(okno, "Hasla musza sie zgadzac!", "Uwaga",
  740.                             JOptionPane.WARNING_MESSAGE);
  741.                 }
  742.                 else{
  743.                     Doktor dodaj_lekarza = ustaw_pola_rejestracji_doktora();
  744.                     sprawdz_czy_lekarz_jest_zarejestrowany(dodaj_lekarza);
  745.                 }
  746.  
  747.             }
  748.         });
  749.  
  750.         ikona_rejestracji = new JLabel("");
  751.         ikona_rejestracji.setBounds(575, 41, 186, 122);
  752.         panel_rejestracji_doktora.add(ikona_rejestracji);
  753.         ImageIcon imageIcon = new ImageIcon(logo_systemu);
  754.         Image image = imageIcon.getImage();
  755.         Image newimg = image.getScaledInstance(120, 120,  java.awt.Image.SCALE_SMOOTH);
  756.         imageIcon = new ImageIcon(newimg);
  757.         ikona_rejestracji.setIcon(imageIcon);
  758.         JSeparator separator = new JSeparator();
  759.         separator.setBounds(455, 207, 337, 12);
  760.         panel_rejestracji_doktora.add(separator);
  761.         pole_na_haslo = new JPasswordField();
  762.         pole_na_haslo.setBounds(636, 358, 130, 26);
  763.         panel_rejestracji_doktora.add(pole_na_haslo);
  764.         haslo_rejestracja = new JPasswordField();
  765.         haslo_rejestracja.setBounds(636, 403, 130, 26);
  766.         panel_rejestracji_doktora.add(haslo_rejestracja);
  767.         panel_rejestracji_doktora.setVisible(false);
  768.        
  769.         return panel_rejestracji_doktora;
  770.  
  771.     }
  772.  
  773.     /**
  774.      * Sprawdza czy doktor juz istnieje
  775.      * @param dodaj_lekarza doktor do sprawdzenia
  776.      * @return doktor_istnieje wynik sprawdzenia czy istnieje czy nie
  777.      */
  778.     private boolean sprawdz_czy_lekarz_jest_zarejestrowany(Doktor dodaj_lekarza){
  779.         boolean doktor_istnieje = false;
  780.         int addID = dodaj_lekarza.zwroc_id_doktora();
  781.        
  782.         for(Doktor d:lista_doktorow){
  783.             if(d.zwroc_id_doktora()==addID) {  
  784.                 doktor_istnieje = true;
  785.                 dodaj_lekarza = d;
  786.                 break;
  787.             }
  788.         }
  789.         if(!doktor_istnieje){
  790.             JOptionPane.showMessageDialog(okno, "Pomyslnie zarejestrowano jako "+
  791.                     dodaj_lekarza.zwroc_imie()+" "+dodaj_lekarza.zwroc_nazwisko(),"Logowanie udane",
  792.                     JOptionPane.INFORMATION_MESSAGE);
  793.             lista_doktorow.add(dodaj_lekarza);
  794.            
  795.             try {
  796.                 kontroler.zapisz_doktorow(lista_doktorow);
  797.             }
  798.             catch (FileNotFoundException e) {
  799.                 e.printStackTrace();
  800.             }
  801.            
  802.             doktor_do_zalogowanego.setText("Zalogowany jako "+dodaj_lekarza.zwroc_imie()+" "+dodaj_lekarza.zwroc_nazwisko());
  803.             zalogowany_lekarz = dodaj_lekarza;
  804.             lista_pacjentow = kontroler.lista_pacjentow_plik();
  805.             przechowuj_obrazy(lista_pacjentow);
  806.             przefiltrowana_lista_pacjentow=new ArrayList<Pacjent>();
  807.            
  808.             for( Pacjent p : lista_pacjentow) {
  809.                 if (p.zwroc_id_doktora_pacjenta()==zalogowany_lekarz.zwroc_id_doktora()){
  810.                     przefiltrowana_lista_pacjentow.add(p);
  811.                 }
  812.             }
  813.             for(Pacjent f:przefiltrowana_lista_pacjentow){
  814.                 if (f.zwroc_id_doktora_pacjenta()==zalogowany_lekarz.zwroc_id_doktora()){
  815.                     lista_pacjentow.remove(f);
  816.                 }
  817.             }
  818.            
  819.             model_tabeli = new TablicaPacjentow(przefiltrowana_lista_pacjentow);
  820.             stworz_panel_JTable();
  821.             czysc_pola();
  822.             karta_pacjenta.setVisible(false);
  823.             panel_logowania.setVisible(false);
  824.             panel_zbiornik.setVisible(true);
  825.             panel_rejestracji.setVisible(true);
  826.            
  827.             panel_rejestracji_doktora.setVisible(false);
  828.         }
  829.         if(doktor_istnieje) {
  830.             int reply = JOptionPane.showConfirmDialog(null, dodaj_lekarza.zwroc_imie()+" "+dodaj_lekarza.zwroc_nazwisko()+" jest juz zarejestrowany. Czy chcesz sie zalogowac jako ten doktor? Jesli nie, zmien login oraz haslo i sprobuj ponownie" , "Rejestracja", JOptionPane.YES_NO_OPTION);
  831.            
  832.             if (reply == JOptionPane.YES_OPTION) {
  833.                 JOptionPane.showMessageDialog(okno, "Pomysnie zalogowano jako "+ dodaj_lekarza.zwroc_imie()+" "+dodaj_lekarza.zwroc_nazwisko(),"Logowanie udane", JOptionPane.INFORMATION_MESSAGE);
  834.                 doktor_do_zalogowanego.setText("Zalogowany jako "+dodaj_lekarza.zwroc_imie()+" "+dodaj_lekarza.zwroc_nazwisko());
  835.                 zalogowany_lekarz = dodaj_lekarza;
  836.                 lista_pacjentow = kontroler.lista_pacjentow_plik();
  837.                 przechowuj_obrazy(lista_pacjentow);
  838.                 przefiltrowana_lista_pacjentow=new ArrayList<Pacjent>();
  839.                
  840.                 for( Pacjent p : lista_pacjentow) {
  841.                     if (p.zwroc_id_doktora_pacjenta()==zalogowany_lekarz.zwroc_id_doktora()){
  842.                         przefiltrowana_lista_pacjentow.add(p);
  843.                     }
  844.                 }
  845.                 for(Pacjent f:przefiltrowana_lista_pacjentow){
  846.                     if (f.zwroc_id_doktora_pacjenta()==zalogowany_lekarz.zwroc_id_doktora()){
  847.                         lista_pacjentow.remove(f);
  848.                     }
  849.                 }
  850.                
  851.                 model_tabeli = new TablicaPacjentow(przefiltrowana_lista_pacjentow);
  852.                 stworz_panel_JTable();
  853.                 czysc_pola();
  854.                 karta_pacjenta.setVisible(false);
  855.                 panel_logowania.setVisible(false);
  856.                 panel_rejestracji_doktora.setVisible(false);
  857.                 panel_zbiornik.setVisible(true);
  858.                 panel_rejestracji.setVisible(true);
  859.             }              
  860.         }
  861.  
  862.         return doktor_istnieje;
  863.     }
  864.    
  865.     /**
  866.      * Ustawia wszystkie pola rejestracji puste
  867.      */
  868.     private void czysc_pola(){
  869.         adres.setText("");
  870.         komentarze.setText("");
  871.         stan.setText("");
  872.         Component[] components = panel_rejestracji.getComponents();
  873.        
  874.         for (Component component : components) {
  875.             if(component.equals(data_urodzenia)){
  876.                 data_urodzenia.setText("");
  877.             }
  878.             if (component instanceof JTextField) {
  879.                 JTextComponent specificObject = (JTextComponent) component;
  880.                 specificObject.setText("");            
  881.             }
  882.             if(component.equals(skan_1)||component.equals(skan_2) ||component.equals(skan_3) || component.equals(avatar)){
  883.                 JLabel specificObject = (JLabel) component;
  884.                 specificObject.setIcon(null);
  885.             }
  886.             else if(component.equals(etykieta_url_stanu)){
  887.                 etykieta_url_stanu.setText("<html> Link z Wiki: <a href=\"\">"+stan.getText()+"</a></html>");
  888.             }
  889.         }
  890.     }
  891.    
  892.     /**
  893.      * Tworzy panel logowania
  894.      * @return panel_logowania  panel logowania
  895.      */
  896.     private JPanel stworz_panel_logowania(){
  897.         panel_logowania = new JPanel();
  898.         panel_logowania.setBackground(new Color(115,92,127));
  899.         panel_logowania.setBounds(0, 0, 1200, 678);
  900.         okno.getContentPane().add(panel_logowania);
  901.         panel_logowania.setLayout(null);
  902.         nazwa_uzytkownika_login = new JFormattedTextField();
  903.         nazwa_uzytkownika_login.setBounds(517, 330, 159, 25);
  904.         nazwa_uzytkownika_login.setText("Enter Username");
  905.        
  906.         nazwa_uzytkownika_login.addMouseListener(new MouseAdapter() {
  907.             @Override
  908.             public void mouseClicked(MouseEvent e) {
  909.                 nazwa_uzytkownika_login.setText("");
  910.             }
  911.         });
  912.        
  913.         panel_logowania.add(nazwa_uzytkownika_login);
  914.         haslo_login = new JPasswordField();
  915.         haslo_login.setText("Enter Password");
  916.         haslo_login.setBounds(517, 391, 159, 25);
  917.        
  918.         haslo_login.addMouseListener(new MouseAdapter() {
  919.             @Override
  920.             public void mouseClicked(MouseEvent e){
  921.                 haslo_login.setText("");
  922.             }
  923.         });
  924.        
  925.         panel_logowania.add(haslo_login);
  926.         JButton loginButton = new JButton("Login");
  927.         loginButton.setBounds(517, 465, 159, 25);
  928.        
  929.         loginButton.addActionListener(new ActionListener() {
  930.             public void actionPerformed(ActionEvent e) {
  931.                 Doktor doktor_do_sprawdzenia = uzupelnij_pola_doktora();
  932.                 czy_jest_doktor_logowanie(doktor_do_sprawdzenia);
  933.             }
  934.         });
  935.  
  936.         panel_logowania.add(loginButton);  
  937.         JLabel lblNewLabel = new JLabel("");
  938.         lblNewLabel.setBounds(370, 0, 500, 358);
  939.         panel_logowania.add(lblNewLabel);  
  940.         ImageIcon imageIcon = new ImageIcon(logo_systemu);
  941.         Image image = imageIcon.getImage();
  942.         Image newimg = image.getScaledInstance(450, 280,  java.awt.Image.SCALE_SMOOTH);
  943.         imageIcon = new ImageIcon(newimg);
  944.         lblNewLabel.setIcon(imageIcon);
  945.         panel_logowania.setVisible(false);
  946.         return panel_logowania;
  947.     }
  948.  
  949.     /**
  950.      * Sprawdza podczas logowania czy taki doktor istnieje czy nie
  951.      * @param dodaj_lekarza  lekarz do sprawdzeina przy logowaniu
  952.      * @return doktor_istnieje zwrocona wartosc mowiaca o tym czy doktor istnieje czy nie
  953.      */
  954.     private boolean czy_jest_doktor_logowanie(Doktor dodaj_lekarza) {
  955.         boolean doktor_istnieje = false;
  956.         int addID = dodaj_lekarza.zwroc_id_doktora();
  957.        
  958.         for(Doktor d:lista_doktorow){
  959.             if(d.zwroc_id_doktora()==addID) {  
  960.                 doktor_istnieje = true;
  961.                 dodaj_lekarza = d;
  962.                 break;
  963.             }
  964.         }
  965.         if(!doktor_istnieje){
  966.             int reply = JOptionPane.showConfirmDialog(null, "Uzytkownik niezarejestrowany - przejsc do rejestracji? Jesli nie, sprobuj ponownie" , "Rejestracja", JOptionPane.YES_NO_OPTION);
  967.            
  968.             if (reply == JOptionPane.YES_OPTION) {
  969.                 panel_logowania.setVisible(false);
  970.                 panel_rejestracji_doktora.setVisible(true);
  971.                 Component[] components = panel_rejestracji_doktora.getComponents();
  972.                
  973.                 for(Component c: components){
  974.                     if (c instanceof JTextField) {
  975.                         JTextComponent specificObject = (JTextComponent) c;
  976.                         specificObject.setText("");
  977.                     }
  978.                 }
  979.             }          
  980.         }
  981.         else {
  982.             JOptionPane.showMessageDialog(okno, "Zalogowales sie jako "+ dodaj_lekarza.zwroc_imie()+" "+dodaj_lekarza.zwroc_nazwisko(),"Logowanie udane", JOptionPane.INFORMATION_MESSAGE);
  983.             doktor_do_zalogowanego.setText("Zalogowany jako "+dodaj_lekarza.zwroc_imie()+" "+dodaj_lekarza.zwroc_nazwisko());
  984.             zalogowany_lekarz = dodaj_lekarza;
  985.             lista_pacjentow = kontroler.lista_pacjentow_plik();
  986.             przechowuj_obrazy(lista_pacjentow);
  987.             przefiltrowana_lista_pacjentow=new ArrayList<Pacjent>();
  988.            
  989.             for( Pacjent p : lista_pacjentow) {
  990.                 if (p.zwroc_id_doktora_pacjenta()==zalogowany_lekarz.zwroc_id_doktora()){
  991.                     przefiltrowana_lista_pacjentow.add(p);
  992.                 }
  993.             }
  994.             for(Pacjent f:przefiltrowana_lista_pacjentow){
  995.                 if (f.zwroc_id_doktora_pacjenta()==zalogowany_lekarz.zwroc_id_doktora()){
  996.                     lista_pacjentow.remove(f);
  997.                 }
  998.             }
  999.            
  1000.             model_tabeli = new TablicaPacjentow(przefiltrowana_lista_pacjentow);
  1001.             stworz_panel_JTable();
  1002.             czysc_pola();
  1003.             karta_pacjenta.setVisible(false);
  1004.             panel_logowania.setVisible(false);
  1005.             panel_zbiornik.setVisible(true);
  1006.             panel_rejestracji.setVisible(true);        
  1007.         }
  1008.  
  1009.         return doktor_istnieje;
  1010.     }
  1011.    
  1012.     /**
  1013.      * Tworzy ID Doktora do sprawdzenia po wprowadzonych danych przy logowaniu
  1014.      * @return doktor_do_sprawdzenia doktor do weryfikacji
  1015.      */
  1016.     @SuppressWarnings("deprecation")
  1017.     private Doktor uzupelnij_pola_doktora() {
  1018.         Doktor doktor_do_sprawdzenia = new Doktor();
  1019.         doktor_do_sprawdzenia.ustaw_haslo_doktora(haslo_login.getText());
  1020.         doktor_do_sprawdzenia.ustaw_nazwe_uzytkownika_doktora(nazwa_uzytkownika_login.getText());          
  1021.         doktor_do_sprawdzenia.ustaw_id_doktora(doktor_do_sprawdzenia.hashCode());
  1022.         return doktor_do_sprawdzenia;
  1023.     }
  1024.  
  1025.     /**
  1026.      * Tworzy panel rejestracji nowego pacjenta
  1027.      */
  1028.     private JPanel stworz_panel_rejestracji_pacjenta(){
  1029.         panel_rejestracji = new JPanel();
  1030.         panel_rejestracji.setBackground(new Color(252, 225, 219));  // Kolor wprowadzania danych palcjenta
  1031.         panel_rejestracji.setBounds(212, 0, 988, 678); 
  1032.         panel_rejestracji.setLayout(new MigLayout("", "[141px][8px][37px][5px][132px][4px][236.00px][9.00px][134px][46px][261.00px]", "[26px][4px][4px][1px][21px][4px][26px][9px][40.00px][3px][48px][11px][26px][12px][29px][14px][22px][12px][4px][1px][38px][12px][107px][22.00px][22.00px][0.00px][110px]"));
  1033.         JLabel lblFirstName = new JLabel("Imie");
  1034.         panel_rejestracji.add(lblFirstName, "cell 0 0,growx,aligny center");
  1035.         JLabel lblLastName = new JLabel("Nazwisko");
  1036.         panel_rejestracji.add(lblLastName, "cell 0 4,growx,aligny top");
  1037.         JLabel lblDateOfBirth = new JLabel("Data urodzenia (dd/mm/rrrr)");
  1038.         panel_rejestracji.add(lblDateOfBirth, "cell 0 6,growx,aligny center");
  1039.         JLabel lblAddressLine = new JLabel("Adres");
  1040.         panel_rejestracji.add(lblAddressLine, "cell 0 8,growx,aligny top");
  1041.         JLabel lblEmergencyPhoneNumber = new JLabel("Numer telefonu");
  1042.         panel_rejestracji.add(lblEmergencyPhoneNumber, "cell 0 12,growx,aligny center");
  1043.         JLabel lblMedicalCondition = new JLabel("Stan pacjenta");
  1044.         panel_rejestracji.add(lblMedicalCondition, "cell 0 14 3 1,growx,aligny center");
  1045.         etykieta_url_stanu = new JLabel();
  1046.         etykieta_url_stanu.setText("<html> Wpisz stan pacjenta i kliknij 'generuj link'</html>");
  1047.         panel_rejestracji.add(etykieta_url_stanu, "cell 0 16,growx,aligny top");
  1048.         JLabel lblBillingCycle = new JLabel("Okres rozliczeniowy");
  1049.         panel_rejestracji.add(lblBillingCycle, "cell 0 20,growx,aligny center");
  1050.         JLabel lblComments = new JLabel("Komentarze");
  1051.         panel_rejestracji.add(lblComments, "cell 0 22,growx,aligny top");
  1052.         imie = new JTextField();
  1053.         panel_rejestracji.add(imie, "cell 4 0,alignx left,aligny top");
  1054.         imie.setColumns(10);
  1055.         nazwisko = new JTextField();
  1056.         nazwisko.setColumns(10);
  1057.         panel_rejestracji.add(nazwisko, "cell 4 2 1 3,alignx left,aligny top");
  1058.         adres = new JTextPane();
  1059.         panel_adresu = new JScrollPane(adres);
  1060.         panel_rejestracji.add(panel_adresu, "cell 4 8 1 3,grow");
  1061.         data_urodzenia = new JTextField();
  1062.         data_urodzenia.setInputVerifier(new WeryfikacjaDaty());
  1063.         data_urodzenia.setColumns(10);
  1064.         panel_rejestracji.add(data_urodzenia, "cell 4 6,alignx left,aligny top");
  1065.         telefon = new JTextField();
  1066.         telefon.setInputVerifier(new WeryfikacjaTelefonu());
  1067.         telefon.setColumns(10);
  1068.         panel_rejestracji.add(telefon, "cell 4 12,alignx left,aligny top");
  1069.         etykieta_url_stanu = new JLabel();
  1070.         panel_rejestracji.add(etykieta_url_stanu, "cell 4 16 3 3,grow");
  1071.         etykieta_url_stanu.setText("<html> Wpisz stan pacjenta powyzej 'generuj link'</html>");
  1072.         ulr_stanu = new StringBuilder();
  1073.         ulr_stanu.append("http://en.wikipedia.org/wiki/");
  1074.         stan = new JTextField();
  1075.         stan.setColumns(10);
  1076.         panel_rejestracji.add(stan, "cell 4 14,alignx left,aligny top");
  1077.         JButton btnGenerateURL = new JButton("Generuj URL");
  1078.         panel_rejestracji.add(btnGenerateURL, "cell 6 14,alignx left,aligny top"); 
  1079.        
  1080.         btnGenerateURL.addActionListener(new ActionListener() {
  1081.             public void actionPerformed(ActionEvent e) {
  1082.                 ulr_stanu.append(stan.getText().replaceAll(" ", "_"));
  1083.                 wygenerowane_url = ulr_stanu.toString();
  1084.                 etykieta_url_stanu.setText("<html> Wikipedia Link : <a href=\"\">"+stan.getText()+"</a></html>");
  1085.                 stworz_link_do_strony(etykieta_url_stanu, wygenerowane_url, stan.getText());
  1086.                 ulr_stanu.setLength(0);
  1087.                 ulr_stanu.append("http://en.wikipedia.org/wiki/"); 
  1088.             }
  1089.         });
  1090.  
  1091.         okres_rozliczeniowy = new JComboBox<Object>(lista_mozliwych_rozliczen.toArray());
  1092.         panel_rejestracji.add(okres_rozliczeniowy, "cell 4 20,growx,aligny bottom");
  1093.         komentarze = new JTextPane();
  1094.         panel_komentarzy = new JScrollPane(komentarze);
  1095.         panel_rejestracji.add(panel_komentarzy, "cell 4 22,grow");
  1096.         avatar = new JLabel();
  1097.         panel_rejestracji.add(avatar, "cell 10 22,grow");
  1098.         JButton btnUploade = new JButton("Dodaj avatar");
  1099.         panel_rejestracji.add(btnUploade, "cell 8 22,alignx right,aligny bottom");
  1100.        
  1101.         btnUploade.addActionListener(new ActionListener() {
  1102.             public void actionPerformed(ActionEvent e) {
  1103.                 JFileChooser chooser = new JFileChooser(zdjecia_awatarow);
  1104.                 chooser.showOpenDialog(null);
  1105.                 try {
  1106.                     zdjecie = null;
  1107.                     pp = chooser.getSelectedFile();
  1108.                     zdjecie = ImageIO.read(pp);
  1109.                     Image dimg = zdjecie.getScaledInstance(120, 120,Image.SCALE_SMOOTH);//This scales the image
  1110.                     avatar.setIcon(new ImageIcon(dimg));
  1111.                 }
  1112.                 catch (IOException io) {
  1113.                 }
  1114.             }
  1115.         });
  1116.  
  1117.         skan_3 = new JLabel();
  1118.         panel_rejestracji.add(skan_3, "cell 10 16 1 5,grow");
  1119.         JButton btnUploadScan_2 = new JButton("Dodaj skan");
  1120.         panel_rejestracji.add(btnUploadScan_2, "cell 8 16,alignx right,aligny top");
  1121.        
  1122.         btnUploadScan_2.addActionListener(new ActionListener() {
  1123.             public void actionPerformed(ActionEvent e) {
  1124.                 JFileChooser chooser = new JFileChooser(zdjecia_skanow);
  1125.                 chooser.showOpenDialog(null);
  1126.                 try {
  1127.                     plik_skanu_3 = chooser.getSelectedFile();
  1128.                     scanPhoto3 = null;
  1129.                     scanPhoto3 = ImageIO.read(plik_skanu_3);
  1130.                     Image scanphoto3 = scanPhoto3.getScaledInstance(120, 120,Image.SCALE_SMOOTH);//This scales the image
  1131.                     skan_3.setIcon(new ImageIcon(scanphoto3));
  1132.                 }
  1133.                 catch (IOException e1) {
  1134.                     e1.printStackTrace();
  1135.                 }
  1136.             }
  1137.         });
  1138.  
  1139.         JSeparator separator = new JSeparator();
  1140.         separator.setForeground(Color.LIGHT_GRAY);
  1141.         panel_rejestracji.add(separator, "cell 0 24 7 1,growx,aligny top");
  1142.         JSeparator separator_1 = new JSeparator();
  1143.         separator_1.setOrientation(SwingConstants.VERTICAL);
  1144.         separator_1.setForeground(new Color(102,80,114));
  1145.         panel_rejestracji.add(separator_1, "cell 7 0 1 27,grow");
  1146.         skan_1 = new JLabel();
  1147.         panel_rejestracji.add(skan_1, "cell 10 0 1 9,grow");
  1148.         skan_2 = new JLabel();
  1149.         panel_rejestracji.add(skan_2, "cell 10 10 1 5,grow");
  1150.         JButton btnUploadScan = new JButton("Dodaj skan");
  1151.         panel_rejestracji.add(btnUploadScan, "cell 8 0 1 3,alignx right,aligny bottom");
  1152.        
  1153.         btnUploadScan.addActionListener(new ActionListener() {
  1154.             public void actionPerformed(ActionEvent e) {
  1155.                 JFileChooser chooser = new JFileChooser(zdjecia_skanow);
  1156.                 chooser.showOpenDialog(null);
  1157.                 try {
  1158.                     plik_skanu_1 = chooser.getSelectedFile();
  1159.                     scanPhoto1 = null;
  1160.                     scanPhoto1 = ImageIO.read(plik_skanu_1);
  1161.                     Image scanphoto1 = scanPhoto1.getScaledInstance(120, 120,Image.SCALE_SMOOTH);//This scales the image
  1162.                     skan_1.setIcon(new ImageIcon(scanphoto1));
  1163.                 }
  1164.                 catch (IOException e1) {
  1165.                     e1.printStackTrace();
  1166.                 }
  1167.             }
  1168.         });
  1169.  
  1170.         JButton btnUploadScan_1 = new JButton("Dodaj skan");
  1171.         panel_rejestracji.add(btnUploadScan_1, "cell 8 10,alignx right,aligny top");
  1172.        
  1173.         btnUploadScan_1.addActionListener(new ActionListener() {
  1174.             public void actionPerformed(ActionEvent e) {
  1175.                 JFileChooser chooser = new JFileChooser(zdjecia_skanow);
  1176.                 chooser.showOpenDialog(null);
  1177.                 try {
  1178.                     plik_skanu_2 = chooser.getSelectedFile();
  1179.                     scanPhoto2 = null;
  1180.                     scanPhoto2 = ImageIO.read(plik_skanu_2);
  1181.                     Image scanphoto2 = scanPhoto2.getScaledInstance(120, 120,Image.SCALE_SMOOTH);//This scales the image
  1182.                     skan_2.setIcon(new ImageIcon(scanphoto2));
  1183.                 }
  1184.                 catch (IOException e1) {
  1185.                     e1.printStackTrace();
  1186.                 }
  1187.             }
  1188.         });
  1189.  
  1190.         JSeparator separator_2 = new JSeparator();
  1191.         separator_2.setForeground(Color.LIGHT_GRAY);
  1192.         panel_rejestracji.add(separator_2, "cell 8 24 3 1,growx,aligny top");
  1193.         JButton btnConfirmNewpacjent = new JButton("Zatwierdz");
  1194.        
  1195.         btnConfirmNewpacjent.addActionListener(new ActionListener() {
  1196.             public void actionPerformed(ActionEvent e) {
  1197.                 Pacjent dodaj_pacjenta = ustaw_pola_dodawanaego_pacjenta();
  1198.                 sprawcz_czy_pacjent_jest_nowy(dodaj_pacjenta);                 
  1199.             }          
  1200.         });
  1201.        
  1202.         panel_rejestracji.add(btnConfirmNewpacjent, "cell 8 26 3 1,alignx left,aligny top");
  1203.         panel_zbiornik.add(panel_rejestracji);
  1204.         return panel_rejestracji;
  1205.     }
  1206.  
  1207.     /**
  1208.      * Sprawdza czy pacjent juz istnieje czy jest nowy
  1209.      * @param dodaj_pacjenta
  1210.      */
  1211.     private void sprawcz_czy_pacjent_jest_nowy(Pacjent dodaj_pacjenta){
  1212.         boolean czy_pacjent_istnieje = false;
  1213.         int addID = dodaj_pacjenta.zwroc_id_pacjenta();
  1214.         indeks_pacjenta = 0;
  1215.         Pacjent zamien_pacjenta = null;
  1216.        
  1217.         for(Pacjent p:przefiltrowana_lista_pacjentow){
  1218.             if(p.zwroc_id_pacjenta()==addID) { 
  1219.                 czy_pacjent_istnieje = true;
  1220.                 indeks_pacjenta = przefiltrowana_lista_pacjentow.indexOf(dodaj_pacjenta);
  1221.                 zamien_pacjenta = przefiltrowana_lista_pacjentow.get(indeks_pacjenta);
  1222.                 break;
  1223.             }
  1224.         }
  1225.         if(!czy_pacjent_istnieje && edycja){   
  1226.             JOptionPane.showMessageDialog(okno,
  1227.                     "Zmieniasz imie i nazwisko pacjenta. Te pola nie moga byc edytowane, dodaj nowego pacjenta lub edytuj inne pola",
  1228.                             "Uwaga - proba stworzenia nowego pacjenta",
  1229.                             JOptionPane.WARNING_MESSAGE);
  1230.         }
  1231.         else if(czy_pacjent_istnieje && edycja){
  1232.             lista_pacjentow.removeAll(przefiltrowana_lista_pacjentow);
  1233.             przefiltrowana_lista_pacjentow.set(indeks_pacjenta, dodaj_pacjenta);
  1234.             model_tabeli.ustaw_liste(przefiltrowana_lista_pacjentow);
  1235.             przechowuj_obrazy(dodaj_pacjenta);         
  1236.            
  1237.             try {
  1238.                 lista_pacjentow.addAll(przefiltrowana_lista_pacjentow);
  1239.                 kontroler.zapisz_pacjentow(lista_pacjentow);
  1240.             }
  1241.             catch (FileNotFoundException e) {
  1242.                 e.printStackTrace();
  1243.             }
  1244.            
  1245.             JOptionPane.showMessageDialog(okno, "Pacjent zostal edytowany");
  1246.             karta_pacjenta.setVisible(true);
  1247.             panel_rejestracji.setVisible(false);
  1248.         }
  1249.         else if(!czy_pacjent_istnieje && !edycja){         
  1250.             przechowuj_obrazy(dodaj_pacjenta);
  1251.             lista_pacjentow.removeAll(przefiltrowana_lista_pacjentow);
  1252.             przefiltrowana_lista_pacjentow.add(dodaj_pacjenta);
  1253.             model_tabeli.ustaw_liste(przefiltrowana_lista_pacjentow);          
  1254.            
  1255.             try {
  1256.                 lista_pacjentow.addAll(przefiltrowana_lista_pacjentow);
  1257.                 kontroler.zapisz_pacjentow(lista_pacjentow);
  1258.             }
  1259.             catch (FileNotFoundException e) {
  1260.                 e.printStackTrace();
  1261.             }
  1262.            
  1263.             JOptionPane.showMessageDialog(okno, "Nowy pacjent zostal dodany");
  1264.             karta_pacjenta.setVisible(true);
  1265.             panel_rejestracji.setVisible(false);
  1266.         }
  1267.         else{
  1268.             int reply = JOptionPane.showConfirmDialog(okno, "Ten pacjent jest juz w systemie. Czy zamiast tego edytowac? Jesli nie, sprobuj podac inne dane pacjenta","Uwaga", JOptionPane.YES_NO_OPTION);
  1269.            
  1270.             if (reply == JOptionPane.YES_OPTION) {
  1271.                 edycja = true;
  1272.                 edytuj_pacjenta(zamien_pacjenta);
  1273.             }
  1274.         }
  1275.     }
  1276.    
  1277.     /**
  1278.      * Tworzy folder dla kazdego pacjenta
  1279.      * @param lista_pacjentow lista pacjentow
  1280.      */
  1281.     private void przechowuj_obrazy(ArrayList<Pacjent> lista_pacjentow){
  1282.         for(Pacjent p: lista_pacjentow){
  1283.             String sciezka_obrazu = "resources/imagedatabase/"+ String.valueOf(p.zwroc_nazwe_uzytkownia_doktora_pacjenta().replaceAll("\\s+","")+"/"+p.zwroc_imie_pacjenta().toLowerCase()+"_"+p.zwroc_nazwisko_pacjenta().toLowerCase());
  1284.             File imagefolder = new File(sciezka_obrazu);
  1285.             imagefolder.mkdirs();
  1286.         }
  1287.     }
  1288.    
  1289.     /**
  1290.      * Przechowywuje obrazu pacjentow i zamienia je kiedy trzeba
  1291.      * @param pacjent pacjent ktorego edytujemy lub dodajemy i ktorego plik zostanie zmieniony
  1292.      */
  1293.     private void przechowuj_obrazy(Pacjent pacjent){
  1294.         String sciezka_obrazu = "resources/imagedatabase/"+ String.valueOf(pacjent.zwroc_nazwe_uzytkownia_doktora_pacjenta().replaceAll("\\s+","")+"/"+pacjent.zwroc_imie_pacjenta().toLowerCase()+"_"+pacjent.zwroc_nazwisko_pacjenta().toLowerCase());
  1295.         File imagefolder = new File(sciezka_obrazu);
  1296.         imagefolder.mkdirs();
  1297.        
  1298.         try {
  1299.             if(zdjecie!=null){
  1300.                 BufferedImage ebufferimage = zdjecie;
  1301.                 File efile = new File(sciezka_obrazu+"/zdjecie.png");
  1302.                 ImageIO.write(ebufferimage, "png", efile);
  1303.             }
  1304.             if(scanPhoto1!=null){
  1305.                 BufferedImage skan_1bufferimage = scanPhoto1;
  1306.                 File skan_1file = new File(sciezka_obrazu+"/skan_1.png");
  1307.                 ImageIO.write(skan_1bufferimage, "png", skan_1file);
  1308.             }
  1309.             if(scanPhoto2!=null){
  1310.                 BufferedImage skan_2bufferimage = scanPhoto2;
  1311.                 File skan_2file = new File(sciezka_obrazu+"/skan_2.png");
  1312.                 ImageIO.write(skan_2bufferimage, "png", skan_2file);
  1313.             }
  1314.             if(scanPhoto3!=null){
  1315.                 BufferedImage skan_3bufferimage = scanPhoto3;
  1316.                 File skan_3file = new File(sciezka_obrazu+"/skan_3.png");
  1317.                 ImageIO.write(skan_3bufferimage, "png", skan_3file);
  1318.             }  
  1319.         }
  1320.         catch (IOException e) {
  1321.         }
  1322.     }
  1323.    
  1324.     /**
  1325.      * Ustawia pola dodanego pacjenta
  1326.      * @return dodaj_pacjenta dodawany pacjent
  1327.      */
  1328.     private Pacjent ustaw_pola_dodawanaego_pacjenta(){
  1329.         Pacjent dodaj_pacjenta = new Pacjent();
  1330.         dodaj_pacjenta.ustaw_imie_pacjenta(imie.getText());
  1331.         dodaj_pacjenta.ustaw_nazwisko_pacjenta(nazwisko.getText());
  1332.         dodaj_pacjenta.ustaw_date_urodzenia_pacjenta(data_urodzenia.getText());
  1333.         dodaj_pacjenta.ustaw_adres_pacjenta(adres.getText().replaceAll("\n|\t|,", " "));
  1334.         dodaj_pacjenta.ustaw_okres_rozliczeniowy_pacjenta((String) okres_rozliczeniowy.getSelectedItem());
  1335.         dodaj_pacjenta.ustaw_stan_pacjenta(stan.getText());
  1336.         dodaj_pacjenta.ustaw_komentarze_do_pacjenta(komentarze.getText().replaceAll("\n|\t|,", " "));
  1337.         dodaj_pacjenta.ustaw_numer_telefonu_pacjenta(telefon.getText());
  1338.         dodaj_pacjenta.ustaw_id_doktora_pacjenta(zalogowany_lekarz.zwroc_id_doktora());
  1339.         dodaj_pacjenta.ustaw_nazwe_uzytkownia_doktora_pacjenta(zalogowany_lekarz.zwroc_nazwe_uzytkownika_doktora());
  1340.         dodaj_pacjenta.ustaw_id_pacjenta(dodaj_pacjenta.hashCode());
  1341.         return dodaj_pacjenta;
  1342.     }
  1343.  
  1344.     /**
  1345.      * Tworzy panel Jtable
  1346.      * @return karta_pacjenta panel JTable na ktorym pracuje system
  1347.      */
  1348.     private JPanel stworz_panel_JTable(){
  1349.         karta_pacjenta.setBackground(new Color(121, 97, 135));  // kolor nad wyswietlaniem pacjentow
  1350.         karta_pacjenta.setBounds(212, 0, 988, 678);
  1351.         karta_pacjenta.setLayout(null);
  1352.         tablica_pacjentow_z_modelu.setModel(model_tabeli);
  1353.         tablica_pacjentow_z_modelu.setFillsViewportHeight(true);
  1354.         tablica_pacjentow_z_modelu.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
  1355.         sortownik = new TableRowSorter<TablicaPacjentow>(model_tabeli);
  1356.         int columncount = model_tabeli.getColumnCount();
  1357.        
  1358.         for(int i=0;i<columncount;i++){
  1359.             sortownik.setSortable(i, false);
  1360.         }          
  1361.        
  1362.         tablica_pacjentow_z_modelu.setRowSorter(sortownik);
  1363.         filtruj_tekst = new JTextField("Podaj dane aby wyszukac pacjenta");
  1364.         filtruj_tekst.setSize(520, 18);
  1365.         filtruj_tekst.setLocation(220, 28);
  1366.         karta_pacjenta.add(filtruj_tekst);
  1367.         filtruj_tekst.setColumns(10);
  1368.        
  1369.         filtruj_tekst.addFocusListener(new FocusListener() {
  1370.             @Override
  1371.             public void focusGained(FocusEvent e) {
  1372.                 filtruj_tekst.setText("");
  1373.             }
  1374.             @Override
  1375.             public void focusLost(FocusEvent e) {
  1376.             }
  1377.         });
  1378.         filtruj_tekst.getDocument().addDocumentListener(new DocumentListener()  {
  1379.             RowFilter<TablicaPacjentow, Object> rf = null;
  1380.             String text = filtruj_tekst.getText();
  1381.            
  1382.             public void changedUpdate(DocumentEvent e) {               
  1383.                 if (text.length() == 0) {
  1384.                     sortownik.setRowFilter(null);
  1385.                 }
  1386.                 else {
  1387.                     try{
  1388.                         rf = RowFilter.regexFilter("(?i)" + filtruj_tekst.getText());
  1389.                         sortownik.setRowFilter(rf);
  1390.                     }
  1391.                     catch(java.util.regex.PatternSyntaxException e1){
  1392.                         return;
  1393.                     }                  
  1394.                 }          
  1395.             }
  1396.            
  1397.             @Override
  1398.             public void insertUpdate(DocumentEvent e) {
  1399.                 if (text.length() == 0) {
  1400.                     sortownik.setRowFilter(null);
  1401.                 } else {
  1402.                     try{
  1403.                         rf = RowFilter.regexFilter("(?i)" + filtruj_tekst.getText());
  1404.                         sortownik.setRowFilter(rf);
  1405.                     }
  1406.                     catch(java.util.regex.PatternSyntaxException e1){
  1407.                         return;
  1408.                     }          
  1409.                 }              
  1410.             }
  1411.            
  1412.             @Override
  1413.             public void removeUpdate(DocumentEvent e) {
  1414.                 if (text.length() == 0) {
  1415.                     sortownik.setRowFilter(null);
  1416.                 } else {
  1417.                     try{
  1418.                         rf = RowFilter.regexFilter("(?i)" + filtruj_tekst.getText());
  1419.                         sortownik.setRowFilter(rf);
  1420.                     }catch(java.util.regex.PatternSyntaxException e1){
  1421.                         return;
  1422.                     }          
  1423.                 }              
  1424.             }
  1425.         });  
  1426.        
  1427.         panel_pacjentow.setLocation(0, 154);
  1428.         panel_pacjentow.setSize(968, 505);
  1429.         karta_pacjenta.add(panel_pacjentow);
  1430.         JButton btnExportpacjents = new JButton("Eksportuj zaznaczonych");
  1431.         btnExportpacjents.setBounds(795, 123, 179, 19);
  1432.         karta_pacjenta.add(btnExportpacjents);
  1433.        
  1434.         btnExportpacjents.addActionListener(new ActionListener() {
  1435.             public void actionPerformed(ActionEvent e) {
  1436.                 edycja = false;
  1437.                 int[] selection = tablica_pacjentow_z_modelu.getSelectedRows();
  1438.                 ArrayList<Pacjent> exportlista_pacjentow = new ArrayList<Pacjent>();
  1439.                
  1440.                 for (int i = 0; i < selection.length; i++) {
  1441.                     selection[i] = tablica_pacjentow_z_modelu.convertRowIndexToModel(selection[i]);
  1442.                     exportlista_pacjentow.add(przefiltrowana_lista_pacjentow.get(tablica_pacjentow_z_modelu.convertRowIndexToModel(selection[i])));
  1443.                 }
  1444.                
  1445.                 JFileChooser fc = new JFileChooser("./databases");
  1446.                 int returnVal = fc.showSaveDialog(okno);
  1447.                
  1448.                 if (returnVal == JFileChooser.APPROVE_OPTION) {
  1449.                     File exportfile = new File(fc.getSelectedFile()+".csv");           
  1450.                     try {
  1451.                         kontroler.eksportuj_liste_pacjentow(exportlista_pacjentow, exportfile);
  1452.                     }
  1453.                     catch (IOException e1) {
  1454.                         e1.printStackTrace();
  1455.                     }
  1456.                    
  1457.                     JOptionPane.showMessageDialog(okno, "Plik zostal eksportowany", "Potwierdzenie",
  1458.                             JOptionPane.INFORMATION_MESSAGE);
  1459.                 }
  1460.             }
  1461.         });
  1462.  
  1463.         JButton btnpacjent_do_edycji = new JButton("Edytuj zaznaczonego");
  1464.         btnpacjent_do_edycji.setBounds(314, 115, 179, 24);
  1465.         karta_pacjenta.add(btnpacjent_do_edycji);  
  1466.        
  1467.         btnpacjent_do_edycji.addActionListener(new ActionListener() {
  1468.             public void actionPerformed(ActionEvent e) {                       
  1469.                 if(tablica_pacjentow_z_modelu.getSelectedRowCount()>1){
  1470.                     JOptionPane.showMessageDialog(okno, "Mozesz edytowac tylko jednego na raz!", "Uwaga",
  1471.                             JOptionPane.WARNING_MESSAGE);
  1472.                 }
  1473.                 else{
  1474.                     edycja = true;
  1475.                     int selectedRow = tablica_pacjentow_z_modelu.getSelectedRow();
  1476.                     Pacjent pacjent_do_edycji = przefiltrowana_lista_pacjentow.get(tablica_pacjentow_z_modelu.convertRowIndexToModel(selectedRow)); //This is definitely the selected pacjent, I have checked via debug mode           
  1477.                     edytuj_pacjenta(pacjent_do_edycji);
  1478.                 }          
  1479.             }
  1480.         });
  1481.  
  1482.         JButton deletepacjents = new JButton("Usun zaznaczonego pacjenta");
  1483.         deletepacjents.setBounds(26, 115, 200, 24);
  1484.         karta_pacjenta.add(deletepacjents);
  1485.        
  1486.         deletepacjents.addActionListener(new ActionListener() {
  1487.             public void actionPerformed(ActionEvent e) {
  1488.                 if(tablica_pacjentow_z_modelu.getSelectedRowCount()>1){
  1489.                     JOptionPane.showMessageDialog(okno, "Mozesz usuwac tylko jednego na raz!", "Uwaga",
  1490.                             JOptionPane.WARNING_MESSAGE);
  1491.                 }
  1492.                 else {
  1493.                     int modelRow = tablica_pacjentow_z_modelu.convertRowIndexToModel(tablica_pacjentow_z_modelu.getSelectedRow());
  1494.                     Pacjent deletepacjent = przefiltrowana_lista_pacjentow.get(modelRow);
  1495.                     int reply = JOptionPane.showConfirmDialog(null, "Na pewno usunac "+deletepacjent.zwroc_imie_pacjenta()+" "+deletepacjent.zwroc_nazwisko_pacjenta() + "?"
  1496.                     , "Confirm delete", JOptionPane.YES_NO_OPTION);
  1497.                    
  1498.                     if (reply == JOptionPane.YES_OPTION) {
  1499.                         lista_pacjentow.removeAll(przefiltrowana_lista_pacjentow);
  1500.                         przefiltrowana_lista_pacjentow.remove(deletepacjent);
  1501.                         model_tabeli.ustaw_liste(przefiltrowana_lista_pacjentow);
  1502.                         String sciezka_obrazu = "resources/imagedatabase/"+
  1503.                                 String.valueOf(deletepacjent.zwroc_nazwe_uzytkownia_doktora_pacjenta().replaceAll("\\s+","")+"/"+deletepacjent.zwroc_imie_pacjenta().toLowerCase()+"_"+deletepacjent.zwroc_nazwisko_pacjenta().toLowerCase());
  1504.                         File imagefolder = new File(sciezka_obrazu);
  1505.                         usun_niepotrzebne_obrazy(imagefolder);                 
  1506.                        
  1507.                         try {
  1508.                             lista_pacjentow.addAll(przefiltrowana_lista_pacjentow);
  1509.                             kontroler.zapisz_pacjentow(lista_pacjentow);
  1510.                         }
  1511.                         catch (FileNotFoundException e1) {
  1512.                             e1.printStackTrace();
  1513.                         }
  1514.                     }
  1515.                 }
  1516.             }
  1517.         });
  1518.        
  1519.         panel_zbiornik.add(karta_pacjenta);
  1520.         karta_pacjenta.setVisible(true);
  1521.         return karta_pacjenta;
  1522.     }
  1523.  
  1524.     /**
  1525.      * Usuwa obrazy pacjentow ktorzy zostaja usunieci
  1526.      * @param plik folder w ktorym sa pliki
  1527.      */
  1528.     public void usun_niepotrzebne_obrazy(File plik) {
  1529.         if(plik.isDirectory()) {
  1530.             File[] pliki=plik.listFiles();
  1531.        
  1532.             for(int i=0;i<pliki.length;i++)
  1533.             {
  1534.                 usun_niepotrzebne_obrazy(pliki[i]);
  1535.             }
  1536.             plik.delete();
  1537.         }
  1538.         else {
  1539.             plik.delete();
  1540.         }
  1541.     }
  1542.    
  1543.     /**
  1544.      * Pozwala na edycje pacjenta
  1545.      * @param  pacjent_do_edycji pacjent do edycji
  1546.      */
  1547.     private void edytuj_pacjenta(Pacjent pacjent_do_edycji){
  1548.         edycja = true;
  1549.         imie.setText(pacjent_do_edycji.zwroc_imie_pacjenta());
  1550.         nazwisko.setText(pacjent_do_edycji.zwroc_nazwisko_pacjenta());
  1551.         data_urodzenia.setText(pacjent_do_edycji.zwroc_date_urodzenia_pacjenta());
  1552.         adres.setText(pacjent_do_edycji.zwroc_adres_pacjenta());
  1553.         telefon.setText(pacjent_do_edycji.zwroc_numer_telefonu_pacjenta());
  1554.         stan.setText(pacjent_do_edycji.zwroc_stan_pacjenta());
  1555.         ulr_stanu = new StringBuilder();
  1556.         ulr_stanu.append("http://en.wikipedia.org/wiki/");
  1557.         ulr_stanu.append(stan.getText().replaceAll(" ", "_"));
  1558.         wygenerowane_url = ulr_stanu.toString();
  1559.         etykieta_url_stanu.setText("<html> Link z Wiki : <a href=\"\">"+stan.getText()+"</a></html>");
  1560.         stworz_link_do_strony(etykieta_url_stanu, wygenerowane_url, stan.getText());
  1561.         ulr_stanu.setLength(0);
  1562.         ulr_stanu.append("http://en.wikipedia.org/wiki/"); 
  1563.         okres_rozliczeniowy.setSelectedItem(pacjent_do_edycji.zwroc_okres_rozliczeniowy_pacjenta());
  1564.         komentarze.setText(pacjent_do_edycji.zwroc_komentarze_do_pacjenta());
  1565.         String sciezka_obrazu = "resources/imagedatabase/"+
  1566.                 String.valueOf(pacjent_do_edycji.zwroc_nazwe_uzytkownia_doktora_pacjenta().replaceAll("\\s+","")+"/"+pacjent_do_edycji.zwroc_imie_pacjenta().toLowerCase()+"_"+pacjent_do_edycji.zwroc_nazwisko_pacjenta().toLowerCase());
  1567.         File efile = new File(sciezka_obrazu+"/zdjecie.png");
  1568.         File skan_1file = new File(sciezka_obrazu+"/skan_1.png");
  1569.         File skan_2file = new File(sciezka_obrazu+"/skan_2.png");
  1570.         File skan_3file = new File(sciezka_obrazu+"/skan_3.png");
  1571.        
  1572.         try {
  1573.             if(efile.exists()){
  1574.                 BufferedImage zdjecie = ImageIO.read(efile);
  1575.                 Image dimg = zdjecie.getScaledInstance(120, 120,Image.SCALE_SMOOTH);//This scales the image
  1576.                 avatar.setIcon(new ImageIcon(dimg));
  1577.             }
  1578.             if(skan_1file.exists()){
  1579.                 BufferedImage skan_1Photo = ImageIO.read(skan_1file);
  1580.                 Image dimg = skan_1Photo.getScaledInstance(120, 120,Image.SCALE_SMOOTH);//This scales the image
  1581.                 skan_1.setIcon(new ImageIcon(dimg));
  1582.             }
  1583.             if(skan_2file.exists()){
  1584.                 BufferedImage skan_2Photo = ImageIO.read(skan_2file);
  1585.                 Image dimg = skan_2Photo.getScaledInstance(120, 120,Image.SCALE_SMOOTH);//This scales the image
  1586.                 skan_2.setIcon(new ImageIcon(dimg));
  1587.             }
  1588.             if(skan_3file.exists()){
  1589.                 BufferedImage skan_3Photo = ImageIO.read(skan_3file);
  1590.                 Image dimg = skan_3Photo.getScaledInstance(120, 120,Image.SCALE_SMOOTH);//This scales the image
  1591.                 skan_3.setIcon(new ImageIcon(dimg));
  1592.             }  
  1593.         }
  1594.         catch (IOException e) {
  1595.         }
  1596.  
  1597.         panel_rejestracji.setVisible(true);
  1598.         karta_pacjenta.setVisible(false);
  1599.     }
  1600.    
  1601.     /**
  1602.      * Funkcjonalnosc calego systemu, przelaczanie miedzy kartami, np. wyloguj
  1603.      * @return panel_tabel panel pozwalajacy na przelaczanie miedzy kartami
  1604.      */
  1605.     private JPanel stworz_panel_tabel(){
  1606.         panel_tabel = new JPanel(new GridLayout(20,0));
  1607.         panel_tabel.setBorder(new LineBorder(new Color(0, 0, 0)));
  1608.         panel_tabel.setBounds(0, 0, 213, 678);
  1609.         panel_zbiornik.add(panel_tabel);
  1610.         panel_tabel.setBackground(new Color(98, 77, 108));      // Panel boczny
  1611.         doktor_do_zalogowanego = new JLabel("");
  1612.         panel_tabel.add(doktor_do_zalogowanego);
  1613.         JButton registerButton = new JButton("Zatwierdz");
  1614.         panel_tabel.add(registerButton);
  1615.        
  1616.         registerButton.addActionListener(new ActionListener() {
  1617.             public void actionPerformed(ActionEvent e) {
  1618.                 edycja = false;
  1619.                 karta_pacjenta.setVisible(false);
  1620.                 panel_rejestracji.setVisible(true);
  1621.                 czysc_pola();
  1622.             }
  1623.         });    
  1624.  
  1625.         JButton viewButton = new JButton("Wyswietl pacjentow");
  1626.         panel_tabel.add(viewButton);
  1627.        
  1628.         viewButton.addActionListener(new ActionListener() {
  1629.             public void actionPerformed(ActionEvent e) {
  1630.                 edycja = false;
  1631.                 karta_pacjenta.setVisible(true);
  1632.                 panel_rejestracji.setVisible(false);
  1633.             }  
  1634.         });
  1635.  
  1636.         JButton importButton = new JButton("Importuj pacjentow (CSV)");
  1637.         panel_tabel.add(importButton);
  1638.        
  1639.         importButton.addActionListener(new ActionListener() {
  1640.             public void actionPerformed(ActionEvent e) {
  1641.                 JFileChooser fc = new JFileChooser("./databases");
  1642.                 int returnVal = fc.showOpenDialog(okno);
  1643.                
  1644.                 if (returnVal == JFileChooser.APPROVE_OPTION) {
  1645.                     File importfile = fc.getSelectedFile();
  1646.                     ArrayList<Pacjent> importlista_pacjentow = kontroler.lista_pacjentow_plik(importfile);
  1647.                     ArrayList<Pacjent> checkedlista_pacjentow = new ArrayList<Pacjent>();
  1648.                     boolean isunique=true;
  1649.                    
  1650.                     for(Pacjent imp: importlista_pacjentow){                                                                           
  1651.                         for(Pacjent p: przefiltrowana_lista_pacjentow){
  1652.                             if (imp.zwroc_id_pacjenta()==p.zwroc_id_pacjenta()){
  1653.                                 isunique=false;
  1654.                                 break;
  1655.                             }
  1656.                             else{
  1657.                                 isunique=true;
  1658.                             }
  1659.                         }
  1660.                         if(isunique){
  1661.                             checkedlista_pacjentow.add(imp);
  1662.                         }
  1663.                     }
  1664.                    
  1665.                     lista_pacjentow.removeAll(przefiltrowana_lista_pacjentow);
  1666.                     przefiltrowana_lista_pacjentow.addAll(checkedlista_pacjentow);
  1667.                     model_tabeli.ustaw_liste(przefiltrowana_lista_pacjentow);
  1668.                     lista_pacjentow.addAll(przefiltrowana_lista_pacjentow);
  1669.                    
  1670.                     try {
  1671.                         kontroler.zapisz_pacjentow(lista_pacjentow);
  1672.                     }
  1673.                     catch (FileNotFoundException e1) {
  1674.                         e1.printStackTrace();
  1675.                     }  
  1676.                 }
  1677.             }  
  1678.         });
  1679.  
  1680.         JButton logoutButton = new JButton("Wyloguj");
  1681.         panel_tabel.add(logoutButton);
  1682.         panel_tabel.setVisible(true);
  1683.        
  1684.         logoutButton.addActionListener(new ActionListener() {
  1685.             public void actionPerformed(ActionEvent event) {
  1686.                 edycja = false;
  1687.                 int reply = JOptionPane.showConfirmDialog(okno, "Na pewno wylogowac?", null, JOptionPane.YES_NO_OPTION);
  1688.                
  1689.                 switch(reply){
  1690.                 case JOptionPane.YES_OPTION:
  1691.                     zalogowany_lekarz = null;
  1692.                     panel_zbiornik.setVisible(false);
  1693.                     panel_logowania.setVisible(true);
  1694.                     nazwa_uzytkownika_login.setText("");
  1695.                     haslo_login.setText("");
  1696.                     Component[] registernents = panel_rejestracji_doktora.getComponents();
  1697.                    
  1698.                     for (Component c : registernents) {
  1699.                         if (c instanceof JTextField) {
  1700.                             JTextComponent specificObject = (JTextComponent) c;
  1701.                             specificObject.setText("");            
  1702.                         }
  1703.                     }
  1704.                    
  1705.                     Component[] components = panel_rejestracji.getComponents();
  1706.                    
  1707.                     for (Component component : components) {
  1708.                         if(component.equals(data_urodzenia)){
  1709.                             data_urodzenia.setText("");
  1710.                         }
  1711.                         if (component instanceof JTextField) {
  1712.                             JTextComponent specificObject = (JTextComponent) component;
  1713.                             specificObject.setText("");            
  1714.                         }
  1715.                         else if(component.equals(skan_1)||component.equals(skan_2) ||component.equals(skan_3) || component.equals(avatar)){
  1716.                             JLabel specificObject = (JLabel) component;
  1717.                             specificObject.setIcon(null);
  1718.                         }
  1719.                     }
  1720.                     break;
  1721.                 default:
  1722.                     panel_zbiornik.setVisible(true);
  1723.                     panel_logowania.setVisible(false);
  1724.                     break;
  1725.                 }
  1726.             }
  1727.         });
  1728.        
  1729.         return panel_tabel;
  1730.     }
  1731.  
  1732.     /**
  1733.      * Tworzy lekarza z panelu rejestracji doktorow
  1734.      * @return dodaj_lekarza
  1735.      */
  1736.     @SuppressWarnings("deprecation")
  1737.     private Doktor ustaw_pola_rejestracji_doktora(){
  1738.         Doktor dodaj_lekarza = new Doktor();
  1739.         dodaj_lekarza.ustaw_haslo_doktora(pole_na_haslo.getText());
  1740.         dodaj_lekarza.ustaw_nazwe_uzytkownika_doktora(nazwa_uzytkownika_rejestracja.getText());
  1741.         dodaj_lekarza.ustaw_imie(imie_rejestracja.getText());
  1742.         dodaj_lekarza.ustaw_nazwisko(nazwisko_rejestracja.getText());
  1743.         dodaj_lekarza.ustaw_id_doktora(dodaj_lekarza.hashCode());
  1744.         return dodaj_lekarza;
  1745.  
  1746.     }
  1747.  
  1748.     /**
  1749.      * Pozwala zmienic wpisany stan na url
  1750.      * @param strona JLabel z wygenerowanym linkiem
  1751.      * @param url uzywany do wygenerowania linku
  1752.      * @param tekst teskt w JLabel
  1753.      */
  1754.     private void stworz_link_do_strony(JLabel strona, final String url, String tekst) {
  1755.         etykieta_url_stanu.setCursor(new Cursor(Cursor.HAND_CURSOR));
  1756.        
  1757.         etykieta_url_stanu.addMouseListener(new MouseAdapter() {
  1758.             @Override
  1759.             public void mouseClicked(MouseEvent e) {
  1760.                 try {
  1761.                     Desktop.getDesktop().browse(new URI(url));
  1762.                 }
  1763.                 catch (URISyntaxException | IOException ex) {
  1764.                 }
  1765.             }
  1766.         });
  1767.     }
  1768. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement