@Override
public void actionPerformed(ActionEvent e) {
try {
Incidencia i = (Incidencia) IncidenceDialog.this
.getObject();
if (i == null) {
i = new Incidencia();
i.setCreador(Authentication.getUsuario());
} else if (i.getId() != null)
i = IncidenciaConsultas.get(i.getId());
Calendar fecha_cierre = null;
for (Component c : componentes) {
try {
if (c.getName() != null) {
String name = c.getName();
Object valor = null;
if (c instanceof JTextField)
valor = ((JTextField) c).getText();
else if (c instanceof JSpinner) {
JSpinner spin = (JSpinner) c;
if (name.equals(INCIDENCES_FECHA_CIERRE)) {
if (fecha_cierre == null)
fecha_cierre = Calendar
.getInstance();
Calendar calendar = Calendar
.getInstance();
calendar.setTime(((SpinnerDateModel) spin
.getModel()).getDate());
for (Integer in : new Integer[] {
Calendar.HOUR_OF_DAY,
Calendar.MINUTE,
Calendar.SECOND,
Calendar.MILLISECOND })
fecha_cierre.set(in,
calendar.get(in));
}
} else if (c instanceof JCalendarCombo) {
JCalendarCombo calendar = (JCalendarCombo) c;
if (name.equals(INCIDENCES_FECHA_CIERRE)) {
if (fecha_cierre == null)
fecha_cierre = calendar
.getCalendar();
else {
for (Integer in : new Integer[] {
Calendar.YEAR,
Calendar.MONTH,
Calendar.DAY_OF_YEAR })
fecha_cierre.set(in, calendar
.getCalendar().get(in));
}
}
} else if (c instanceof JComboBox)
valor = ((JComboBox) c).getSelectedItem();
if (valor != null) {
if (name.equals(INCIDENCES_TITLE)) {
i.setTitulo(valor.toString());
} else if (name.equals(INCIDENCES_PRIORITY)
&& LogicConstants.isNumeric(valor
.toString())) {
i.setPrioridad(new Integer(valor
.toString()));
} else if (name.equals(INCIDENCES_CATEGORY)
&& (valor instanceof CategoriaIncidencia)) {
i.setCategoria((CategoriaIncidencia) valor);
} else if (name.equals(INCIDENCES_CREACION)) {
i.setCreador(Authentication
.getUsuario());
} else if (name
.equals(INCIDENCES_DESCRIPCION)) {
i.setDescripcion(valor.toString());
} else if (name.equals(INCIDENCES_STATUS)
&& (valor instanceof EstadoIncidencia)) {
i.setEstado((EstadoIncidencia) valor);
}
}
}
} catch (Throwable t) {
log.error("Error al procesar " + c, t);
}
}
if (fecha_cierre != null)
i.setFechaCierre(fecha_cierre.getTime());
IncidenciaAdmin.saveOrUpdate(i);
} catch (Throwable t) {
log.error("Error al salvar la incidencia", t);
}