protected Ticket createTicketForUpdate(Ticket ticket, int operationCode) throws Exception { Ticket newTicket = (Ticket) ticket.clone(); switch (operationCode) { case TicketOperation.OPERATIONS_TAKEINCHARGE: newTicket.setStatus(Ticket.STATES_ASSIGNED); newTicket.setWttOperator(this.getCurrentUser().getUsername()); break; case TicketOperation.OPERATIONS_SETASSIGNABLE: newTicket.setStatus(Ticket.STATES_ASSIGNABLE); newTicket.setWttOperator(null); newTicket.setWttRole(this.getRoleName()); break; case TicketOperation.OPERATIONS_UPDATE: if (newTicket.getStatus() == Ticket.STATES_OPENED) { newTicket.setStatus(Ticket.STATES_WORKING); } int priority = this.getPriority() != null ? this.getPriority().intValue() : 0; newTicket.setPriority(priority); int interventionType = this.getInterventionType() != null ? this.getInterventionType().intValue() : 0; newTicket.setOpInterventionType(interventionType); break; case TicketOperation.OPERATIONS_CLOSE: newTicket.setStatus(Ticket.STATES_CLOSED); newTicket.setClosingDate(new Date()); if (this.getResolved() != null) { newTicket.setResolved(this.getResolved().booleanValue()); } newTicket.setWttOperator(null); break; case TicketOperation.OPERATIONS_ANSWER: if (newTicket.getStatus() == Ticket.STATES_OPENED) { newTicket.setStatus(Ticket.STATES_WORKING); } break; case TicketOperation.OPERATIONS_RELEASE: newTicket.setStatus(Ticket.STATES_WORKING); newTicket.setClosingDate(null); newTicket.setResolved(false); newTicket.setWttOperator(null); break; } if (this.getPriority() != null) { newTicket.setPriority(this.getPriority().intValue()); } return newTicket; }