/**
* ESUP-Portail Helpdesk - Copyright (c) 2004-2009 ESUP-Portail consortium.
*/
package org.esupportail.helpdesk.web.beans;
import java.util.ArrayList;
import java.util.List;
import org.esupportail.helpdesk.domain.beans.Category;
import org.esupportail.helpdesk.domain.beans.CategoryMember;
import org.esupportail.helpdesk.domain.beans.Department;
import org.esupportail.helpdesk.domain.beans.DepartmentManager;
import org.esupportail.helpdesk.domain.beans.FaqLink;
import org.esupportail.helpdesk.domain.beans.User;
/**
* The node of a category.
*/
public class CategoryNode extends AbstractFirstLastNode {
/**
* The serialization id.
*/
private static final long serialVersionUID = -6242238765263496402L;
/**
* The department.
*/
private Department department;
/**
* The category.
*/
private Category category;
/**
* The virtual categories of the node.
*/
private List<Category> virtualCategories;
/**
* The members of the node.
*/
private List<CategoryMember> members;
/**
* The managers of the node.
*/
private List<User> managers;
/**
* The faq links of the node.
*/
private List<FaqLink> faqLinks;
/**
* Bean constructor.
*/
public CategoryNode() {
super("root", "root", true);
}
/**
* Bean constructor.
* @param department
*/
public CategoryNode(final Department department) {
super("department", department.getLabel(), true);
this.department = department;
}
/**
* Bean constructor.
* @param category
* @param categoryLabel
*/
public CategoryNode(final Category category, final String categoryLabel) {
this(category.getDepartment(), category, categoryLabel);
}
/**
* Bean constructor.
* @param department
* @param category
* @param categoryLabel
*/
public CategoryNode(
final Department department,
final Category category,
final String categoryLabel) {
super("category", categoryLabel, true);
this.category = category;
this.department = department;
}
/**
* @param category
* @return the node identifier of a category.
*/
public static String getIdentifier(final Category category) {
return "category-" + category.getId();
}
/**
* @return the category
*/
public Category getCategory() {
return category;
}
/**
* @return the department
*/
public Department getDepartment() {
return department;
}
/**
* @return the virtualCategories
*/
public List<Category> getVirtualCategories() {
return virtualCategories;
}
/**
* @param virtualCategories the virtualCategories to set
*/
public void setVirtualCategories(final List<Category> virtualCategories) {
this.virtualCategories = virtualCategories;
}
/**
* @return the number of virtual categories
*/
public int getVirtualCategoriesNumber() {
if (virtualCategories == null) {
return 0;
}
return virtualCategories.size();
}
/**
* @return the members
*/
public List<CategoryMember> getMembers() {
return members;
}
/**
* @param members the members to set
*/
public void setMembers(final List<CategoryMember> members) {
this.members = members;
}
/**
* @return the number of members
*/
public int getMembersNumber() {
if (members == null) {
return 0;
}
return members.size();
}
/**
* @return the faqLinks
*/
public List<FaqLink> getFaqLinks() {
return faqLinks;
}
/**
* @param faqLinks the faqLinks to set
*/
public void setFaqLinks(final List<FaqLink> faqLinks) {
this.faqLinks = faqLinks;
}
/**
* @return the number of faq links
*/
public int getFaqLinksNumber() {
if (faqLinks == null) {
return 0;
}
return faqLinks.size();
}
/**
* @return the managers
*/
public List<User> getManagers() {
return managers;
}
/**
* @param departmentManagers the managers to set as a list of department managers.
*/
public void setManagersAsDepartmentManagers(final List<DepartmentManager> departmentManagers) {
managers = new ArrayList<User>();
for (DepartmentManager departmentManager : departmentManagers) {
managers.add(departmentManager.getUser());
}
}
/**
* @param categoryMembers the managers to set as a list of category members.
*/
public void setManagersAsCategoryMembers(final List<CategoryMember> categoryMembers) {
managers = new ArrayList<User>();
for (CategoryMember categoryMember : categoryMembers) {
managers.add(categoryMember.getUser());
}
}
/**
* @return the number of managers
*/
public int getManagersNumber() {
if (managers == null) {
return 0;
}
return managers.size();
}
/**
* @return the managers as a comma-separated String
*/
public String getManagersString() {
if (managers == null || managers.isEmpty()) {
return null;
}
String result = "";
String separator = "";
for (User user : managers) {
result += separator + user.getRealId();
separator = ",";
}
return result;
}
}