Package Interface

Source Code of Interface.AcompanhamentoSessao$AlarmeLoaderThread

/*
* 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){}
        }
       
    }
}
TOP

Related Classes of Interface.AcompanhamentoSessao$AlarmeLoaderThread

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.