Upload de arquivo da Rede Bayesiana.
[simdecs_seam.git] / SimDeCS / src / hot / org / ufcspa / simdecs / session / crud / admin / ArquivoRedeHome.java
index 361c9d4..dfdbdf9 100644 (file)
@@ -1,17 +1,34 @@
 package org.ufcspa.simdecs.session.crud.admin;
 
+import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
+
+import javax.persistence.EntityManager;
+
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Logger;
 import org.jboss.seam.annotations.Name;
 import org.jboss.seam.annotations.Begin;
 import org.jboss.seam.annotations.web.RequestParameter;
-import org.jboss.seam.framework.EntityHome;
+import org.jboss.seam.log.Log;
 
 import org.ufcspa.simdecs.entities.ArquivoRede;
+import org.ufcspa.simdecs.entities.BayesianNetworkParser;
+import org.ufcspa.simdecs.entities.Nodo;
+import org.ufcspa.simdecs.entities.Rede;
+import org.ufcspa.simdecs.session.crud.defaults.SimDeCSEntityHome;
 
 @Name("arquivoRedeHome")
-public class ArquivoRedeHome extends EntityHome<ArquivoRede>
+public class ArquivoRedeHome extends SimDeCSEntityHome<ArquivoRede>
 {
-    @RequestParameter Long arquivoRedeId;
+       private static final long serialVersionUID = 1L;
 
+       @Logger private Log log;
+       @In
+       private EntityManager entityManager;
+               
+       @RequestParameter Long arquivoRedeId;
+       
     @Override
     public Object getId()
     {
@@ -29,5 +46,27 @@ public class ArquivoRedeHome extends EntityHome<ArquivoRede>
     public void create() {
         super.create();
     }
+    
+    public void saveNetwork() throws Exception {
+       BayesianNetworkParser parser = new BayesianNetworkParser();
+               parser.parseBayesianNetwork(new ByteArrayInputStream(super.getInstance().getData()));
+               String name = parser.getBayesianNetworkName();
+               ArrayList<String> nodes = parser.getBayesianNetworkNodes();
+               log.info(name + ": " + nodes);
+               
+               Rede rede = new Rede();
+               rede.setNome(name);
+               rede.setArquivo(super.getInstance());
+               entityManager.persist(rede);
+               
+               for (int i = 0; i < nodes.size(); i++){
+                       Nodo nodo = new Nodo();
+                       nodo.setNome(nodes.get(i));
+                       nodo.setRede(rede);
+                       entityManager.persist(nodo);
+               }
+               
+       super.persist();
+    }
 
 }