package cz.cvut.fel.restauracefel.server.service.controllers;
import cz.cvut.fel.restauracefel.hibernate.Right;
import cz.cvut.fel.restauracefel.hibernate.Role;
import cz.cvut.fel.restauracefel.hibernate.RoleRight;
import java.util.Iterator;
import java.util.List;
/**
*
* @author Tomas Hnizdil
*/
public class RoleRightController {
protected static RoleRightController instance = null;
protected RoleRight roleRight = null;
protected Role role = null;
protected Right right = null;
private RoleRightController() {
}
public static RoleRightController getInstance() {
if (instance == null) {
instance = new RoleRightController();
}
return instance;
}
//vytvari novy objekt tridy RoleRight
public boolean createRoleRight(int roleId, int rightId) {
roleRight = RoleRight.findByRoleAndRight(roleId, rightId);
if (roleRight == null) {
roleRight = new RoleRight();
role = Role.findById(roleId);
right = Right.findById(rightId);
if (right == null || role == null) {
return false;
}
roleRight.setRole(role);
roleRight.setRight(right);
roleRight.create();
return true;
} else {
return false;
}
}
//maze uzivatelskou roli dle daneho uzivatele a dane role
public boolean deleteRoleRight(int roleId, int rightId) {
roleRight = RoleRight.findByRoleAndRight(roleId, rightId);
if (roleRight == null) {
return false;
}
roleRight.setIsDeleted(1);
return true;
}
public RoleRight getRoleRightById(int roleRightId) {
return RoleRight.findById(roleRightId);
}
//navraci uzivatelksou roli pro daneho uzivatele a danou roli
public RoleRight getRoleRightByRoleAndRight(int roleId, int rightId) {
return RoleRight.findByRoleAndRight(roleId, rightId);
}
//vraci pole Stringu obsahujici jmena vsech discountTypu podle uzivatelske role
public String[] getRightNamesByRole(int roleId) {
List<RoleRight> list = getRoleRightsByRoleId(roleId);
if (list == null || list.isEmpty())
return null;
String rightsName[] = new String[list.size()];
Iterator it = list.iterator();
int i = 0;
while (it.hasNext()) {
rightsName[i] = ((RoleRight) it.next()).getRight().getName();
i++;
}
return rightsName;
}
//pro daneho uzivatele vrati seznam jeho roli
public List getRoleRightsByRoleId(int roleId) {
return RoleRight.findByRole(roleId);
}
}