/**
* ESUP-Portail Helpdesk - Copyright (c) 2004-2009 ESUP-Portail consortium.
*/
package org.esupportail.helpdesk.domain.beans;
import java.io.Serializable;
import org.esupportail.commons.utils.strings.StringUtils;
/**
* A class to store department managers.
*/
public class DepartmentManager implements Serializable {
/**
* a constant for ticket monitoring.
*/
public static final int TICKET_MONITORING_ALWAYS = 0;
/**
* a constant for ticket monitoring.
*/
public static final int TICKET_MONITORING_CREATION = 1;
/**
* a constant for ticket monitoring.
*/
public static final int TICKET_MONITORING_NEVER = 2;
/**
* a constant for reports.
*/
public static final String REPORT_NONE = null;
/**
* a constant for reports.
*/
public static final String REPORT_M = "M";
/**
* a constant for reports.
*/
public static final String REPORT_MC = "MC";
/**
* a constant for reports.
*/
public static final String REPORT_MF = "MF";
/**
* a constant for reports.
*/
public static final String REPORT_MCF = "MCF";
/**
* a constant for reports.
*/
public static final String REPORT_MFC = "MFC";
/**
* a constant for reports.
*/
public static final String REPORT_MCFO = "MCFO";
/**
* a constant for reports.
*/
public static final String REPORT_MFCO = "MFCO";
/**
* The minimum rate.
*/
public static final int MIN_RATE = 0;
/**
* The maximum rate.
*/
public static final int MAX_RATE = 100;
/**
* The serialization id.
*/
private static final long serialVersionUID = -4522276503661909722L;
/**
* Unique id.
*/
private long id;
/**
* The user.
*/
private User user;
/**
* The department.
*/
private Department department;
/**
* True if the manager is available.
*/
private Boolean available;
/**
* True if the manager can refuse tickets.
*/
private Boolean refuseTicket;
/**
* True if the manager can take already assigned tickets.
*/
private Boolean takeAlreadyAssignedTicket;
/**
* True if the manager can take free tickets.
*/
private Boolean takeFreeTicket;
/**
* True if the manager can assign already assigned tickets.
*/
private Boolean assignTicket;
/**
* True if the manager can manage the properties of the department.
*/
private Boolean manageProperties;
/**
* True if the manager can manage the managers.
*/
private Boolean manageManagers;
/**
* True if the manager can manage the categories.
*/
private Boolean manageCategories;
/**
* True if the manager can manage the FAQs.
*/
private Boolean manageFaq;
/**
* True if the manager can change to change the department of a ticket.
*/
private Boolean modifyTicketDepartment;
/**
* Rate.
*/
private int rate;
/**
* True if the manager can set his own availability.
*/
private Boolean setOwnAvailability;
/**
* True if the manager can reopen tickets (s)he does not manage.
*/
private Boolean reopenAllTickets;
/**
* The order of this department manager (in the department).
*/
private Integer order;
/** A priority level for ticket monitoring. */
private Integer ticketMonitoringAny;
/** A priority level for ticket monitoring. */
private Integer ticketMonitoringCategory;
/** A priority level for ticket monitoring. */
private Integer ticketMonitoringManaged;
/**
* The report type.
*/
private String reportType;
/**
* The time for the first report.
*/
private Integer reportTime1;
/**
* The time for the second report.
*/
private Integer reportTime2;
/**
* True to report on the week-end.
*/
private Boolean reportWeekend;
/**
* Bean constructor.
*/
public DepartmentManager() {
super();
}
/**
* Bean constructor.
* @param user
* @param department
*/
public DepartmentManager(
final User user,
final Department department) {
super();
this.user = user;
this.department = department;
this.available = false;
this.refuseTicket = false;
this.takeAlreadyAssignedTicket = false;
this.takeFreeTicket = false;
this.assignTicket = false;
this.manageProperties = false;
this.manageManagers = false;
this.manageCategories = false;
this.manageFaq = false;
this.modifyTicketDepartment = false;
this.rate = MAX_RATE;
this.setOwnAvailability = false;
this.reopenAllTickets = false;
this.order = -1;
this.reportType = null;
}
/**
* Copy.
* @param dm the department manager to copy.
*/
public DepartmentManager(
final DepartmentManager dm) {
super();
this.id = dm.id;
this.user = dm.user;
this.department = dm.department;
this.available = dm.available;
this.refuseTicket = dm.refuseTicket;
this.takeAlreadyAssignedTicket = dm.takeAlreadyAssignedTicket;
this.takeFreeTicket = dm.takeFreeTicket;
this.assignTicket = dm.assignTicket;
this.manageProperties = dm.manageProperties;
this.manageManagers = dm.manageManagers;
this.manageCategories = dm.manageCategories;
this.manageFaq = dm.manageFaq;
this.modifyTicketDepartment = dm.modifyTicketDepartment;
this.rate = dm.rate;
this.setOwnAvailability = dm.setOwnAvailability;
this.reopenAllTickets = dm.reopenAllTickets;
this.order = dm.order;
this.ticketMonitoringAny = dm.ticketMonitoringAny;
this.ticketMonitoringCategory = dm.ticketMonitoringCategory;
this.ticketMonitoringManaged = dm.ticketMonitoringManaged;
this.reportType = dm.reportType;
this.reportTime1 = dm.reportTime1;
this.reportTime2 = dm.reportTime2;
this.reportWeekend = dm.reportWeekend;
}
/**
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(final Object obj) {
if (obj == null) {
return false;
}
if (!(obj instanceof DepartmentManager)) {
return false;
}
return ((DepartmentManager) obj).getId() == getId();
}
/**
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
return (int) getId();
}
/**
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
String result = getClass().getSimpleName() + "#" + hashCode() + "["
+ "id=" + id + ""
+ ", order=[" + order + "]";
if (department != null) {
result += ", department=[" + department.getLabel() + "]";
} else {
result += ", department=null";
}
if (user != null) {
result += ", user=[" + user.getId() + "]";
} else {
result += ", user=null";
}
result += ", manageCategories=" + manageCategories + ""
+ ", manageFaq=" + manageFaq + ""
+ ", manageManagers=" + manageManagers + ""
+ ", manageProperties=" + manageProperties + ""
+ ", ticketMonitoringAny=" + ticketMonitoringAny + ""
+ ", ticketMonitoringCategory=" + ticketMonitoringCategory + ""
+ ", ticketMonitoringManaged=" + ticketMonitoringManaged + ""
+ ", reportType=[" + reportType + "]"
+ ", reportTime1=[" + reportTime1 + "]"
+ ", reportTime2=[" + reportTime2 + "]"
+ ", reportWeekend=[" + reportWeekend + "]"
+ "]";
return result;
}
/**
* Check the coherence of ticket monitoring values.
*/
public void checkTicketMonitoringValues() {
switch (ticketMonitoringAny) {
case TICKET_MONITORING_ALWAYS:
case TICKET_MONITORING_CREATION:
case TICKET_MONITORING_NEVER:
break;
default:
throw new UnsupportedOperationException();
}
switch (ticketMonitoringCategory) {
case TICKET_MONITORING_ALWAYS:
case TICKET_MONITORING_CREATION:
case TICKET_MONITORING_NEVER:
break;
default:
throw new UnsupportedOperationException();
}
switch (ticketMonitoringCategory) {
case TICKET_MONITORING_ALWAYS:
case TICKET_MONITORING_CREATION:
case TICKET_MONITORING_NEVER:
break;
default:
throw new UnsupportedOperationException();
}
if (ticketMonitoringCategory > ticketMonitoringAny) {
ticketMonitoringCategory = ticketMonitoringAny;
}
if (ticketMonitoringManaged > ticketMonitoringCategory) {
ticketMonitoringManaged = ticketMonitoringCategory;
}
}
/**
* @return the assignTicket
*/
public Boolean getAssignTicket() {
return assignTicket;
}
/**
* @param assignTicket the assignTicket to set
*/
public void setAssignTicket(final Boolean assignTicket) {
this.assignTicket = assignTicket;
}
/**
* @return the available
*/
public Boolean getAvailable() {
return available;
}
/**
* @param available the available to set
*/
public void setAvailable(final Boolean available) {
this.available = available;
}
/**
* @return the department
*/
public Department getDepartment() {
return department;
}
/**
* @param department the department to set
*/
public void setDepartment(final Department department) {
this.department = department;
}
/**
* @return the id
*/
public long getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(final long id) {
this.id = id;
}
/**
* @return the manageCategories
*/
public Boolean getManageCategories() {
return manageCategories;
}
/**
* @param manageCategories the manageCategories to set
*/
public void setManageCategories(final Boolean manageCategories) {
this.manageCategories = manageCategories;
}
/**
* @return the manageFaq
*/
public Boolean getManageFaq() {
return manageFaq;
}
/**
* @param manageFaq the manageFaq to set
*/
public void setManageFaq(final Boolean manageFaq) {
this.manageFaq = manageFaq;
}
/**
* @return the manageManagers
*/
public Boolean getManageManagers() {
return manageManagers;
}
/**
* @param manageManagers the manageManagers to set
*/
public void setManageManagers(final Boolean manageManagers) {
this.manageManagers = manageManagers;
}
/**
* @return the manageProperties
*/
public Boolean getManageProperties() {
return manageProperties;
}
/**
* @param manageProperties the manageProperties to set
*/
public void setManageProperties(final Boolean manageProperties) {
this.manageProperties = manageProperties;
}
/**
* @return the manageResponses
*/
public boolean getManageResponses() {
return getManageProperties();
}
/**
* @return the modifyTicketDepartment
*/
public Boolean getModifyTicketDepartment() {
return modifyTicketDepartment;
}
/**
* @param modifyTicketDepartment the modifyTicketDepartment to set
*/
public void setModifyTicketDepartment(final Boolean modifyTicketDepartment) {
this.modifyTicketDepartment = modifyTicketDepartment;
}
/**
* @return the order
*/
public Integer getOrder() {
return order;
}
/**
* @param order the order to set
*/
public void setOrder(final Integer order) {
this.order = order;
}
/**
* @return the rate
*/
public int getRate() {
return rate;
}
/**
* @param rate the rate to set
*/
public void setRate(final int rate) {
this.rate = rate;
}
/**
* @return the refuseTicket
*/
public Boolean getRefuseTicket() {
return refuseTicket;
}
/**
* @param refuseTicket the refuseTicket to set
*/
public void setRefuseTicket(final Boolean refuseTicket) {
this.refuseTicket = refuseTicket;
}
/**
* @return the reopenAllTickets
*/
public Boolean getReopenAllTickets() {
return reopenAllTickets;
}
/**
* @param reopenAllTickets the reopenAllTickets to set
*/
public void setReopenAllTickets(final Boolean reopenAllTickets) {
this.reopenAllTickets = reopenAllTickets;
}
/**
* @return the setOwnAvailability
*/
public Boolean getSetOwnAvailability() {
return setOwnAvailability;
}
/**
* @param setOwnAvailability the setOwnAvailability to set
*/
public void setSetOwnAvailability(final Boolean setOwnAvailability) {
this.setOwnAvailability = setOwnAvailability;
}
/**
* @return the takeAlreadyAssignedTicket
*/
public Boolean getTakeAlreadyAssignedTicket() {
return takeAlreadyAssignedTicket;
}
/**
* @param takeAlreadyAssignedTicket the takeAlreadyAssignedTicket to set
*/
public void setTakeAlreadyAssignedTicket(final Boolean takeAlreadyAssignedTicket) {
this.takeAlreadyAssignedTicket = takeAlreadyAssignedTicket;
}
/**
* @return the takeFreeTicket
*/
public Boolean getTakeFreeTicket() {
return takeFreeTicket;
}
/**
* @param takeFreeTicket the takeFreeTicket to set
*/
public void setTakeFreeTicket(final Boolean takeFreeTicket) {
this.takeFreeTicket = takeFreeTicket;
}
/**
* @return the ticketMonitoringAny
*/
public Integer getTicketMonitoringAny() {
return ticketMonitoringAny;
}
/**
* @param ticketMonitoringAny the ticketMonitoringAny to set
*/
public void setTicketMonitoringAny(final Integer ticketMonitoringAny) {
this.ticketMonitoringAny = ticketMonitoringAny;
}
/**
* @return the ticketMonitoringCategory
*/
public Integer getTicketMonitoringCategory() {
return ticketMonitoringCategory;
}
/**
* @param ticketMonitoringCategory the ticketMonitoringCategory to set
*/
public void setTicketMonitoringCategory(final Integer ticketMonitoringCategory) {
this.ticketMonitoringCategory = ticketMonitoringCategory;
}
/**
* @return the ticketMonitoringManaged
*/
public Integer getTicketMonitoringManaged() {
return ticketMonitoringManaged;
}
/**
* @param ticketMonitoringManaged the ticketMonitoringManaged to set
*/
public void setTicketMonitoringManaged(final Integer ticketMonitoringManaged) {
this.ticketMonitoringManaged = ticketMonitoringManaged;
}
/**
* @return the user
*/
public User getUser() {
return user;
}
/**
* @param user the user to set
*/
public void setUser(final User user) {
this.user = user;
}
/**
* @return the reportType
*/
public String getReportType() {
return reportType;
}
/**
* @param reportType the reportType to set
*/
public void setReportType(final String reportType) {
this.reportType = StringUtils.nullIfEmpty(reportType);
}
/**
* @return the reportTime1
*/
public Integer getReportTime1() {
if (reportTime1 == null) {
return -1;
}
return reportTime1;
}
/**
* @param reportTime1 the reportTime1 to set
*/
public void setReportTime1(final Integer reportTime1) {
if (reportTime1 == null || reportTime1 < 0) {
this.reportTime1 = null;
} else {
this.reportTime1 = reportTime1;
}
}
/**
* @return the reportTime2
*/
public Integer getReportTime2() {
if (reportTime2 == null) {
return -1;
}
return reportTime2;
}
/**
* @param reportTime2 the reportTime2 to set
*/
public void setReportTime2(final Integer reportTime2) {
if (reportTime2 == null || reportTime2 < 0) {
this.reportTime2 = null;
} else {
this.reportTime2 = reportTime2;
}
}
/**
* @return the reportWeekend
*/
public Boolean getReportWeekend() {
if (reportWeekend == null) {
return false;
}
return reportWeekend;
}
/**
* @param reportWeekend the reportWeekend to set
*/
public void setReportWeekend(final Boolean reportWeekend) {
this.reportWeekend = reportWeekend;
}
}