JustCaused

Untitled

Jul 30th, 2021
861
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package gui_package;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Dimension;
  5. import java.awt.EventQueue;
  6. import java.awt.Font;
  7. import java.awt.SystemColor;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import java.io.BufferedReader;
  11. import java.io.FileNotFoundException;
  12. import java.io.FileReader;
  13. import java.io.IOException;
  14. import java.util.Iterator;
  15. import java.util.LinkedList;
  16.  
  17. import javax.swing.ImageIcon;
  18. import javax.swing.JButton;
  19. import javax.swing.JDialog;
  20. import javax.swing.JFrame;
  21. import javax.swing.JLabel;
  22. import javax.swing.JOptionPane;
  23. import javax.swing.JPanel;
  24. import javax.swing.JPasswordField;
  25. import javax.swing.JTextField;
  26. import javax.swing.SwingConstants;
  27. import javax.swing.border.EmptyBorder;
  28.  
  29. import backend_package.Korisnik;
  30. import java.awt.event.KeyAdapter;
  31. import java.awt.event.KeyEvent;
  32.  
  33. public class Login extends JDialog {
  34.     private JPanel contentPane;
  35.     private JPanel panel;
  36.     private JTextField txtUsername;
  37.     private JLabel lblUsername;
  38.     private JLabel lblPassword;
  39.     private JPasswordField txtPassword;
  40.     private JLabel lblIcon1;
  41.     private JButton btnPrijava;
  42.     private JLabel lblIcon3;
  43.     private JLabel lblIcon2;
  44.    
  45.     private LinkedList<Korisnik> korisnici;
  46.     private Korisnik ulogovanKorisnik = null;
  47.    
  48.     // ---------- CUSTOM METODE ---------------------------------------------
  49.     void errorIOException(String nazivFajla, String nazivMetode) {
  50.         System.err.println("GRESKA: Nije moguce upisivati u fajl \"" + nazivFajla + "\"! " + "(" + nazivMetode +")");
  51.     }
  52.     void errorFileNotFoundException(String nazivFajla, String nazivMetode) {
  53.         System.err.println("GRESKA: Nije moguce pristupiti fajlu \"" + nazivFajla + "\"! " + "(" + nazivMetode +")");
  54.     }
  55.    
  56.     String getUsername() {
  57.         String username = System.getProperty("user.name");
  58.         return username;
  59.     }
  60.     String getDirectoryPath() {
  61.         String username = getUsername();
  62.         String mainDirectoryPath = new String("C:\\Users\\" + username + "\\Documents\\CafeMaster"); // direktorijum u documents
  63.        
  64.         return mainDirectoryPath;
  65.     }
  66.     public String getUsersPath() {
  67.         return getDirectoryPath() + "\\users.txt";
  68.     }
  69.     void goToStart() {
  70.         EventQueue.invokeLater(new Runnable() {
  71.             public void run() {
  72.                 try {
  73.                     MainWindow frame = new MainWindow(ulogovanKorisnik);
  74.                     frame.setVisible(true);
  75.                     dispose();
  76.                 } catch (Exception e) {
  77.                     e.printStackTrace();
  78.                 }
  79.             }
  80.         });
  81.     }
  82.    
  83.     private LinkedList<Korisnik> ucitajSveKorisnike(){
  84.         try {
  85.             LinkedList<Korisnik> korisnici = new LinkedList<>();
  86.             BufferedReader br = new BufferedReader(new FileReader(getUsersPath()));
  87.             String procitanKorisnik;
  88.             String[] deloviProcitanogKorisnika;
  89.             Korisnik korisnik;
  90.            
  91.             while((procitanKorisnik=br.readLine()) != null) {
  92.                 deloviProcitanogKorisnika = podeliKorisnika(procitanKorisnik);
  93.                 korisnik = new Korisnik(Integer.parseInt(deloviProcitanogKorisnika[0]), deloviProcitanogKorisnika[1], deloviProcitanogKorisnika[2], Boolean.parseBoolean(deloviProcitanogKorisnika[3]), Double.parseDouble(deloviProcitanogKorisnika[4]));
  94.                 korisnici.add(korisnik);
  95.             }
  96.            
  97.             br.close();
  98.             return korisnici;
  99.         } catch (FileNotFoundException e) {
  100.             errorFileNotFoundException("users.txt", "ucitajSveKorisnike");
  101.         } catch (IOException e) {
  102.             errorIOException("users.txt", "ucitajSveKorisnike");
  103.         }
  104.         return null;
  105.     }
  106.    
  107.     private boolean proveriValidnost(String username, String password) {
  108.         Iterator<Korisnik> it = korisnici.iterator();
  109.         Korisnik iteratorniKorisnik;
  110.        
  111.         boolean korisnikPostoji = false;
  112.         while(it.hasNext() == true) {
  113.             iteratorniKorisnik = it.next();
  114.             if(iteratorniKorisnik.getUsername().matches(username) && iteratorniKorisnik.getPassword().matches(password)) {
  115.                 korisnikPostoji = true;
  116.                 ulogovanKorisnik = iteratorniKorisnik;
  117.             }
  118.         }
  119.        
  120.        
  121.         if(username.isEmpty()) {           
  122.             lblIcon2.setVisible(true);
  123.             JOptionPane.showMessageDialog(contentPane, "Molimo unesite korisničko ime.", "Nevalidni korisnički parametri", JOptionPane.WARNING_MESSAGE);
  124.             return false;
  125.         } else if(password.isEmpty()) {
  126.             lblIcon3.setVisible(true);
  127.             JOptionPane.showMessageDialog(contentPane, "Molimo unesite lozinku.", "Nevalidni korisnički parametri", JOptionPane.WARNING_MESSAGE);
  128.             return false;
  129.         } else if(password.length() < 3) {
  130.             lblIcon3.setVisible(true);
  131.             JOptionPane.showMessageDialog(contentPane, "Korisnička lozinka mora da sadrži bar 3 karaktera!", "Nevalidni korisnički parametri", JOptionPane.WARNING_MESSAGE);
  132.             return false;
  133.         } else if(username.contains("-")) {
  134.             JOptionPane.showMessageDialog(contentPane, "Korisničko ime ne sme da sadrži karakter '-'!", "Nevalidni korisnički parametri", JOptionPane.WARNING_MESSAGE);
  135.             return false;
  136.         } else if(password.contains("-")) {
  137.             JOptionPane.showMessageDialog(contentPane, "Korisnička lozinka ne sme da sadrži karakter '-'!", "Nevalidni korisnički parametri", JOptionPane.WARNING_MESSAGE);
  138.             return false;
  139.         } else if(korisnikPostoji == false) {
  140.             JOptionPane.showMessageDialog(contentPane, "Korisničko ime ili lozinka nisu ispravni!", "Nevalidni korisnički parametri", JOptionPane.ERROR_MESSAGE);
  141.             return false;
  142.         }
  143.        
  144.         lblIcon2.setVisible(false);
  145.         lblIcon3.setVisible(false);
  146.         return true;
  147.     }
  148.     private String[] podeliKorisnika(String procitanKorisnik) {
  149.         String[] deloviKorisnika = procitanKorisnik.split("-");
  150.         return deloviKorisnika;
  151.     }
  152.    
  153.     public Korisnik vratiUlogovanogKorisnika() {
  154.         return ulogovanKorisnik;
  155.     }
  156.     // ----------------------------------------------------------------------
  157.    
  158. //  public static void main(String[] args) {
  159. //      EventQueue.invokeLater(new Runnable() {
  160. //          public void run() {
  161. //              try {
  162. //                  Login frame = new Login(ulogovanKorisnik);
  163. //                  frame.setVisible(true);
  164. //              } catch (Exception e) {
  165. //                  e.printStackTrace();
  166. //              }
  167. //          }
  168. //      });
  169. //  }
  170.  
  171.     // ----------------------------------------------------------------------
  172.    
  173.     public Login() {
  174.         korisnici = ucitajSveKorisnike();
  175.        
  176.         setTitle("Prijavljivanje");
  177.         setMinimumSize(new Dimension(150, 150));
  178.         setResizable(false);
  179.         setPreferredSize(new Dimension(150, 150));
  180.         setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  181.         setBounds(100, 100, 400, 341);
  182.         setLocationRelativeTo(null);
  183.         contentPane = new JPanel();
  184.         contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  185.         contentPane.setLayout(new BorderLayout(0, 0));
  186.         setContentPane(contentPane);
  187.         contentPane.add(getPanel(), BorderLayout.CENTER);
  188.     }
  189.  
  190.     private JPanel getPanel() {
  191.         if (panel == null) {
  192.             panel = new JPanel();
  193.             panel.setBackground(SystemColor.controlHighlight);
  194.             panel.setLayout(null);
  195.             panel.add(getTxtUsername());
  196.             panel.add(getLblUsername());
  197.             panel.add(getLblPassword());
  198.             panel.add(getTxtPassword());
  199.             panel.add(getLblIcon1());
  200.             panel.add(getBtnPrijava());
  201.             panel.add(getLblIcon3());
  202.             panel.add(getLblIcon2());
  203.         }
  204.         return panel;
  205.     }
  206.     private JTextField getTxtUsername() {
  207.         if (txtUsername == null) {
  208.             txtUsername = new JTextField();
  209.             txtUsername.setBounds(194, 170, 118, 20);
  210.             txtUsername.setColumns(10);
  211.         }
  212.         return txtUsername;
  213.     }
  214.     private JLabel getLblUsername() {
  215.         if (lblUsername == null) {
  216.             lblUsername = new JLabel("Korisni\u010Dno ime:");
  217.             lblUsername.setFont(new Font("Arial", Font.PLAIN, 19));
  218.             lblUsername.setBounds(43, 163, 141, 29);
  219.         }
  220.         return lblUsername;
  221.     }
  222.     private JLabel getLblPassword() {
  223.         if (lblPassword == null) {
  224.             lblPassword = new JLabel("\u0160ifra:");
  225.             lblPassword.setHorizontalAlignment(SwingConstants.CENTER);
  226.             lblPassword.setFont(new Font("Arial", Font.PLAIN, 19));
  227.             lblPassword.setBounds(43, 196, 126, 29);
  228.         }
  229.         return lblPassword;
  230.     }
  231.     private JPasswordField getTxtPassword() {
  232.         if (txtPassword == null) {
  233.             txtPassword = new JPasswordField();
  234.             txtPassword.addKeyListener(new KeyAdapter() {
  235.                 public void keyPressed(KeyEvent e) {
  236.                     if (e.getKeyCode()==KeyEvent.VK_ENTER) {
  237.                          korisnici = ucitajSveKorisnike();
  238.                             lblIcon2.setVisible(false);
  239.                             lblIcon3.setVisible(false);
  240.                             String username = txtUsername.getText();
  241.                             String password = String.valueOf(txtPassword.getPassword());
  242.                            
  243.                             if(proveriValidnost(username, password) == true) {
  244.                                 dispose();
  245.                             }
  246.                      }
  247.                 }
  248.             });
  249.             txtPassword.setBounds(194, 203, 118, 20);
  250.         }
  251.         return txtPassword;
  252.     }
  253.     private JLabel getLblIcon1() {
  254.         if (lblIcon1 == null) {
  255.             lblIcon1 = new JLabel("");
  256.             lblIcon1.setHorizontalAlignment(SwingConstants.CENTER);
  257.             lblIcon1.setIcon(new ImageIcon(Login.class.getResource("/lib/smallCafeMaster.png")));
  258.             lblIcon1.setBounds(10, 11, 364, 146);
  259.         }
  260.         return lblIcon1;
  261.     }
  262.     private JButton getBtnPrijava() {
  263.         if (btnPrijava == null) {
  264.             btnPrijava = new JButton("PRIJAVI ME");
  265.             btnPrijava.addActionListener(new ActionListener() {
  266.                 public void actionPerformed(ActionEvent arg0) {
  267.                     korisnici = ucitajSveKorisnike();
  268.                     lblIcon2.setVisible(false);
  269.                     lblIcon3.setVisible(false);
  270.                     String username = txtUsername.getText();
  271.                     String password = String.valueOf(txtPassword.getPassword());
  272.                    
  273.                     if(proveriValidnost(username, password) == true) {
  274.                         dispose();
  275.                     }
  276.                    
  277.                 }
  278.             });
  279.             btnPrijava.setFocusable(false);
  280.             btnPrijava.setFont(new Font("Arial", Font.ITALIC, 20));
  281.             btnPrijava.setBounds(43, 246, 269, 37);
  282.         }
  283.         return btnPrijava;
  284.     }
  285.     private JLabel getLblIcon3() {
  286.         if (lblIcon3 == null) {
  287.             lblIcon3 = new JLabel("");
  288.             lblIcon3.setVisible(false);
  289.             lblIcon3.setMaximumSize(new Dimension(30, 30));
  290.             lblIcon3.setMinimumSize(new Dimension(30, 3));
  291.             lblIcon3.setPreferredSize(new Dimension(30, 30));
  292.             lblIcon3.setIcon(new ImageIcon(Login.class.getResource("/lib/error.png")));
  293.             lblIcon3.setBounds(322, 196, 30, 29);
  294.         }
  295.         return lblIcon3;
  296.     }
  297.     private JLabel getLblIcon2() {
  298.         if (lblIcon2 == null) {
  299.             lblIcon2 = new JLabel("");
  300.             lblIcon2.setIcon(new ImageIcon(Login.class.getResource("/lib/error.png")));
  301.             lblIcon2.setVisible(false);
  302.             lblIcon2.setBounds(322, 163, 30, 29);
  303.         }
  304.         return lblIcon2;
  305.     }
  306.  
  307. }
  308.  
RAW Paste Data