package cz.cvut.fel.restauracefel.server.service.controllers;
import cz.cvut.fel.restauracefel.hibernate.MenuItem;
import cz.cvut.fel.restauracefel.hibernate.MenuItemType;
import java.util.Iterator;
import java.util.List;
/**
*
* @author Jarda
*/
public class MenuItemTypeController {
public static MenuItemTypeController instance = null;
public static MenuItemType menuItemType = null;
private MenuItemTypeController(){
}
public static MenuItemTypeController getInstance(){
if (instance == null){
instance = new MenuItemTypeController();
}
return instance;
}
/**
* Metoda vytvari novou instanci MenuItem.
*
* @param name nazev noveho druhu polozek (instance MenuItemType)
* @return vraci true, pokud byl zaznam vytvore, jinak vraci false
*/
public boolean createMenuItemType(String name){
//vytvareny objekt MenuItemType musi mit jedinecne jmeno,
//proto to testujemu
menuItemType = MenuItemType.findByName(name);
if (menuItemType == null){
//na zacatku nemu MenuItemType zadny MenuItem, proto 0
//posledni 0 znaci, ze zaznam neni smazat - to je logicky, kdyz jsme
//ho ted vytvorili
menuItemType = new MenuItemType(name, 0, 0);
menuItemType.create();
return true;
}
return false;
}
//maze stavajici objekt MenuItemType s danym Id
public boolean deleteMenuItemType(int menuItemTypeId){
menuItemType = MenuItemType.findById(menuItemTypeId);
if (menuItemType == null){
//MenuItemType s danym id neexistuje
return false;
}
//!!!! mazeme pouze priznakove, tedy takto
menuItemType.setIsDeleted(1); //1 znamena smazano
return true;
}
public boolean updateMenuItemType(int menuItemTypeId, String name){
menuItemType = MenuItemType.findById(menuItemTypeId);
if (menuItemType == null){
return false;
}
MenuItemType mit = MenuItemType.findByName(name);
//pokud jsme nalezli pro parametr "name" jiny objekt MenuItemType,
//tak nemuzume aktualizaci provest = prestala by platit jedinecnost
//promenne "name"
if (mit != null && mit != menuItemType){
return false;
}
menuItemType.setName(name);
menuItemType.update();
return true;
}
public MenuItemType getMenuItemTypeById(int menuItemTypeId){
return MenuItemType.findById(menuItemTypeId);
}
public MenuItemType getMenuItemTypeByName(String name){
return MenuItemType.findByName(name);
}
/**
* Metoda vrati seznam nazvu (name) vsech ulozeny instanci tridy MenuItemType.
*
* @return pole Stringu
*/
public String [] getMenuItemTypeNames(){
List<MenuItemType> list = MenuItemType.findAll();
if (list == null || list.isEmpty()){
return null;
}
String [] array = new String [list.size()];
Iterator it = list.iterator();
int i = 0;
while (it.hasNext()){
menuItemType = (MenuItemType)it.next();
array [i] = menuItemType.getName();
i++;
}
return array;
}
public List<MenuItemType> getMenuItemTypesList(){
return MenuItemType.findAll();
}
public Object [][] getMenuItemTypes(){
List<MenuItemType> list = MenuItemType.findAll();
if (list == null || list.isEmpty()){
return null;
}
Object [][] array = new Object [list.size()][3];
Iterator it = list.iterator();
int i = 0;
while (it.hasNext()){
menuItemType = (MenuItemType)it.next();
array [i][0] = menuItemType.getMenuItemTypeId();
array [i][1] = menuItemType.getName();
array [i][2] = menuItemType.getItemCount();
i++;
}
return array;
}
public boolean isDeletableMenuItemType(int menuItemTypeId){
List<MenuItem> items = MenuItem.findByMenuItemType(menuItemTypeId);
if (items == null || items.isEmpty()){
return true;
}
return false;
}
}