package com.tarisan.chipcard.tpvvs.webservicetrayicon; import java.awt.BorderLayout; import javax.swing.*; import com.tarisan.chipcard.gui.*; import java.util.*; import com.tarisan.chipcard.tpvvs.webservicetrayicon.accesodatos.*; import com.tarisan.chipcard.tpvvs.webservicetrayicon.messages.*; import java.awt.event.*; /** * Ventana de anulaciones * * @author jescacena * */ public class AnulacionesFrame extends JFrame implements ActionListener, ControladorRespuestas { private AnulacionesPanel jpAnulPanel = new AnulacionesPanel(); private JButton btnAceptar = null; private JButton btnCancelar = null; private TerminalSanitarioBean terBean = new TerminalSanitarioBean(); private UsuarioTVSBean userBean = new UsuarioTVSBean(); private VentanaProgreso progressWindow = null; public String devuelveRespuesta(String a) { return a; } public AnulacionesFrame() { setIconImage(WebServiceTrayIcon.image_authorizations_16); progressWindow = new VentanaProgreso(this, "Solicitando anulación"); progressWindow.setVisible(false); setTitle("Anulaciones"); Vector vTer = terBean.getTerminalesSanitarios(); if (vTer.size() == 0) { NuevoTerminalFrame frmT = new NuevoTerminalFrame(); WebServiceTrayIcon.showMessage( frmT, getTitle(), "Es necesario configurar antes Terminales Sanitarios", JOptionPane.WARNING_MESSAGE, 10); dispose(); } else { Vector vUsers = userBean.getUsuariosTVS(); if (vUsers.size() == 0) { NuevoUsuarioTVSFrame frmU = new NuevoUsuarioTVSFrame(); frmU.updateData(); WebServiceTrayIcon.showMessage( frmU, getTitle(), "Es necesario configurar antes algún Usuario del TVS", JOptionPane.WARNING_MESSAGE, 10); dispose(); } else { init(); } } } private void init() { getContentPane().setLayout(new BorderLayout()); JPanel pn = new JPanel(); pn.setLayout(new java.awt.GridBagLayout()); java.awt.GridBagConstraints gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); pn.add(jpAnulPanel, gridBagConstraints); gridBagConstraints.gridx = 0; gridBagConstraints.gridy++; JPanel jpButtons = new JPanel(); jpButtons.setLayout(new java.awt.FlowLayout()); jpButtons.add(getButtonAceptar()); jpButtons.add(getButtonCancelar()); pn.add(jpButtons, gridBagConstraints); getContentPane().add(pn, java.awt.BorderLayout.CENTER); jpAnulPanel.updateData(); pack(); show(); UtilGUI.centerOnScreen(this); } private JButton getButtonAceptar() { if (btnAceptar == null) { btnAceptar = new JButton(); btnAceptar.setText("Aceptar"); btnAceptar.setIcon(new ImageIcon(WebServiceTrayIcon.loadImage("aceptar32.gif"))); btnAceptar.addActionListener(this); } return btnAceptar; } private JButton getButtonCancelar() { if (btnCancelar == null) { btnCancelar = new JButton(); btnCancelar.setText("Cancelar"); btnCancelar.setIcon(new ImageIcon(WebServiceTrayIcon.loadImage("cancelar32.gif"))); btnCancelar.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { setVisible(false); dispose(); } }); } return btnCancelar; } /** * @return */ public AnulacionesPanel getAnulacionesPanel() { return jpAnulPanel; } public void actionPerformed(ActionEvent evt) { UsuarioTVS user = (UsuarioTVS) getAnulacionesPanel().getCmbImageComboUsuarios().getSelectedItem(); boolean siTerminalDeLaboratorio = user.getTerminal().isTVA(); if (user == null) { showErrorMessage("Se debe seleccionar un usuario"); return; } DialogoTarjetaSanitaria objDialog = new DialogoTarjetaSanitaria(this); com.tarisan.chipcard.tpvvs.webservicetrayicon.accesodatos.Paciente paciente = objDialog.getPaciente(); objDialog.dispose(); setEnabled(false); //Construyo el mensaje a enviar AnulReq anulRequest = null; try { anulRequest = new AnulReq( user.getTerminal().getNumeroTerminal(), getAnulacionesPanel().getJtxtTimestamp().getText(), user); } catch (Exception err) { err.printStackTrace(); WebServiceTrayIcon.showErrorMessage( getTitle(), "No se pudo componer la solicitud de anulación a enviar:" + err.getMessage()); setEnabled(true); } if (anulRequest != null) { //Ya tengo la peticion a enviar... String sURL = getAnulacionesPanel().getCmbURLService().getSelectedItem().toString(); java.net.URL endPointURL = null; try { endPointURL = new java.net.URL(sURL); } catch (Exception err) { err.printStackTrace(); WebServiceTrayIcon.showErrorMessage( getTitle(), "No se pudo enviar la solicitud de anulación a '" + sURL + "' debido al error:" + err.getMessage()); } if (endPointURL != null) { progressWindow.setProgressState(0); progressWindow.setModal(false); UtilGUI.centerOnWindow(progressWindow, this); ClienteServicioWeb objClienteServicioWeb = new ClienteServicioWeb(anulRequest, this, endPointURL); ProgressBarThread PBTh = new ProgressBarThread(progressWindow, objClienteServicioWeb.getSegundosTimeout()); PBTh.start(); } else { setEnabled(true); } } else { setEnabled(true); } } /***** * Recibe la respuesta del Servicio Web */ public String recibeRespuesta(String sResponse) { if (progressWindow != null) progressWindow.setVisible(false); setEnabled(true); if (sResponse != null) { Msg objResponse = null; try { objResponse = Msg.createMsgFromString(sResponse); if (objResponse.getTypeOfMessage() == Msg.TYPE_OF_MESSAGE_ERROR) { com.tarisan.chipcard.tpvvs.webservicetrayicon.messages.Error errorMes = (com.tarisan.chipcard.tpvvs.webservicetrayicon.messages.Error) objResponse; //Es un Error en la peticion showErrorMessage( "Se ha producido el error con código " + errorMes.getErrorCode() + ".\nDescripción:" + errorMes.getErrorDescription()); } else if (objResponse.getTypeOfMessage() == Msg.TYPE_OF_MESSAGE_CCRES) { com.tarisan.chipcard.tpvvs.webservicetrayicon.messages.AutRes autResMes = (com.tarisan.chipcard.tpvvs.webservicetrayicon.messages.AutRes) objResponse; WebServiceTrayIcon.showTransactionInfo(autResMes, this); } } catch (Exception err) { err.printStackTrace(); showErrorMessage( "Se ha producido un error al procesar la respuesta.\nDescripción:" + err.getMessage()); } } else { //Se debería repetir la respuesta?? Se supone que no se ha recibido } return ""; } public void setEnabled(boolean blnEnabled) { super.setEnabled(blnEnabled); getAnulacionesPanel().setEnabled(blnEnabled); getButtonAceptar().setEnabled(blnEnabled); getButtonCancelar().setEnabled(blnEnabled); if (!blnEnabled) setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.WAIT_CURSOR)); else setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.DEFAULT_CURSOR)); validate(); repaint(); } private void showErrorMessage(String sMessage) { WebServiceTrayIcon.showMessage(this, getTitle(), sMessage, JOptionPane.ERROR_MESSAGE); } private void showInformationMessage(String sMessage) { WebServiceTrayIcon.showMessage(this, getTitle(), sMessage, JOptionPane.INFORMATION_MESSAGE); } private void showWarningMessage(String sMessage) { WebServiceTrayIcon.showMessage(this, getTitle(), sMessage, JOptionPane.WARNING_MESSAGE); } }