246 lines
7.7 KiB
Java
246 lines
7.7 KiB
Java
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);
|
|
}
|
|
|
|
}
|