package cz.cvut.fel.restauracefel.manager_service;
import cz.cvut.fel.restauracefel.hibernate.Material;
import cz.cvut.fel.restauracefel.hibernate.MaterialType;
import cz.cvut.fel.restauracefel.hibernate.Menu;
import cz.cvut.fel.restauracefel.hibernate.MenuItem;
import cz.cvut.fel.restauracefel.hibernate.MenuItemType;
import cz.cvut.fel.restauracefel.hibernate.Role;
import cz.cvut.fel.restauracefel.hibernate.Table;
import cz.cvut.fel.restauracefel.hibernate.UnitType;
import cz.cvut.fel.restauracefel.hibernate.UsedMaterial;
import cz.cvut.fel.restauracefel.hibernate.User;
import cz.cvut.fel.restauracefel.hibernate.UserRole;
import cz.cvut.fel.restauracefel.library.service.ConfigParser;
import java.io.FileNotFoundException;
import java.net.InetAddress;
import java.rmi.*;
import java.rmi.registry.Registry;
import java.rmi.server.*;
import java.util.Date;
import java.util.List;
import cz.cvut.fel.restauracefel.server.service.controllers.MaterialController;
import cz.cvut.fel.restauracefel.server.service.controllers.MaterialTypeController;
import cz.cvut.fel.restauracefel.server.service.controllers.MenuController;
import cz.cvut.fel.restauracefel.server.service.controllers.MenuItemController;
import cz.cvut.fel.restauracefel.server.service.controllers.MenuItemTypeController;
import cz.cvut.fel.restauracefel.server.service.controllers.MenuMenuItemController;
import cz.cvut.fel.restauracefel.server.service.controllers.RoleController;
import cz.cvut.fel.restauracefel.server.service.controllers.TableController;
import cz.cvut.fel.restauracefel.server.service.controllers.UnitTypeController;
import cz.cvut.fel.restauracefel.server.service.controllers.UsedMaterialController;
import cz.cvut.fel.restauracefel.server.service.controllers.UserController;
import cz.cvut.fel.restauracefel.server.service.controllers.UserRoleController;
/**
*
* @author Jarda
*/
public class ServiceFacadeManager extends UnicastRemoteObject implements IServiceFacadeManager {
//singleton
protected static ServiceFacadeManager instance = null;
public ServiceFacadeManager() throws RemoteException {
super();
}
public void initServiceFacadeRMI(Registry reg) throws java.net.UnknownHostException, RemoteException, FileNotFoundException {
if (System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
}
String name = "ServiceFacadeManager";
ConfigParser config = new ConfigParser();
InetAddress inetAddress = InetAddress.getByName(config.getServerIP());
//Stub - tato fasada se jevi klientovi jako lokalni
IServiceFacadeManager facade = ServiceFacadeManager.getInstance();
reg.rebind(name, facade);
System.out.println("Servisni fasada pro modul MANAGER zaregistrovana pod jmenem \"ServiceFacadeManager\"");
System.out.println("Pripojeni pres adresu:" + inetAddress.toString() + "\n\n");
}
//Vraci instanci tridy ServiceFacadeManager
public static ServiceFacadeManager getInstance() throws RemoteException {
if (instance == null) {
instance = new ServiceFacadeManager();
}
return instance;
}
//USER
@Override
public List getAllUsers() throws RemoteException {
return UserController.getInstance().getAllUsers();
}
@Override
public boolean createUser(String name, String surname, String pid, String username, String passwd) throws RemoteException {
return UserController.getInstance().createUser(name, surname, pid, username, passwd);
}
@Override
public boolean isValidUser(String username, String passwd) throws RemoteException {
return UserController.getInstance().isValidUser(username, passwd);
}
@Override
public User getUserByPID(String pid) throws RemoteException {
return UserController.getInstance().getUserByPID(pid);
}
@Override
public User getUserByUsername(String userName) throws RemoteException {
return UserController.getInstance().getUserByUsername(userName);
}
@Override
public User getUserById(int id) throws RemoteException {
return UserController.getInstance().getUserById(id);
}
@Override
public boolean deleteUser(int userId) throws RemoteException {
return UserController.getInstance().deleteUser(userId);
}
@Override
public String[] getUserNames() throws RemoteException {
return UserController.getInstance().getUserNames();
}
@Override
public String[] getUserUsernames() throws RemoteException {
return UserController.getInstance().getUserUsernames();
}
@Override
public Object[][] getUsers() throws RemoteException {
return UserController.getInstance().getUsers();
}
@Override
public boolean updateUser(Integer userId, String name, String surname, String pid, String username) throws RemoteException {
return UserController.getInstance().updateUser(userId, name, surname, pid, username);
}
@Override
public String getDefaultPasswd() throws RemoteException {
return UserController.getInstance().getDefaultPasswd();
}
@Override
public boolean updateUserPassword(Integer userId, String newPassword) throws RemoteException {
return UserController.getInstance().updateUserPassword(userId, newPassword);
}
@Override
public boolean isValidOldPasswd(Integer userId, String passwd) throws RemoteException {
return UserController.getInstance().isValidOldPasswd(userId, passwd);
}
//ROLE
@Override
public List getAllRoles() throws RemoteException {
return RoleController.getInstance().getAllRoles();
}
@Override
public String[] getRoleNames() throws RemoteException {
return RoleController.getInstance().getRoleNames();
}
@Override
public Role getRoleByID(int id) throws RemoteException {
return RoleController.getInstance().getRoleByID(id);
}
@Override
public Role getRoleByName(String name) throws RemoteException {
return RoleController.getInstance().getRoleByName(name);
}
//MATERIAL
@Override
public boolean createMaterial(String name, int idMaterialType, int idUnitType, String barcode, double minimal,double density, double emptyPackageWeight, double packageCapacity) throws RemoteException {
return MaterialController.getInstance().createMaterial(name, idMaterialType, idUnitType, barcode, minimal,density, emptyPackageWeight,packageCapacity);
}
@Override
public List getAllMaterials() throws RemoteException {
return MaterialController.getInstance().getAllMaterials();
}
@Override
public Material getMaterialByID(int id) throws RemoteException {
return MaterialController.getInstance().getMaterialByID(id);
}
@Override
public Material getMaterialByName(String name) throws RemoteException {
return MaterialController.getInstance().getMaterialByName(name);
}
@Override
public String[] getMaterialNames() throws RemoteException {
return MaterialController.getInstance().getMaterialNames();
}
@Override
public Object[][] getMaterials() throws RemoteException {
return MaterialController.getInstance().getMaterials();
}
@Override
public String[] getMaterialNamesByMaterialType(int materialTypeId) throws RemoteException {
return MaterialController.getInstance().getMaterialNamesByMaterialType(materialTypeId);
}
@Override
public boolean deleteMaterial(int materialId) throws RemoteException {
return MaterialController.getInstance().deleteMaterial(materialId);
}
@Override
public boolean updateMaterial(Integer materialId, String name, int idMaterialType, int idUnitType, String barcode, double minimal,double density, double emptyPackageWeight, double packageCapacity) throws RemoteException {
return MaterialController.getInstance().updateMaterial(materialId, name, idMaterialType, idUnitType, barcode, minimal,density, emptyPackageWeight, packageCapacity);
}
@Override
public boolean isDeletableMaterial(int materialId) throws RemoteException {
return MaterialController.getInstance().isDeletableMaterial(materialId);
}
//MATERIALTYPE
@Override
public boolean createMaterialType(String name, String note) throws RemoteException {
return MaterialTypeController.getInstance().createMaterialType(name, note);
}
@Override
public boolean deleteMaterialType(int materialTypeId) throws RemoteException {
return MaterialTypeController.getInstance().deleteMaterialType(materialTypeId);
}
@Override
public boolean updateMaterialType(int materialTypeId, String name, String note) throws RemoteException {
return MaterialTypeController.getInstance().updateMaterialType(materialTypeId, name, note);
}
@Override
public List getAllMaterialTypes() throws RemoteException {
return MaterialTypeController.getInstance().getAllMaterialTypes();
}
@Override
public MaterialType getMaterialTypeByID(int id) throws RemoteException {
return MaterialTypeController.getInstance().getMaterialTypeByID(id);
}
@Override
public MaterialType getMaterialTypeByName(String name) throws RemoteException {
return MaterialTypeController.getInstance().getMaterialTypeByName(name);
}
@Override
public String[] getMaterialTypeNames() throws RemoteException {
return MaterialTypeController.getInstance().getMaterialTypeNames();
}
@Override
public Object[][] getMaterialTypes() throws RemoteException {
return MaterialTypeController.getInstance().getMaterialTypes();
}
@Override
public boolean isDeletableMaterialType(int materialTypeId) throws RemoteException {
return MaterialTypeController.getInstance().isDeletableMaterialType(materialTypeId);
}
//UNITTYPE
@Override
public boolean createUnitType(String name, String abbreviation, int typeId) throws RemoteException {
return UnitTypeController.getInstance().createUnitType(name, abbreviation, typeId);
}
@Override
public boolean deleteUnitType(int unitTypeId) throws RemoteException {
return UnitTypeController.getInstance().deleteUnitType(unitTypeId);
}
@Override
public boolean updateUnitType(int unitTypeId, String name, String abbreviation, int typeId) throws RemoteException {
return UnitTypeController.getInstance().updateUnitType(unitTypeId, name, abbreviation, typeId);
}
@Override
public List getAllUnitTypes() throws RemoteException {
return UnitTypeController.getInstance().getAllUnitTypes();
}
@Override
public String[] getUnitTypeAbbrs() throws RemoteException {
return UnitTypeController.getInstance().getUnitTypeAbbrs();
}
@Override
public String[] getUnitTypeNames() throws RemoteException {
return UnitTypeController.getInstance().getUnitTypeNames();
}
@Override
public String[] getUnitTypeNamesByTypeId(int typeId) throws RemoteException {
return UnitTypeController.getInstance().getUnitTypeNamesByTypeId(typeId);
}
@Override
public String[] getUnitTypeAbbrsByTypeId(int typeId) throws RemoteException {
return UnitTypeController.getInstance().getUnitTypeAbbrsByTypeId(typeId);
}
@Override
public UnitType getUnitTypeByID(int id) throws RemoteException {
return UnitTypeController.getInstance().getUnitTypeByID(id);
}
@Override
public UnitType getUnitTypeByName(String name) throws RemoteException {
return UnitTypeController.getInstance().getUnitTypeByName(name);
}
@Override
public UnitType getUnitTypeByAbbr(String abbr) throws RemoteException {
return UnitTypeController.getInstance().getUnitTypeByAbbr(abbr);
}
//MENUITEM
@Override
public boolean createMenuItem(String name, double price, String quantity, int isAvailable, int menuItemTypeId) throws RemoteException {
return MenuItemController.getInstance().createMenuItem(name, price, quantity, isAvailable, menuItemTypeId);
}
@Override
public boolean deleteMenuItem(int menuItemId) throws RemoteException {
return MenuItemController.getInstance().deleteMenuItem(menuItemId);
}
@Override
public boolean updateMenuItem(int menuItemId, String name, double price, String quantity, int isAvailable, int menuItemTypeId) throws RemoteException {
return MenuItemController.getInstance().updateMenuItem(menuItemId, name, price, quantity, isAvailable, menuItemTypeId);
}
@Override
public MenuItem getMenuItemById(int menuItemId) throws RemoteException {
return MenuItemController.getInstance().getMenuItemById(menuItemId);
}
@Override
public MenuItem getMenuItemByName(String name) throws RemoteException {
return MenuItemController.getInstance().getMenuItemByName(name);
}
@Override
public String[] getMenuItemNames() throws RemoteException {
return MenuItemController.getInstance().getMenuItemNames();
}
@Override
public Object[][] getMenuItems() throws RemoteException {
return MenuItemController.getInstance().getMenuItems();
}
@Override
public Object[][] getMenuItemsByMenu(int menuId) throws RemoteException {
return MenuItemController.getInstance().getMenuItemsByMenu(menuId);
}
@Override
public List<MenuItem> getMenuItemsByMenuList(int menuId) throws RemoteException {
return MenuItemController.getInstance().getMenuItemsByMenuList(menuId);
}
@Override
public Object[][] getMenuItemsByMenuItemType(int menuItemTypeId) throws RemoteException {
return MenuItemController.getInstance().getMenuItemsByMenuItemType(menuItemTypeId);
}
@Override
public List<MenuItem> getMenuItemsByMenuItemTypeList(int menuItemTypeId) throws RemoteException {
return MenuItemController.getInstance().getMenuItemsByMenuItemTypeList(menuItemTypeId);
}
//MENU
@Override
public boolean createMenu(int userId, String name, Date date) throws RemoteException {
return MenuController.getInstance().createMenu(userId, name, date);
}
@Override
public boolean deleteMenu(int menuId) throws RemoteException {
return MenuController.getInstance().deleteMenu(menuId);
}
@Override
public boolean updateMenu(int menuId, int userId, String name, Date date) throws RemoteException {
return MenuController.getInstance().updateMenu(menuId, userId, name, date);
}
@Override
public Menu getMenuById(int menuId) throws RemoteException {
return MenuController.getInstance().getMenuById(menuId);
}
@Override
public Menu getMenuByName(String name) throws RemoteException {
return MenuController.getInstance().getMenuByName(name);
}
@Override
public Object[][] getMenus() throws RemoteException {
return MenuController.getInstance().getMenus();
}
@Override
public String[] getMenuNames() throws RemoteException {
return MenuController.getInstance().getMenuNames();
}
//MENUMENUITEM
@Override
public boolean createMenuMenuItem(int menuId, int menuItemId) throws RemoteException {
return MenuMenuItemController.getInstance().createMenuMenuItem(menuId, menuItemId);
}
@Override
public boolean deleteMenuMenuItem(int menuId, int menuItemId) throws RemoteException {
return MenuMenuItemController.getInstance().deleteMenuMenuItem(menuId, menuItemId);
}
@Override
public boolean updateMenuMenuItem(int menuMenuItemId, int menuId, int menuItemId) throws RemoteException {
return MenuMenuItemController.getInstance().updateMenuMenuItem(menuMenuItemId, menuId, menuItemId);
}
//USEDMATERIAL
@Override
public void createUsedMaterial(int materialId, int menuItemId, double quantity) throws RemoteException {
UsedMaterialController.getInstance().createUsedMaterial(materialId, menuItemId, quantity);
}
@Override
public boolean deleteUsedMaterial(int usedMaterialId) throws RemoteException {
return UsedMaterialController.getInstance().deleteUsedMaterial(usedMaterialId);
}
@Override
public boolean updateUsedMaterial(int usedMaterialId, int materialId, int menuItemId, double quantity) throws RemoteException {
return UsedMaterialController.getInstance().updateUsedMaterial(usedMaterialId, materialId, menuItemId, quantity);
}
@Override
public Object[][] getUsedMaterials() throws RemoteException {
return UsedMaterialController.getInstance().getUsedMaterials();
}
@Override
public Object[][] getUsedMaterialsByMenuItem(int menuItemId) throws RemoteException {
return UsedMaterialController.getInstance().getUsedMaterialsByMenuItem(menuItemId);
}
@Override
public UsedMaterial getUsedMaterialById(int usedMaterialId) throws RemoteException {
return UsedMaterialController.getInstance().getUsedMaterialById(usedMaterialId);
}
//USERROLE
@Override
public boolean createUserRole(int userId, int roleId) throws RemoteException {
return UserRoleController.getInstance().createUserRole(userId, roleId);
}
@Override
public void deleteUserRole(int userId, int roleId) throws RemoteException {
UserRoleController.getInstance().deleteUserRole(userId, roleId);
}
@Override
public UserRole getUserRoleById(int userRoleId) throws RemoteException {
return UserRoleController.getInstance().getUserRoleById(userRoleId);
}
@Override
public List getUserRoleByUserId(int userId) throws RemoteException {
return UserRoleController.getInstance().getUserRoleByUserId(userId);
}
@Override
public boolean isExistedUserRole(int userId, int roleId) throws RemoteException {
UserRole ur = UserRoleController.getInstance().getUserRoleByUserAndRole(userId, roleId);
if (ur == null) {
return false;
}
return true;
}
@Override
public boolean[] getUserRoles(int userId) throws RemoteException {
return UserRoleController.getInstance().getUserRoles(userId);
}
@Override
public boolean isUserRole(int userId, int roleId) throws RemoteException {
return UserRoleController.getInstance().isUserRole(userId, roleId);
}
//TABLE
@Override
public boolean createTable(int tableNumber, int numberOfPlaces) throws RemoteException {
return TableController.getInstance().createTable(tableNumber, numberOfPlaces);
}
@Override
public boolean deleteTable(int tableId) throws RemoteException {
return TableController.getInstance().deleteTable(tableId);
}
@Override
public boolean updateTable(int tableId, int tableNumber, int numberOfPlaces) throws RemoteException {
return TableController.getInstance().updateTable(tableId, tableNumber, numberOfPlaces);
}
@Override
public Table getTableById(int tableId) throws RemoteException {
return TableController.getInstance().getTableById(tableId);
}
@Override
public Table getTableByTableNumber(int tableNumber) throws RemoteException {
return TableController.getInstance().getTableByTableNumber(tableNumber);
}
@Override
public int[] getTableNumbers() throws RemoteException {
return TableController.getInstance().getTableNumbers();
}
@Override
public Object[][] getTables() throws RemoteException {
return TableController.getInstance().getTables();
}
//MENUITEMTYPE
@Override
public boolean createMenuItemType(String name) throws RemoteException {
return MenuItemTypeController.getInstance().createMenuItemType(name);
}
@Override
public boolean deleteMenuItemType(int menuItemTypeId) throws RemoteException {
return MenuItemTypeController.getInstance().deleteMenuItemType(menuItemTypeId);
}
@Override
public boolean updateMenuItemType(int menuItemTypeId, String name) throws RemoteException {
return MenuItemTypeController.getInstance().updateMenuItemType(menuItemTypeId, name);
}
@Override
public MenuItemType getMenuItemTypeById(int menuItemTypeId) throws RemoteException {
return MenuItemTypeController.getInstance().getMenuItemTypeById(menuItemTypeId);
}
@Override
public MenuItemType getMenuItemTypeByName(String name) throws RemoteException {
return MenuItemTypeController.getInstance().getMenuItemTypeByName(name);
}
@Override
public String[] getMenuItemTypeNames() throws RemoteException {
return MenuItemTypeController.getInstance().getMenuItemTypeNames();
}
@Override
public List<MenuItemType> getMenuItemTypesList() throws RemoteException {
return MenuItemTypeController.getInstance().getMenuItemTypesList();
}
@Override
public Object[][] getMenuItemTypes() throws RemoteException {
return MenuItemTypeController.getInstance().getMenuItemTypes();
}
@Override
public boolean isDeletableMenuItemType(int menuItemTypeId) throws RemoteException {
return MenuItemTypeController.getInstance().isDeletableMenuItemType(menuItemTypeId);
}
}