/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* TesteComThreads.java
*
* Created on 09/08/2011, 17:26:41
*/
package Interface;
import Comunicacao.InfoSessao;
import Comunicacao.InfoSensor;
import Calculo.ThreadProcessadoraSingle;
import Comunicacao.ThreadReceptora;
import Comunicacao.ThreadReceptoraTinyOS;
import Dados.Paciente;
import java.awt.CardLayout;
import java.awt.Container;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import Calculo.InfoProc;
import Dados.Alarme;
import Dados.DBConnector;
import Dados.Medicao;
import Dados.Sessao;
import Interface.StickmanText.dadosDeAngulo;
import java.sql.Date;
import java.util.LinkedList;
import java.util.Map.Entry;
import java.util.concurrent.ExecutionException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.SwingWorker;
/**
*
* @author Renan
*/
public class AcompanhamentoSessao extends javax.swing.JPanel implements PropertyChangeListener, PacientHolder, ReturnToMainMenu{
public static final int DEFAULT_INTERVAL = 128;
// private ThreadReceptora threadReceptora = null;
private ThreadReceptoraTinyOS threadReceptora = null;
// private ThreadProcessadora threadProcessadora = null;
private ThreadProcessadoraSingle threadProcessadora = null;
private InfoSessao infoSessao;
private StickMan stickman1, stickman2;
private Paciente paciente;
private Graficos gr;
/** Creates new form TesteComThreads
* Logo que a classe é instanciada inicia a Thread que lê da serial
*/
public AcompanhamentoSessao() {
initComponents();
// txtTaxa.setVisible(false);
// lblTaxa.setVisible(false);
//Applet do stickman
PernasFrente appletPernas = new PernasFrente();
//Inicialização dos vetores
appletPernas.setVetorQuadrilDX( new Vetor(0, 0, 1) );
appletPernas.setVetorQuadrilEX( new Vetor(0, 0, 1) );
appletPernas.setVetorQuadrilDZ( new Vetor(0, -1, 0) );
appletPernas.setVetorQuadrilEZ( new Vetor(0, -1, 0) );
appletPernas.setVetorCoxaDireita( new Vetor(-0.3f, 1, 1) );
appletPernas.setVetorCoxaEsquerda( new Vetor(0.1f, 1, 0) );
appletPernas.setVetorCanelaDireita( new Vetor(-0.3f, 1, 0) );
appletPernas.setVetorCanelaEsquerda( new Vetor(0.1f, 1, 0) );
pAppletContainerJPanel1.setPApplet(appletPernas);
gr = new Graficos();
pAppletContainerJPanel2.setPApplet(gr);
stickmanText.grafico = gr;
stickman1 = stickmanText;
stickmanText.setAppletToControl(appletPernas);
stickman2 = appletPernas;
addComponentListener(new ComponentAdapter() {
@Override
public void componentShown(ComponentEvent e) {
new AlarmeLoaderThread().execute();
getParent().setPreferredSize(getPreferredSize());
barraDeStatus.setNomePaciente(paciente.getNome());
barraDeStatus.setIdade(paciente.getIdade() + "");
infoSessao = new InfoSessao();
stickman1.limpar();
stickman2.limpar();
}
@Override
public void componentHidden(ComponentEvent e) {
//TODO - persiste informações da sessão no BD
super.componentHidden(e);
}
});
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
btnStart = new javax.swing.JButton();
btnStop = new javax.swing.JButton();
stickmanText = new Interface.StickmanText();
jPanel1 = new javax.swing.JPanel();
pAppletContainerJPanel1 = new Interface.PAppletContainerJPanel();
barraDeStatus = new Interface.BarraDeStatus();
jLabel1 = new javax.swing.JLabel();
jSeparator1 = new javax.swing.JSeparator();
btnConfig = new javax.swing.JButton();
pAppletContainerJPanel2 = new Interface.PAppletContainerJPanel();
jComboBox1 = new javax.swing.JComboBox();
jLabel2 = new javax.swing.JLabel();
jSeparator2 = new javax.swing.JSeparator();
jLabel3 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
txtObs = new javax.swing.JTextArea();
jLabel4 = new javax.swing.JLabel();
txtPortaSerial = new javax.swing.JTextField();
lblTaxa = new javax.swing.JLabel();
txtTaxa = new javax.swing.JTextField();
chkMagEnabled = new javax.swing.JCheckBox();
setName("acompanhamento"); // NOI18N
btnStart.setText("Começar");
btnStart.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnStartActionPerformed(evt);
}
});
btnStop.setText("Parar");
btnStop.setEnabled(false);
btnStop.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnStopActionPerformed(evt);
}
});
jPanel1.setBackground(new java.awt.Color(255, 255, 255));
jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
javax.swing.GroupLayout pAppletContainerJPanel1Layout = new javax.swing.GroupLayout(pAppletContainerJPanel1);
pAppletContainerJPanel1.setLayout(pAppletContainerJPanel1Layout);
pAppletContainerJPanel1Layout.setHorizontalGroup(
pAppletContainerJPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 159, Short.MAX_VALUE)
);
pAppletContainerJPanel1Layout.setVerticalGroup(
pAppletContainerJPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 634, Short.MAX_VALUE)
);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(pAppletContainerJPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(pAppletContainerJPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setText("Acompanhamento de Sessão");
btnConfig.setText("Configurar");
btnConfig.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnConfigActionPerformed(evt);
}
});
javax.swing.GroupLayout pAppletContainerJPanel2Layout = new javax.swing.GroupLayout(pAppletContainerJPanel2);
pAppletContainerJPanel2.setLayout(pAppletContainerJPanel2Layout);
pAppletContainerJPanel2Layout.setHorizontalGroup(
pAppletContainerJPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 345, Short.MAX_VALUE)
);
pAppletContainerJPanel2Layout.setVerticalGroup(
pAppletContainerJPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 251, Short.MAX_VALUE)
);
jComboBox1.setFont(new java.awt.Font("Tahoma", 0, 10));
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Joelho Esquerdo", "Joelho Direito", "Abertura Coxa Direita", "Abertura Coxa Esquerda", "Flexão Quadril Direita", "Flexão Quadril Esquerda", "Frequencia" }));
jComboBox1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jComboBox1ActionPerformed(evt);
}
});
jLabel2.setText("Medida(s):");
jLabel3.setText("Observações");
txtObs.setColumns(20);
txtObs.setRows(5);
jScrollPane1.setViewportView(txtObs);
jLabel4.setText("Porta Serial:");
txtPortaSerial.setText("com9");
lblTaxa.setText("Taxa de leitura:");
txtTaxa.setText("128");
chkMagEnabled.setSelected(true);
chkMagEnabled.setText("Mag Enabled");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 877, Short.MAX_VALUE)
.addComponent(jSeparator1, javax.swing.GroupLayout.DEFAULT_SIZE, 877, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(barraDeStatus, javax.swing.GroupLayout.DEFAULT_SIZE, 857, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addGap(12, 12, 12)
.addComponent(jLabel2, 0, 0, Short.MAX_VALUE))
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(pAppletContainerJPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(10, 10, 10))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 500, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 587, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(stickmanText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(chkMagEnabled)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jLabel4)
.addComponent(btnConfig, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnStart, javax.swing.GroupLayout.DEFAULT_SIZE, 105, Short.MAX_VALUE)
.addComponent(btnStop, javax.swing.GroupLayout.DEFAULT_SIZE, 105, Short.MAX_VALUE)
.addComponent(txtPortaSerial)
.addComponent(lblTaxa)
.addComponent(txtTaxa)))))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(28, 28, 28)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(btnStart)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnStop)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnConfig)
.addGap(28, 28, 28)
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtPortaSerial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblTaxa)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtTaxa, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(chkMagEnabled))
.addGroup(layout.createSequentialGroup()
.addComponent(stickmanText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(pAppletContainerJPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, 108, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 108, Short.MAX_VALUE)))
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(barraDeStatus, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
);
}// </editor-fold>//GEN-END:initComponents
private void btnStopActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnStopActionPerformed
if (threadReceptora != null)
threadReceptora.stopListening();
barraDeStatus.setEnabled(true);
btnConfig.setEnabled(true);
btnStart.setEnabled(true);
btnStop.setEnabled(false);
txtPortaSerial.setEnabled(true);
txtTaxa.setEnabled(true);
chkMagEnabled.setEnabled(true);
}//GEN-LAST:event_btnStopActionPerformed
private void btnStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnStartActionPerformed
// Inicia thread receptora: escuta na porta TCP designada
java.io.File file = new java.io.File("FlexMeterLog\\" + paciente.getNome() + " " + System.currentTimeMillis() + ".txt");
int intervalo;
try {
intervalo = Integer.parseInt(txtTaxa.getText());
} catch (NumberFormatException ex){
intervalo = DEFAULT_INTERVAL;
}
if (threadReceptora == null){
threadReceptora = new ThreadReceptoraTinyOS(/*infoSessao,*/ this);
threadReceptora.addPropertyChangeListener( this );
if (threadReceptora.run(file, "serial@"+txtPortaSerial.getText()+":telosb", intervalo))
threadReceptora.startListening(file, intervalo, chkMagEnabled.isSelected());
}else{
threadReceptora.startListening(file, intervalo, chkMagEnabled.isSelected());
}
barraDeStatus.setEnabled(false);
btnConfig.setEnabled(false);
btnStart.setEnabled(false);
btnStop.setEnabled(true);
txtTaxa.setEnabled(false);
txtPortaSerial.setEnabled(false);
chkMagEnabled.setEnabled(false);
}//GEN-LAST:event_btnStartActionPerformed
private void btnConfigActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnConfigActionPerformed
Container cards = this.getParent();
((SensorNome)cards.getComponent(JanelaDaAplicacao.SENSOR_NOME_int)).setInfoSessao(infoSessao);
CardLayout cardLayout = (CardLayout) cards.getLayout();
cardLayout.show(getParent(),JanelaDaAplicacao.SENSOR_NOME);
}//GEN-LAST:event_btnConfigActionPerformed
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox1ActionPerformed
gr.medidaExibida = mapMedidas(jComboBox1.getSelectedItem().toString());
}//GEN-LAST:event_jComboBox1ActionPerformed
private NomeMedida mapMedidas(String medida){
//ta feio, mas foi o jeito...
if (medida.equals("Joelho Esquerdo")){
return NomeMedida.JoelhoEsq;
}
if (medida.equals("Joelho Direito")){
return NomeMedida.JoelhoDir;
}
if (medida.equals("Abertura Coxa Direita")){
return NomeMedida.AberturaCoxaD;
}
if (medida.equals("Abertura Coxa Esquerda")){
return NomeMedida.AberturaCoxaE;
}
if (medida.equals("Flexão Quadril Direita")){
return NomeMedida.CoxaQuadrilDireita;
}
if (medida.equals("Flexão Quadril Esquerda")){
return NomeMedida.CoxaQuadrilEsquerda;
}
if (medida.equals("Frequencia")){
return NomeMedida.Frequencia;
}
return null;
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private Interface.BarraDeStatus barraDeStatus;
private javax.swing.JButton btnConfig;
private javax.swing.JButton btnStart;
private javax.swing.JButton btnStop;
private javax.swing.JCheckBox chkMagEnabled;
private javax.swing.JComboBox jComboBox1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSeparator jSeparator2;
private javax.swing.JLabel lblTaxa;
private Interface.PAppletContainerJPanel pAppletContainerJPanel1;
private Interface.PAppletContainerJPanel pAppletContainerJPanel2;
private Interface.StickmanText stickmanText;
private javax.swing.JTextArea txtObs;
private javax.swing.JTextField txtPortaSerial;
private javax.swing.JTextField txtTaxa;
// End of variables declaration//GEN-END:variables
@Override
public /*synchronized*/ void propertyChange(PropertyChangeEvent evt) {
if (isVisible()){
boolean processadoraInterrompeu = evt.getPropertyName().equals(ThreadProcessadoraSingle.getPropertyChangeName());
boolean receptoraInterrompeu = evt.getPropertyName().equals(ThreadReceptora.getPropertyChangeName());
if (receptoraInterrompeu){
//Aqui a ThreadProcessadora deve ser ativada
// threadProcessadora = new ThreadProcessadora(infoSessao);
threadProcessadora = new ThreadProcessadoraSingle((InfoSensor)evt.getNewValue(), 5);
threadProcessadora.addPropertyChangeListener(this);
threadProcessadora.execute();
}else if(processadoraInterrompeu){
//Executa mudanças na interface
InfoProc infoProc = (Calculo.InfoProc) evt.getNewValue();
if( infoProc.ID == infoSessao.getId(InfoSessao.COXA_DIREITA)){
stickman1.setVetorCoxaDireita(infoProc.Proj_x);
stickman2.setVetorCoxaDireita(infoProc.Proj_x);
}else if( infoProc.ID == infoSessao.getId(InfoSessao.CANELA_DIREITA)){
stickman1.setVetorCanelaDireita(infoProc.Proj_x);
stickman2.setVetorCanelaDireita(infoProc.Proj_x);
}else if( infoProc.ID == infoSessao.getId(InfoSessao.COXA_ESQUERDA)){
stickman1.setVetorCoxaEsquerda(infoProc.Proj_x);
stickman2.setVetorCoxaEsquerda(infoProc.Proj_x);
}else if( infoProc.ID == infoSessao.getId(InfoSessao.CANELA_ESQUERDA)){
stickman1.setVetorCanelaEsquerda(infoProc.Proj_x);
stickman2.setVetorCanelaEsquerda(infoProc.Proj_x);
}else if( infoProc.ID == infoSessao.getId(InfoSessao.QUADRILD)){
stickman1.setVetorQuadrilDX(infoProc.Proj_x);
stickman2.setVetorQuadrilDX(infoProc.Proj_x);
stickman1.setVetorQuadrilDZ(infoProc.Proj_z);
stickman2.setVetorQuadrilDZ(infoProc.Proj_z);
}else if( infoProc.ID == infoSessao.getId(InfoSessao.QUADRILE)){
stickman1.setVetorQuadrilEX(infoProc.Proj_x);
stickman2.setVetorQuadrilEX(infoProc.Proj_x);
stickman1.setVetorQuadrilEZ(infoProc.Proj_z);
stickman2.setVetorQuadrilEZ(infoProc.Proj_z);
}
}
}
}
@Override
public void setPaciente(Paciente paciente) {
this.paciente = paciente;
}
@Override
public void executeAction() {
//Persistência dos dados da sessão e medidas
DBConnector dbc = new DBConnector("jdbc:mysql://localhost:3306/tcc");
Sessao sessao = new Sessao();
sessao.setPaciente(paciente);
sessao.setPacienteID(paciente.getId());
sessao.setObservacoes(txtObs.getText());
sessao.setData(new Date(new java.util.Date().getTime()));
dbc.InsertSessao(sessao, sessao.getPacienteID());
Medicao medicao;
StickmanText stickTemp = null;
if( stickman1 instanceof StickmanText ){
stickTemp = (StickmanText) stickman1;
} else {
stickTemp = (StickmanText) stickman2;
}
if (stickTemp != null){
for (Entry<String, dadosDeAngulo> i : (stickTemp).getData().entrySet() ){
if (i.getValue().inicializado){
medicao = new Medicao();
medicao.setNome(i.getKey() + "max");
medicao.setValor(i.getValue().valorMaximo);
dbc.InsertMedicao(medicao, sessao.getID());
medicao = new Medicao();
medicao.setNome(i.getKey() + "min");
medicao.setValor(i.getValue().valorMinimo);
dbc.InsertMedicao(medicao, sessao.getID());
medicao = new Medicao();
medicao.setNome(i.getKey() + "avg");
medicao.setValor(1.0*i.getValue().valorSoma / i.getValue().valorN);
dbc.InsertMedicao(medicao, sessao.getID());
}
}
// Persistência dos alarmes
Alarme alarme = new Alarme();
alarme.setDisparaSeIgual(true);
for (NomeMedida n : NomeMedida.values()){
alarme.setNome(n.toString());
// alarme de máximo
alarme.setDisparaSeMaior(true);
alarme.setDisparaSeMenor(false);
alarme.setValor(stickTemp.getAlarme(n, false));
dbc.InsertAlarme(alarme, paciente.getId());
// alarme de mínimo
alarme.setDisparaSeMaior(false);
alarme.setDisparaSeMenor(true);
alarme.setValor(stickTemp.getAlarme(n, true));
dbc.InsertAlarme(alarme, paciente.getId());
}
}
}
public void serialError() {
btnStop.doClick();
threadReceptora = null;
JOptionPane.showMessageDialog(getRootPane(), "Houve um erro!\nVerifique se a estação base está concectada corretamente e configurada na porta serial correta.", "Acompanhamento",JOptionPane.ERROR_MESSAGE);
}
private class AlarmeLoaderThread extends SwingWorker<LinkedList<Alarme>, Void> {
@Override
protected LinkedList<Alarme> doInBackground() throws Exception {
return paciente.getAlarmes();
}
@Override
protected void done() {
try {
for (Alarme a : get()){
stickmanText.setAlarme(NomeMedida.valueOf(a.getNome()), a.isDisparaSeMenor(), a.getValor());
}
} catch (InterruptedException ex) {
Logger.getLogger(AcompanhamentoSessao.class.getName()).log(Level.SEVERE, null, ex);
} catch (ExecutionException ex) {
Logger.getLogger(AcompanhamentoSessao.class.getName()).log(Level.SEVERE, null, ex);
} catch (NullPointerException ex){}
}
}
}