/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package cz.cvut.fel.restauracefel.manager.manager_gui; import cz.cvut.fel.restauracefel.library.Enums.EnumLoginResult; import cz.cvut.fel.restauracefel.manager.ManagerController.ChangePasswordResult; import cz.cvut.fel.restauracefel.manager.ManagerController.ManagerController; import cz.cvut.fel.restauracefel.manager.ManagerController.MenuItemResult; import cz.cvut.fel.restauracefel.manager.ManagerController.MenuItemTypeResult; import cz.cvut.fel.restauracefel.manager.ManagerController.MenuMenuItemResult; import cz.cvut.fel.restauracefel.manager.ManagerController.MenuResult; import cz.cvut.fel.restauracefel.manager.ManagerController.PrintMenuResult; import cz.cvut.fel.restauracefel.manager.ManagerController.RecipeDialogResult; import cz.cvut.fel.restauracefel.manager.ManagerController.TableDialogResult; import cz.cvut.fel.restauracefel.manager.ManagerController.UserFormResult; import cz.cvut.fel.restauracefel.hibernate.User; import java.util.Date; import cz.cvut.fel.restauracefel.library.service.ConfigParser; /** * * @author Lukáš Viezán */ public class ManagerViewController { private static final ManagerViewController instance = new ManagerViewController(); private ManagerController controller = null; private MainFrame mainFrame = null; private ManagerViewController( ) { } public static ManagerViewController getInstance( ) { return instance; } public void run( ) { mainFrame = new MainFrame( ); mainFrame.setVisible( true ); } public boolean isActive( ) { if ( mainFrame == null ) { return false; } return mainFrame.isVisible( ); } /* ================= ChangePasswordDialog ================= */ /** * Metoda pro zmenu prihlasovaciho hesla prave prihlaseneho uzivateli * @param oldPassword * @param newPassword * @param validPassword * @return */ public ChangePasswordResult changePassword(String oldPassword, String newPassword, String validPassword) { ChangePasswordResult result = getControler().changePassword(oldPassword, newPassword, validPassword); switch(result){ case ConnectionFail: mainFrame.showErrorMessage( "Nelze navázat spojení se serverem.", "Chyba komunikace" ); break; case ConfigFileNotFound: mainFrame.showErrorMessage( "Konfigurační soubor \"" + ConfigParser.getConfigFile( ) + "\" nebyl nalezen.", "Chyba" ); break; case EmptyOldPassword: mainFrame.showErrorMessage("Musí být uvedeno stávající heslo.", "Změna hesla"); break; case WrongOldPassword: mainFrame.showErrorMessage("Uvedeno chýbné stávající heslo uživatele.", "Změna hesla"); break; case InvalidNewPassword: mainFrame.showErrorMessage("Musí být uvedeno nové heslo, které má minimální délku 4 znaky", "Změna hesla"); break; case NewPasswordsNotMatch: mainFrame.showErrorMessage("Nové heslo se musí shodovat s heslem v kolonce \"Ověření hesla\".", "Změna hesla"); break; case ChangePasswordFail: mainFrame.showErrorMessage("Při změně hesla došlo k chybě k neočekávané chybě!", "Změna hesla"); break; case ChangePasswordSuccesful: mainFrame.showErrorMessage("Změna hesla proběhla úspěšně.", "Změna hesla"); break; } return result; } /* ================= LoginDialog ================= */ /** * Metoda pro overeni prihlasovacich udaju a nastaveni prihlaseneho uzivatele, pokud jsou udaje vporadku * @param password * @param username * @return */ /*public EnumLoginResult login(String password, String username){ EnumLoginResult result = getControler().login(password, username); switch(result){ case WrongLoginData: mainFrame.showErrorMessage("Nesprávné uživatelské jméno nebo heslo", "Chyba"); break; case NotManager: mainFrame.showErrorMessage("Uživatel nemá oprávnění pro přístup do systému.\n" + "Přihlásit se smějí jen uživatele s rolí \"manager\".", "Chyba"); break; case ConnectionFail: mainFrame.showErrorMessage("Nelze navázat spojení se serverem.", "Chyba komunikace"); break; case ConfigFileNotFound: mainFrame.showErrorMessage("Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba"); break; } return result; }*/ /* ================= MenuForm ================= */ /** * Metoda pro vytvoreni a editaci menu * @param name * @param date * @param username * @param menuId Pokud je -1 vytvori se novy zaznam, jinak editace prislusneho menu * @return */ public MenuResult insertMenu(String name, Date date, String username, int menuId){ MenuResult result = getControler().insertMenu(name, date, username, menuId); switch(result){ case EmptyName: mainFrame.showErrorMessage("Musí být uveden název nového Menu.", "Menu"); break; case InvalidDateFormat: mainFrame.showErrorMessage("Musí být uvedeno datum ve formatu dd.MM.yyyy.", "Menu"); break; case NameExists: mainFrame.showErrorMessage("Záznam nemohl být uložen, protože záznam se stejným názvem Menu je již uložen.", "Menu"); break; case ConnectionFail: mainFrame.showErrorMessage("Nelze navázat spojení se serverem.", "Chyba komunikace"); break; case ConfigFileNotFound: mainFrame.showErrorMessage("Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba"); break; } return result; } /** * Metoda pro vymazani menu * @param menuId * @return */ public MenuResult deleteMenu(int menuId) { MenuResult result = getControler().deleteMenu(menuId); switch(result){ case Fail: mainFrame.showErrorMessage("Záznam nebyl smazán.", "Menu"); break; case ConnectionFail: mainFrame.showErrorMessage("Nelze navázat spojení se serverem.", "Chyba komunikace"); break; case ConfigFileNotFound: mainFrame.showErrorMessage("Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba"); break; } return result; } /** * * @param title * @param menuId * @return */ public PrintMenuResult printMenu(String title, int menuId){ PrintMenuResult result = getControler().printMenu(title, menuId); switch(result){ case TemplateNotFound: mainFrame.showErrorMessage("Nebyla nalezena tisková šablona pro tisk menu.", "Tisková sestava nenalezena"); break; case ConnectionFail: mainFrame.showErrorMessage("Nelze navázat spojení se serverem.", "Chyba komunikace"); break; case ConfigFileNotFound: mainFrame.showErrorMessage("Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba"); break; } return result; } /** * Metoda vraci vsechny menu * @return */ public Object[][] getMenus() { return getControler().getMenus(); } /* ================= MenuItemForm ================= */ /** * Metoda pro vytvoreni a editaci polozky menu * @param name * @param price Kladne desetine cislo * @param quantity * @param menuItemType * @param avaible * @param menuItemId Pokud je -1 vytvori se novy zaznam, jinak editace * @return */ public MenuItemResult insertMenuItem(String name, String price, String quantity, String menuItemType, int avaible, int menuItemId) { MenuItemResult result = getControler().insertMenuItem(name, price, quantity, menuItemType, avaible, menuItemId); switch(result){ case EmptyName: mainFrame.showErrorMessage("Údaj o názvu položky menu musí být vyplněn.", "Položka menu"); break; case InvalidPrice: mainFrame.showErrorMessage("Údaj o ceně položky menu musí být vyplněn.", "Položka menu"); break; case InvalidQuantity: mainFrame.showErrorMessage("Musí být uvedeno množství.", "Položky menu"); break; case NameExists: mainFrame.showErrorMessage("Položka menu nemohla být uložena, protože položka se stejným názvem již existuje.", "Položka menu"); break; case ConnectionFail: mainFrame.showErrorMessage("Nelze navázat spojení se serverem.", "Chyba komunikace"); break; case ConfigFileNotFound: mainFrame.showErrorMessage("Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba"); break; } return result; } /** * Metoda pro vymazani polozky menu * @param menuItemId * @return */ public MenuItemResult deleteMenuItem(int menuItemId) { MenuItemResult result = getControler().deleteMenuItem(menuItemId); switch(result){ case Fail: mainFrame.showErrorMessage("Záznam nebyl smazán.", "Položka menu"); break; case ConnectionFail: mainFrame.showErrorMessage("Nelze navázat spojení se serverem.", "Chyba komunikace"); break; case ConfigFileNotFound: mainFrame.showErrorMessage("Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba"); break; } return result; } /** * Metoda vraci vsechny polozky menu * @return */ public Object[][] getMenuItems() { return getControler().getMenuItems(); } /* ================= MenuItemTypeDialog ================= */ /** * Metoda pro vytvoreni a editaci typu polozky menu * @param name * @param menuItemTypeId Pokud je -1 vytvori se novy zaznam, jinak editace * @return */ public MenuItemTypeResult insertMenuItemType(String name, int menuItemTypeId) { MenuItemTypeResult result = getControler().insertMenuItemType(name, menuItemTypeId); switch(result){ case EmptyName: mainFrame.showErrorMessage("Musí být uveden název nové kategorie.", "Kategorie položek menu"); break; case NameExists: mainFrame.showErrorMessage("Záznam nemohl být uložen, protože záznam se stejným názvem kategorie již uložen.", "Kategorie položek menu"); break; case ConnectionFail: mainFrame.showErrorMessage("Nelze navázat spojení se serverem.", "Chyba komunikace"); break; case ConfigFileNotFound: mainFrame.showErrorMessage("Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba"); break; } return result; } /** * Metoda pro smazani typu polozky menu * @param menuItemTypeId * @return */ public MenuItemTypeResult deleteMenuItemType(int menuItemTypeId) { MenuItemTypeResult result = getControler().deleteMenuItemType(menuItemTypeId); switch(result){ case Fail: mainFrame.showErrorMessage("Záznam nebyl smazán.", "Kategorie položek menu"); break; case HasLinks: mainFrame.showErrorMessage("Kategorie nemůže být smazána, protože se na ní odkazují existující položky menu.", "Kategorie položek menu"); break; case ConnectionFail: mainFrame.showErrorMessage("Nelze navázat spojení se serverem.", "Chyba komunikace"); break; case ConfigFileNotFound: mainFrame.showErrorMessage("Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba"); break; } return result; } /** * Metoda vraci vsechny typy polozek menu * @return */ Object[][] getMenuItemTypes() { return getControler().getMenuItemTypes(); } /** * Metoda vraci nazvy typu polozek menu * @return */ public String[] getMenuItemTypeNames() { return getControler().getMenuItemTypeNames(); } /* ================= MenuMenuItemDialog ================= */ /** * Metoda pro prirazeni polozky menu do prislusneho menu * @param menuId Id menu, do ktereho ma byt polozka prirazena * @param name Nazev polozky, ktera se ma priradit * @return */ MenuMenuItemResult insertMenuMenuItem(int menuId, String name) { MenuMenuItemResult result = getControler().insertMenuMenuItem(menuId, name); switch(result){ case Exists: mainFrame.showErrorMessage("Daná položka menu se již v menu nachází.", "Přiřazení položky menu"); break; case ConnectionFail: mainFrame.showErrorMessage("Nelze navázat spojení se serverem.", "Chyba komunikace"); break; case ConfigFileNotFound: mainFrame.showErrorMessage("Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba"); break; } return result; } /** * Metoda vraci nazev menu podle jeho Id * @param menuId * @return */ public MenuMenuItemResult deleteMenuMenuItem(int menuId, String menuItemName) { MenuMenuItemResult result = getControler().deleteMenuMenuItem(menuId, menuItemName); switch(result){ case Fail: mainFrame.showErrorMessage("Záznam nebyl smazán.", "Přiřazení položky menu"); break; case ConnectionFail: mainFrame.showErrorMessage("Nelze navázat spojení se serverem.", "Chyba komunikace"); break; case ConfigFileNotFound: mainFrame.showErrorMessage("Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba"); break; } return result; } /** * Metoda vraci nazev menu podle jeho Id * @param menuId * @return */ public String getMenuNameById(int menuId) { return getControler().getMenuNameById(menuId); } /** * Metoda vraci vsechny nazvy polozek menu * @return */ public String[] getMenuItemNames() { return getControler().getMenuItemNames(); } /** * Metoda vraci polozky menu podle Id menu, do ktereho jsou prirazeny * @param menuId * @return */ public Object[][] getMenuItemsByMenuId(int menuId) { return getControler().getMenuItemsByMenuId(menuId); } /* ================= RecipeDialog ================= */ /** * Metoda pro vytvoreni a editaci receptury * @param menuItemId * @param quantity Kladne desetine cislo * @param material * @param fromUnitType * @param usedMaterialId Pokud je -1 vytvori se novy zaznam, jinak editace * @return */ public RecipeDialogResult insertUsedMaterial(int menuItemId, String quantity, String material, String fromUnitType, int usedMaterialId) { RecipeDialogResult result = getControler().insertUsedMaterial(menuItemId, quantity, material, fromUnitType, usedMaterialId); switch(result){ case Fail: mainFrame.showErrorMessage("Záznam nemohl být aktualizován.", "Receptura"); break; case InvalidQuantity: mainFrame.showErrorMessage("Musí být určeno množství použité suroviny.", "Receptura"); break; case InvalidMaterial: mainFrame.showErrorMessage("Musí být vybrána surovina.", "Receptura"); break; case InvalidUnitType: mainFrame.showErrorMessage("Musí být vybrána měrná jednotka.", "Receptura"); break; case ConnectionFail: mainFrame.showErrorMessage("Nelze navázat spojení se serverem.", "Chyba komunikace"); break; case ConfigFileNotFound: mainFrame.showErrorMessage("Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba"); break; } return result; } /** * Metoda pro odstraneni receptury * @param usedMaterialId * @return */ public RecipeDialogResult deleteUsedMaterial(int usedMaterialId) { RecipeDialogResult result = getControler().deleteUsedMaterial(usedMaterialId); switch(result){ case Fail: mainFrame.showErrorMessage("Záznam nebyl smazán.", "Receptura"); break; case ConnectionFail: mainFrame.showErrorMessage("Nelze navázat spojení se serverem.", "Chyba komunikace"); break; case ConfigFileNotFound: mainFrame.showErrorMessage("Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba"); break; } return result; } /** * Metoda vraci nazvy typu surovin * @return */ public String[] getMaterialTypeNames() { return getControler().getMaterialTypeNames(); } /** * Metoda vraci suroviny podle Id polozky menu * @param menuItemId * @return */ public Object[][] getUsedMaterialsByMenuItem(int menuItemId) { return getControler().getUsedMaterialsByMenuItem(menuItemId); } /** * Metoda vraci nazev polozky menu podle Id * @param menuItemId * @return */ public String getMenuItemNameById(int menuItemId) { return getControler().getMenuItemNameById(menuItemId); } /** * Metoda vraci nazvy typu surovin podle nazvu suroviny * @param material * @return */ public String getMaterialTypeNameByMaterialName(String material) { return getControler().getMaterialTypeNameByMaterialName(material); } /** * Metoda vraci zkratky mernych jednotek * @return */ public String[] getUnitTypeAbbrs() { return getControler().getUnitTypeAbbrs(); } /* ================= TableDialog ================= */ /** * Metoda pro vytvore a editaci stolu * @param tableNS Cislo stolu * @param placesS Pocet mistu u stolu * @param tableId Pokud je -1 vytvori se novy zaznam, jinak editace * @return */ public TableDialogResult insertTable(String tableN, String places, int tableId) { TableDialogResult result = getControler().insetTable(tableN, places, tableId); switch(result){ case Exists: mainFrame.showErrorMessage("Záznam nemohl být uložen, protože záznam se stejným číslem stolu je již uložen.", "Stůl"); break; case InvalidTableNum: mainFrame.showErrorMessage("Musí být uvedeno číslo vkládaného stolu.", "Stůl"); break; case InvalidPlaces: mainFrame.showErrorMessage("Musí být uveden počet míst k sezení pro daný stůl.", "Stůl"); break; case ConnectionFail: mainFrame.showErrorMessage("Nelze navázat spojení se serverem.", "Chyba komunikace"); break; case ConfigFileNotFound: mainFrame.showErrorMessage("Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba"); break; } return result; } /** * Metoda pro odtraneni stolu * @param tableId * @return */ public TableDialogResult deleteTable(int tableId) { TableDialogResult result = getControler().deleteTable(tableId); switch(result){ case Fail: mainFrame.showErrorMessage("Záznam nebyl smazán.", "Stůl"); break; case ConnectionFail: mainFrame.showErrorMessage("Nelze navázat spojení se serverem.", "Chyba komunikace"); break; case ConfigFileNotFound: mainFrame.showErrorMessage("Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba"); break; } return result; } /** * Metoda vraci vsechny stoly * @return */ public Object[][] getTables() { return getControler().getTables(); } /* ================= UserForm ================= */ /** * Metoda pro vytvoreni a editaci uzivatelu * @param name * @param surname * @param pin * @param username * @param passwd * @param userId Pokud je -1 vytvori se novy zaznam, jinak editace * @return */ public UserFormResult insertUser(String name, String surname, String pin, String username, String passwd, int userId) { UserFormResult result = getControler().insertUser(name, surname, pin, username, passwd, userId); switch(result){ case Exists: mainFrame.showErrorMessage("Záznam nemohl být uložen, protože záznam se stejným uživatelským jménem nebo PID číslem je již uložen.", "Zaměstnanci"); break; case InvalidName: mainFrame.showErrorMessage("Musí být uvedeno křestní jméno uživatele.", "Nový uživatel"); break; case InvalidSurname: mainFrame.showErrorMessage("Musí být uvedeno příjmení uživatele.", "Nový uživatel"); break; case InvalidPin: mainFrame.showErrorMessage("Musí být uvedeno personální identifikační číslo (PIN) uživatele.", "Nový uživatel"); break; case InvalidUsername: mainFrame.showErrorMessage("Musí být uvedeno uživatelské jméno nového uživatele.", "Nový uživatel"); break; case ConnectionFail: mainFrame.showErrorMessage("Nelze navázat spojení se serverem.", "Chyba komunikace"); break; case ConfigFileNotFound: mainFrame.showErrorMessage("Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba"); break; } return result; } /** * Metoda pro vymazani uzivatele * @param userId * @return */ public UserFormResult deleteUser(int userId) { UserFormResult result = getControler().deleteUser(userId); switch(result){ case Fail: mainFrame.showErrorMessage("Záznam nebyl smazán.", "Uživatel"); break; case InUse: mainFrame.showErrorMessage("Není možné odstranit záznam právě přihlášeného uživatele.", "Uživatel"); break; case ConnectionFail: mainFrame.showErrorMessage("Nelze navázat spojení se serverem.", "Chyba komunikace"); break; case ConfigFileNotFound: mainFrame.showErrorMessage("Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba"); break; } return result; } /** * Metoda vraci vsechny uzivatele * @return */ public Object[][] getUsers() { return getControler().getUsers(); } /* ================= UserRoleDialog ================= */ /** * Metoda pro upravu roli u daneho uzivatele * @param userId * @param newRoles * @return */ public void updateUserRoles(int userId, boolean[] newRoles) { getControler().updateUserRoles(userId, newRoles); } /** * Metoda vraci uzivatele podle Id * @param userId * @return */ public User getUserById(int userId) { return getControler().getUserById(userId); } /** * Metoda vraci role daneho uzivatele * @param userId * @return */ public boolean[] getUserRoles(int userId) { return getControler().getUserRoles(userId); } /* ================= Other methods ================= */ /** * Metoda vraci vsechny uzivatelka jmena * @return */ public String[] getUsernames() { return getControler().getUsernames(); } /** * Metoda vraci aktualne prihlaseneho uzivatele * @return */ public User getLoggedUser(){ return getControler().getLoggedUser(); } /** * Metoda vraci prava aktualne prihlaseneho uzivatele * @return */ public String[] getRights(){ return getControler().getRights(); } /** * Metoda vraci hodnotu vychoziho hesla * @return */ public String getDefaultPassword() { return getControler().getDefaultPassword(); } /** * Metoda vraci menu uvedenou v konfiguracnim souboru * @return */ public String getMoneyFromConfig(){ return getControler().getMoneyFromConfig(); } private ManagerController getControler() { if(controller == null){ controller = ManagerController.getInstance(); } return controller; } }