(no commit message)
authormaroni <maroni@192.168.1.103>
Thu, 15 Mar 2012 04:16:15 +0000 (01:16 -0300)
committermaroni <maroni@192.168.1.103>
Thu, 15 Mar 2012 04:16:15 +0000 (01:16 -0300)
src/java/org/ufcspa/simdecs/comunicacao/MetodoIniciaCaso.java
src/java/org/ufcspa/simdecs/util/UnBUtil.java

index 9383f9c..652d968 100644 (file)
@@ -14,9 +14,11 @@ import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import javax.xml.crypto.Data;
 import org.ufcspa.simdecs.entities.*;
 import org.ufcspa.simdecs.util.DbUtil;
+import org.ufcspa.simdecs.util.NodoBean;
+import org.ufcspa.simdecs.util.UnBUtil;
+import unbbayes.prs.bn.ProbabilisticNode;
 
 /**
  *
@@ -40,19 +42,51 @@ public class MetodoIniciaCaso extends HttpServlet {
                 
         return "";
     }
+
     
-    private String getRespostaNodo(Long idNodo) {
+    private String getRespostaNodo(NodoPaciente nodoPaciente) {
         EntityManager em = DbUtil.getInstance().getEntityManager();
+
+        UnBUtil unBUtil = UnBUtil.getInstance(nodoPaciente.getPaciente().getRede());
+        unBUtil.abreRede(nodoPaciente.getPaciente().getRede());
+        
+        Iterator<NodoPaciente> it = em.createQuery("From NodoPaciente Where paciente.id=:pIdPaciente")
+                                      .setParameter("pIdPaciente", nodoPaciente.getPaciente().getId())
+                                      .getResultList()
+                                      .iterator();
+        
+        while(it.hasNext()) {
+            NodoPaciente nodoPac = it.next();
+            
+            ProbabilisticNode pn = unBUtil.getNodeByName(nodoPac.getNodo().getNome());
+            unBUtil.ativarNodo(pn);
+        }
+        
+        NodoBean nodoBean = unBUtil.getNodoBeanByNodo(nodoPaciente.getNodo());
+        nodoBean.getPercentualProbabilidade();
+
         List <RespostaNodo> respostas = em.createQuery("From RespostaNodo where nodo.id=:pIdNodo")
-                                         .setParameter("pIdNodo", idNodo)
+                                         .setParameter("pIdNodo", nodoPaciente.getNodo().getId())
                                          .getResultList();
         
         int random = (int) (1+Math.random()*respostas.size());
         int i=1;
         
         for(RespostaNodo resposta : respostas) {
-            if (i++ == random)
-                return resposta.getTexto();
+            if (i++ == random) {
+                
+                List<IntervaloTabelaRespota> listaInt = em.createQuery("From IntervaloTabelaResposta Where tabelaResposta.id=:pIdTabela and :pProbabilidade between pesoInicial and pesoFinal")
+                                                          .setParameter("pIdTabela", resposta.getTabelaResposta().getId())
+                                                          .setParameter("pProbabilidade", nodoBean.getPercentualProbabilidade())
+                                                          .getResultList();
+                
+                int randomInt = (int) (1+Math.random()*listaInt.size());
+                int x=1;
+                for(IntervaloTabelaRespota intervalo : listaInt) {
+                    if (x++ == random)
+                        return resposta.getTexto().replaceAll("&&tabela", intervalo.getTexto());
+                }
+            }
         }
                 
         return "";
@@ -116,7 +150,7 @@ public class MetodoIniciaCaso extends HttpServlet {
                     if (!nodo.getNodo().getTipo().equals(Nodo.SINAL_SINTOMA))
                         continue;
                 
-                    out.println("                <sintoma uid=\"sintoma-" + nodo.getId() + "\" nomeCientifico=\"" + nodo.getNodo().getNome() + "\" nomePopular=\"" + getPerguntaNodo(nodo.getNodo().getId()) + "\" imagem=\"\" som=\"\" video=\"\" dependencia=\"" + getDependencia(nodo.getNodo().getId()) + "\" falaPaciente=\"" + getRespostaNodo(nodo.getNodo().getId())  + "\" />");
+                    out.println("                <sintoma uid=\"sintoma-" + nodo.getId() + "\" nomeCientifico=\"" + nodo.getNodo().getNome() + "\" nomePopular=\"" + getPerguntaNodo(nodo.getNodo().getId()) + "\" imagem=\"\" som=\"\" video=\"\" dependencia=\"" + getDependencia(nodo.getNodo().getId()) + "\" falaPaciente=\"" + getRespostaNodo(nodo)  + "\" />");
                 }
                 out.println("            </perguntar_sintoma>");
 
index c77f62d..495ef1e 100644 (file)
@@ -63,6 +63,15 @@ public class UnBUtil {
         
         return null;
     }
+
+    public NodoBean getNodoBeanByNodo(Nodo nodo) {
+        for(Node node : rede.getNodes()) {
+            if (node.getName().equals(nodo.getNome()))
+                return new NodoBean(nodo, (ProbabilisticNode) node);
+        }
+        
+        return null;
+    }
     
     public ProbabilisticNetwork getRede() {
         return rede;
@@ -95,7 +104,6 @@ public class UnBUtil {
         setProbablidadeNodo(pn, 0.0f, 1f);
     }
     
-    
     public List<NodoBean> getProbabilidadeNodos(String tipo) {
         EntityManager em = DbUtil.getInstance().getEntityManager();
         List<NodoBean> nodos = new ArrayList<NodoBean>();