Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package pl.magazyn.controllers;
- import pl.magazyn.views.*;
- import java.beans.PropertyChangeListener;
- import java.util.ArrayList;
- import java.io.*;
- import java.net.*;
- /**
- * Main Controller representing logic of the application
- *
- * @author Mateusz Mazurek
- * @version 4.0
- */
- public class MainController implements javax.swing.Action {
- /**
- * login servver response enum
- */
- public enum LoginServerRespone {
- NoUser, NotActive, WrongPassword, Done
- }
- /**
- * login server response enum
- */
- public enum ReserveServerRespone{
- Done, Unaviable, AccessDenied, HaveTool
- }
- /**
- * return tool server response
- */
- public enum ReturnServerResponse{
- Done, NothingToReturn
- }
- /**
- * add user server response
- */
- public enum AddUserServerResponse{
- Done, AccessDenied, UserExists
- }
- /**
- * name of the currently logged user
- */
- private String currentUser;
- /**
- * Main HUI object
- */
- private MainGUI mainGui;
- /**
- * Guest flag
- */
- private boolean guestFlag;
- /**
- * Login flag
- */
- private boolean loginFlag;
- /**
- * register flag
- */
- private boolean registerFlag;
- /**
- * User data form
- */
- private UserCreationForm userGui;
- /**
- * command/data send to the server
- */
- private String toServer;
- /**
- * data received from the server
- */
- private String fromServer;
- /**
- * buffer reader
- */
- private BufferedReader inFromUser;
- /**
- * socket
- */
- private Socket clientSocket;
- /**
- * output stream
- */
- private DataOutputStream outToServer;
- /**
- * input from server
- */
- private BufferedReader inFromServer;
- /**
- * server IP address
- */
- private String serverIP;
- /**
- * server port
- */
- private int port;
- private String name;
- private String pass;
- /**
- * @param args the command line arguments
- */
- public void startApp(String[] args) /*throws Exception*/ {
- mainGui = new MainGUI();
- mainGui.setVisible(true);
- userGui = new UserCreationForm();
- try {
- name= args[0];
- pass=args[1];
- } catch (ArrayIndexOutOfBoundsException exc) {
- userGui.setVisible(true);
- loginFlag = true;
- } catch(Exception exc){
- mainGui.showError("Błąd połączenia:\n " + exc.getMessage());
- }
- mainGui.addController(this);
- userGui.addController(this);
- }
- /**
- * connecting to server
- */
- public void connect() {
- serverIP = "192.168.21.4";
- port = 6789;
- inFromUser = new BufferedReader(new InputStreamReader(System.in));
- try {
- clientSocket = new Socket(serverIP, port);
- outToServer = new DataOutputStream(clientSocket.getOutputStream());
- inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
- } catch (Exception e) {
- mainGui.showError("Błąd połączenia:\n " + e.getMessage());
- }
- }
- /**
- * Method allows user to log in
- *
- * @param name user name
- * @param pass user password
- */
- public void logIn(String name, String pass) throws Exception {
- LoginServerRespone response;
- toServer = "login";
- outToServer.writeBytes(toServer+"\n");
- String message = inFromServer.readLine();
- if(!message.equals(toServer+"OK")){
- throw new Exception("Nie przyjęto komendy: "+message);
- }
- outToServer.writeBytes(name+"\n");
- outToServer.writeBytes(pass+"\n");
- response = LoginServerRespone.valueOf(inFromServer.readLine());
- switch(response){
- case NoUser:
- mainGui.showError("Nie znaleziono użytkownika. Logowanie jako gość.");
- currentUser = "Guest";
- mainGui.showError("Zalogowano jako: " + currentUser);
- guestFlag = true;
- break;
- case NotActive:
- mainGui.showError("Użytkownik nieaktywny! Logowanie jako gość.");
- currentUser = "Guest";
- guestFlag = true;
- break;
- case WrongPassword:
- mainGui.showError("Nieprawidłowe hasło! Logowanie jako gość.");
- currentUser = "Guest";
- guestFlag = true;
- break;
- case Done:
- currentUser = name;
- guestFlag = false;
- break;
- }
- mainGui.setRegisterEnable(guestFlag);
- mainGui.setCurrentUser(currentUser);
- mainGui.showError("Zalogowany jako: " + currentUser);
- }
- /**
- * manages returning tool
- */
- public void returnTool() throws Exception{
- ReturnServerResponse response;
- response = ReturnServerResponse.valueOf(inFromServer.readLine());
- switch (response) {
- case Done:
- mainGui.showError("Przedmiot oddany");
- break;
- case NothingToReturn:
- mainGui.showError("Nie ma przedmiotów do oddania");
- break;
- }
- }
- /**
- * Registering new User
- *
- * @param data ArrayList
- */
- public void registerUser(ArrayList<String> data) throws Exception{
- if (data.size() != 2) {
- mainGui.showError("Nieprawidłowa ilość danych użytkownika");
- return;
- }
- if (data.get(0) == null || data.get(1) == null || data.get(0).isEmpty() || data.get(1).isEmpty()) {
- mainGui.showError("Niepoprawne parametry");
- return;
- }
- toServer ="Zarejestruj";
- outToServer.writeBytes(toServer+"\n");
- String message = inFromServer.readLine();
- if(!message.equals(toServer+"OK")){
- throw new Exception("Nie przyjęto komendy: "+message);
- }
- outToServer.writeBytes(data.get(0)+"\n");
- outToServer.writeBytes(data.get(1)+"\n");
- AddUserServerResponse response = AddUserServerResponse.valueOf("Done");
- switch(response){
- case Done:
- mainGui.showError("Użytkownik zarejestrowany. Oczekiwanie na akceptacje administratora.");
- break;
- case AccessDenied:
- mainGui.showError("Odmowa dostępu");
- break;
- case UserExists:
- mainGui.showError("Podany użytkownik już istnieje");
- break;
- }
- }
- /**
- * Method for interface compatibilities only (not provide to occur)
- *
- * @param string
- * @return Object
- */
- @Override
- public Object getValue(String string) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
- }
- /**
- * Method for interface compatibilities only (not provide to occur)
- *
- * @param string String
- * @param o Object
- */
- @Override
- public void putValue(String string, Object o) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
- }
- /**
- * Method for interface compatibilities only (not provide to occur)
- *
- * @param bln boolean
- */
- @Override
- public void setEnabled(boolean bln) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
- }
- /**
- * Method for interface compatibilities only (not provide to occur)
- *
- * @return boolean
- */
- @Override
- public boolean isEnabled() {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
- }
- /**
- * Method for interface compatibilities only (not provide to occur)
- *
- * @param pl PropertyChangeListener
- */
- @Override
- public void addPropertyChangeListener(PropertyChangeListener pl) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
- }
- /**
- * Method for interface compatibilities only (not provide to occur)
- *
- * @param pl PropertyChangeListener
- */
- @Override
- public void removePropertyChangeListener(PropertyChangeListener pl) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
- }
- /**
- * Main event listener
- *
- * @param e java.awt.event.ActionEvent
- */
- @Override
- public void actionPerformed(java.awt.event.ActionEvent e) {
- String message;
- String action = e.getActionCommand();
- toServer = action;
- switch (action) {
- case "Odśwież":
- try {
- outToServer.writeBytes(toServer+"\n");
- message = inFromServer.readLine();
- if(!message.equals(toServer+"OK")){
- throw new Exception("Nie przyjęto komendy: "+message);
- }
- }
- catch (Exception exc){
- mainGui.showError("Błąd połączenia:\n " + exc.getMessage());
- }
- mainGui.setModelTools(getToolsDataForGUI());
- mainGui.setModelUsers(getUserDataForGUI());
- break;
- case "Wypożycz":
- try {
- outToServer.writeBytes(toServer+"\n");
- message = inFromServer.readLine();
- if(!message.equals(toServer+"OK")){
- throw new Exception("Nie przyjęto komendy: "+message);
- }
- reserveEvent();
- }
- catch (Exception exc){
- mainGui.showError("Błąd połączenia:\n " + exc.getMessage());
- }
- break;
- case "Zwróć":
- try {
- outToServer.writeBytes(toServer+"\n");
- message = inFromServer.readLine();
- if(!message.equals(toServer+"OK")){
- throw new Exception("Nie przyjęto komendy: "+message);
- }
- returnTool();
- }
- catch (Exception exc){
- mainGui.showError("Błąd połączenia:\n " + exc.getMessage());
- }
- break;
- case "Wyloguj i wyjdź":
- try {
- outToServer.writeBytes(toServer+"\n");
- message = inFromServer.readLine();
- if(!message.equals(toServer+"OK")){
- throw new Exception("Nie przyjęto komendy: "+message);
- }
- clientSocket.close();
- }
- catch (Exception exc){
- mainGui.showError("Błąd połączenia:\n " + exc.getMessage());
- }
- System.exit(0);
- break;
- case "Dodaj":
- userGui.setVisible(true);
- break;
- case "Potwierdz":
- try {
- addUserEvent();
- }
- catch (Exception exc){
- mainGui.showError("Błąd połączenia:\n " + exc.getMessage());
- }
- break;
- case "Zarejestruj":
- registerFlag = true;
- userGui.setVisible(true);
- break;
- case "Aktywuj":
- try {
- outToServer.writeBytes(toServer+"\n");
- message = inFromServer.readLine();
- if(!message.equals(toServer+"OK")){
- throw new Exception("Nie przyjęto komendy: "+message);
- }
- activateEvent();
- }
- catch (Exception exc){
- mainGui.showError("Błąd połączenia:\n " + exc.getMessage());
- }
- break;
- case "Usuń":
- try {
- outToServer.writeBytes(toServer+"\n");
- message = inFromServer.readLine();
- if(!message.equals(toServer+"OK")){
- throw new Exception("Nie przyjęto komendy: "+message);
- }
- deleteEvent();
- }
- catch (Exception exc){
- mainGui.showError("Błąd połączenia:\n " + exc.getMessage());
- }
- break;
- case "Połącz":
- connect();
- }
- } //actionPerformed()
- /**
- * reserve tool request
- * @throws Exception
- */
- public void reserveEvent() throws Exception{
- Integer selected;
- selected = mainGui.getSelectedTool();
- if (selected != -1) {
- outToServer.writeChar(selected);
- }
- ReserveServerRespone response = ReserveServerRespone.valueOf(inFromServer.readLine());
- switch(response){
- case Done:
- mainGui.showError("Wypożyczono.");
- break;
- case HaveTool:
- mainGui.showError("Masz już narzędzie");
- break;
- case Unaviable:
- mainGui.showError("Narzędzie niedostępne");
- break;
- case AccessDenied:
- mainGui.showError("Odmowa dostępu!");
- break;
- }
- }
- /**
- * add user event logic
- */
- public void addUserEvent() throws Exception{
- if (loginFlag) {
- loginFlag = false;
- logIn(userGui.getUserData().get(0), userGui.getUserData().get(1));
- }
- if (registerFlag) {
- registerFlag =false;
- registerUser(userGui.getUserData());
- }
- userGui.setVisible(false);
- if (guestFlag) {
- mainGui.setRegisterEnable(guestFlag);
- guestFlag = false;
- }
- }
- /**
- * Activate event logic
- */
- public void activateEvent() throws Exception{
- Integer selected;
- selected = mainGui.getSelectedUser();
- if (selected != -1) {
- outToServer.writeChar(selected);
- String message=inFromServer.readLine();
- switch(message){
- case "Done":
- mainGui.showError("Aktywowano");
- break;
- case "AccessDenied":
- mainGui.showError("Odmowa dostępu!");
- break;
- }
- }
- }
- /**
- * Delete event logic
- */
- public void deleteEvent()throws Exception{
- Integer selected;
- selected = mainGui.getSelectedUser();
- if (selected != -1) {
- outToServer.writeChar(selected);
- String message=inFromServer.readLine();
- switch(message){
- case "Done":
- mainGui.showError("Usunięto");
- break;
- case "AccessDenied":
- mainGui.showError("Odmowa dostępu!");
- break;
- }
- }
- }
- /**
- * returns tools data prepared for GUI
- *
- * @return ArrayList
- */
- public ArrayList<ArrayList<String>> getToolsDataForGUI() {
- ArrayList<ArrayList<String>> data = new ArrayList<>();
- for (Integer i = 0;; i++) {
- try{
- fromServer = inFromServer.readLine();
- }
- catch(Exception e){
- mainGui.showError("Błąd połączenia:\n " + e.getMessage());
- }
- if(fromServer.equals("END")){
- break;
- }
- ArrayList<String> rowData = new ArrayList<>();
- rowData.add(i.toString());
- rowData.add(fromServer);
- try{
- fromServer = inFromServer.readLine();
- rowData.add(fromServer);
- fromServer = inFromServer.readLine();
- rowData.add(fromServer);
- }
- catch(Exception e){
- mainGui.showError("Błąd połączenia:\n " + e.getMessage());
- }
- data.add(rowData);
- }
- return data;
- }
- /**
- * returns tools data prepared for GUI
- *
- * @return ArrayList
- */
- public ArrayList<ArrayList<String>> getUserDataForGUI() {
- ArrayList<ArrayList<String>> data = new ArrayList<>();
- for (Integer i = 0;; i++) {
- try{
- fromServer = inFromServer.readLine();
- }
- catch(Exception e){
- mainGui.showError("Błąd połączenia:\n " + e.getMessage());
- }
- if(fromServer.equals("END")){
- break;
- }
- ArrayList<String> rowData = new ArrayList<>();
- rowData.add(i.toString());
- rowData.add(fromServer);
- try{
- fromServer = inFromServer.readLine();
- rowData.add(fromServer);
- fromServer = inFromServer.readLine();
- rowData.add(fromServer);
- fromServer = inFromServer.readLine();
- rowData.add(fromServer);
- }
- catch(Exception e){
- mainGui.showError("Błąd połączenia:\n " + e.getMessage());
- }
- data.add(rowData);
- }
- return data;
- }
- }
Add Comment
Please, Sign In to add comment