From: Michele Silva Date: Sat, 4 Feb 2012 23:27:20 +0000 (-0200) Subject: Visualizacao de rede e de nodos adicionada. X-Git-Url: http://200.18.67.61/gitweb/?a=commitdiff_plain;h=0bfd9a6b49e233279de4f9f9b3e09bba9e09cdd3;p=simdecs2.git Visualizacao de rede e de nodos adicionada. --- diff --git a/lib/casablanca-1.0.3.jar b/lib/casablanca-1.0.3.jar new file mode 100644 index 0000000..8a866e8 Binary files /dev/null and b/lib/casablanca-1.0.3.jar differ diff --git a/lib/primefaces-3.0.1.jar b/lib/primefaces-3.0.1.jar new file mode 100644 index 0000000..c811102 Binary files /dev/null and b/lib/primefaces-3.0.1.jar differ diff --git a/lib/primefaces-3.1-SNAPSHOT.jar b/lib/primefaces-3.1-SNAPSHOT.jar new file mode 100644 index 0000000..9c4701c Binary files /dev/null and b/lib/primefaces-3.1-SNAPSHOT.jar differ diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml index c62acee..df2c7ee 100644 --- a/nbproject/build-impl.xml +++ b/nbproject/build-impl.xml @@ -673,8 +673,8 @@ exists or setup the property manually. For example like this: - + @@ -695,12 +695,13 @@ exists or setup the property manually. For example like this: + - + @@ -721,6 +722,7 @@ exists or setup the property manually. For example like this: + diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties index 1fe4b67..75bab72 100644 --- a/nbproject/genfiles.properties +++ b/nbproject/genfiles.properties @@ -1,8 +1,8 @@ -build.xml.data.CRC32=8ce0c982 +build.xml.data.CRC32=04b72030 build.xml.script.CRC32=9f680c47 build.xml.stylesheet.CRC32=651128d4@1.36.1.1 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=8ce0c982 -nbproject/build-impl.xml.script.CRC32=6bf12d49 +nbproject/build-impl.xml.data.CRC32=04b72030 +nbproject/build-impl.xml.script.CRC32=ee0ab292 nbproject/build-impl.xml.stylesheet.CRC32=b7883b1f@1.36.1.1 diff --git a/nbproject/project.properties b/nbproject/project.properties index e315115..6b7069b 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -29,6 +29,7 @@ endorsed.classpath=\ ${libs.javaee-endorsed-api-6.0.classpath} excludes= file.reference.avalon-framework-4.1.3.jar=lib/avalon-framework-4.1.3.jar +file.reference.casablanca-1.0.3.jar=lib/casablanca-1.0.3.jar file.reference.commons-fileupload-1.2.2.jar=lib/commons-fileupload-1.2.2.jar file.reference.commons-io-2.1.jar=lib/commons-io-2.1.jar file.reference.commons-lang3-3.1.jar=lib/commons-lang3-3.1.jar @@ -44,6 +45,7 @@ file.reference.jpf-1.5.jar=lib/jpf-1.5.jar file.reference.junit-4.1.jar=lib/junit-4.1.jar file.reference.log4j-1.2.12.jar=lib/log4j-1.2.12.jar file.reference.logkit-1.0.1.jar=lib/logkit-1.0.1.jar +file.reference.primefaces-3.1-SNAPSHOT.jar=lib/primefaces-3.1-SNAPSHOT.jar file.reference.servlet-api-2.3.jar=lib/servlet-api-2.3.jar file.reference.unbbayes-4.10.4-1s.jar=lib/unbbayes-4.10.4-1s.jar file.reference.xalan-2.7.0.jar=lib/xalan-2.7.0.jar @@ -61,8 +63,8 @@ j2ee.platform.wsit.classpath= j2ee.server.type=gfv3ee6 jar.compress=false javac.classpath=\ - ${libs.primefaces.classpath}:\ ${libs.hibernate-support.classpath}:\ + ${file.reference.primefaces-3.1-SNAPSHOT.jar}:\ ${file.reference.avalon-framework-4.1.3.jar}:\ ${file.reference.commons-fileupload-1.2.2.jar}:\ ${file.reference.commons-io-2.1.jar}:\ @@ -82,7 +84,8 @@ javac.classpath=\ ${file.reference.servlet-api-2.3.jar}:\ ${file.reference.unbbayes-4.10.4-1s.jar}:\ ${file.reference.xalan-2.7.0.jar}:\ - ${file.reference.xml-apis-1.0.b2.jar} + ${file.reference.xml-apis-1.0.b2.jar}:\ + ${file.reference.casablanca-1.0.3.jar} # Space-separated list of extra javac options javac.compilerargs= javac.debug=true diff --git a/nbproject/project.xml b/nbproject/project.xml index d7258b2..e78675e 100644 --- a/nbproject/project.xml +++ b/nbproject/project.xml @@ -7,11 +7,11 @@ 1.6.5 - ${libs.primefaces.classpath} + ${libs.hibernate-support.classpath} WEB-INF/lib - ${libs.hibernate-support.classpath} + ${file.reference.primefaces-3.1-SNAPSHOT.jar} WEB-INF/lib @@ -94,6 +94,10 @@ ${file.reference.xml-apis-1.0.b2.jar} WEB-INF/lib + + ${file.reference.casablanca-1.0.3.jar} + WEB-INF/lib + diff --git a/src/java/org/ufcspa/simdecs/entities/Rede.java b/src/java/org/ufcspa/simdecs/entities/Rede.java index 52a3457..56d2c22 100644 --- a/src/java/org/ufcspa/simdecs/entities/Rede.java +++ b/src/java/org/ufcspa/simdecs/entities/Rede.java @@ -33,12 +33,16 @@ public class Rede implements Serializable { @Column(length=100, nullable=false) private String arquivo; + + @Column(length=100, nullable=true) + private String descricao; @OneToMany(cascade = javax.persistence.CascadeType.ALL, mappedBy="rede") private List nodos; public Long getId() { return id; + } public void setId(Long id) { @@ -77,6 +81,11 @@ public class Rede implements Serializable { public void setArquivo(String arquivo) { this.arquivo = arquivo; } + + public String getNomeArquivo() { + String nomeArquivo = arquivo.substring(arquivo.lastIndexOf('/') + 1); + return nomeArquivo.substring(nomeArquivo.indexOf("_") + 1); + } public String getNome() { return nome; @@ -86,7 +95,6 @@ public class Rede implements Serializable { this.nome = nome; } - public List getNodos() { return nodos; } @@ -94,5 +102,13 @@ public class Rede implements Serializable { public void setNodos(List nodos) { this.nodos = nodos; } + + public String getDescricao() { + return descricao; + } + + public void setDescricao(String descricao) { + this.descricao = descricao; + } } diff --git a/src/java/org/ufcspa/simdecs/bn/ui/FileUploadController.java b/src/java/org/ufcspa/simdecs/mb/bn/FileUploadController.java similarity index 75% rename from src/java/org/ufcspa/simdecs/bn/ui/FileUploadController.java rename to src/java/org/ufcspa/simdecs/mb/bn/FileUploadController.java index cfde520..4939330 100644 --- a/src/java/org/ufcspa/simdecs/bn/ui/FileUploadController.java +++ b/src/java/org/ufcspa/simdecs/mb/bn/FileUploadController.java @@ -2,45 +2,35 @@ * To change this template, choose Tools | Templates * and open the template in the editor. */ -package org.ufcspa.simdecs.bn.ui; +package org.ufcspa.simdecs.mb.bn; import java.io.*; import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; -import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; -import javax.faces.context.FacesContext; -import javax.persistence.EntityManager; +import javax.faces.bean.RequestScoped; import javax.xml.bind.JAXBException; import org.primefaces.event.FileUploadEvent; import org.primefaces.model.UploadedFile; import org.ufcspa.simdecs.entities.Nodo; import org.ufcspa.simdecs.entities.Rede; -import org.ufcspa.simdecs.util.DbUtil; +import org.ufcspa.simdecs.mb.DefaultManagedBean; import unbbayes.io.exception.LoadException; import unbbayes.io.xmlbif.version6.XMLBIFIO; import unbbayes.prs.bn.ProbabilisticNetwork; -/** - * - * @author mchelem - */ -@ManagedBean(name = "fileUploadController") -public class FileUploadController implements Serializable { - - private static final Logger logger = Logger.getLogger("" + FileUploadController.class); - EntityManager em = null; +@ManagedBean +@RequestScoped +public class FileUploadController extends DefaultManagedBean { - public FileUploadController() { - em = DbUtil.getInstance().getEntityManager(); - } + private static final Logger logger = Logger.getLogger("" + FileUploadController.class); private File saveUploadedFile(UploadedFile uploadedFile) throws IOException{ long unixTime = System.currentTimeMillis() / 1000L; InputStream in = new BufferedInputStream(uploadedFile.getInputstream()); - File file = new File("bn_"+ unixTime + "_" + uploadedFile.getFileName()); + File file = new File("bn"+ unixTime + "_" + uploadedFile.getFileName()); FileOutputStream fout = new FileOutputStream(file); while(in.available() != 0){ fout.write(in.read()); @@ -50,9 +40,15 @@ public class FileUploadController implements Serializable { } private void persist(Rede redeBayesiana){ - em.getTransaction().begin(); - em.persist(redeBayesiana); - em.getTransaction().commit(); + try + { + em.getTransaction().begin(); + } + finally { + em.persist(redeBayesiana); + em.getTransaction().commit(); + } + logger.log(Level.INFO, "Bayesian Network {0} persisted.", redeBayesiana.getNome()); } @@ -80,8 +76,7 @@ public class FileUploadController implements Serializable { rede.setNodos(nodes); persist(rede); - FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded."); - FacesContext.getCurrentInstance().addMessage(null, msg); + addInfoMessage("Rede Adicionada!", "Rede Bayesiana adicionada com sucesso!"); } catch (LoadException ex) { Logger.getLogger(FileUploadController.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { diff --git a/src/java/org/ufcspa/simdecs/mb/bn/RedeController.java b/src/java/org/ufcspa/simdecs/mb/bn/RedeController.java new file mode 100644 index 0000000..613ee2f --- /dev/null +++ b/src/java/org/ufcspa/simdecs/mb/bn/RedeController.java @@ -0,0 +1,98 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.ufcspa.simdecs.mb.bn; + +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.faces.bean.ManagedBean; +import javax.faces.bean.SessionScoped; +import javax.persistence.Query; +import javax.persistence.criteria.CriteriaQuery; +import org.primefaces.component.commandbutton.CommandButton; +import org.primefaces.event.SelectEvent; +import org.primefaces.event.UnselectEvent; +import org.ufcspa.simdecs.entities.Nodo; +import org.ufcspa.simdecs.entities.Rede; +import org.ufcspa.simdecs.mb.DefaultManagedBean; + +@ManagedBean +@SessionScoped +public class RedeController extends DefaultManagedBean { + + private Rede[] selectedItems; + private static final Logger logger = Logger.getLogger("" + RedeDataModel.class); + + public List getItems() { + CriteriaQuery cq = em.getCriteriaBuilder().createQuery(); + cq.select(cq.from(Rede.class)); + Query q = em.createQuery(cq); + return q.getResultList(); + } + + + public Rede getSelectedItem() { + assert selectedItems.length == 1; + return selectedItems[0]; + } + + public Rede[] getSelectedItems() { + return selectedItems; + } + + public void setSelectedItems(Rede[] selectedItems) { + this.selectedItems = selectedItems; + logger.log(Level.INFO, "Set selected items."); + } + + public RedeDataModel getSelectableItems() { + return new RedeDataModel(this.getItems()); + } + + public void destroy() { + try { + em.getTransaction().begin(); + } finally { + for (Rede item : selectedItems) { + em.remove(item); + } + addInfoMessage("Rede removida!", "Rede Bayesiana removida com sucesso!"); + em.getTransaction().commit(); + } + } + + public String close(){ + return "/rede/index"; + } + + public String edit() { + return "/rede/editarRede"; + } + + public List getNodos(){ + Rede rede = getSelectedItem(); + return rede.getNodos(); + } + + public boolean getViewButtonDisabled(){ + return selectedItems == null || selectedItems.length != 1; + } + + private void setViewButton(){ + CommandButton verButton = (CommandButton) getComponentById( + "formRedeTable:redeTable:verButton"); + assert verButton != null; + assert selectedItems != null; + verButton.setDisabled(getViewButtonDisabled()); + } + + public void onRowSelect(SelectEvent event) throws Exception { + setViewButton(); + } + + public void onRowUnselect(UnselectEvent event) throws Exception { + setViewButton(); + } +} diff --git a/src/java/org/ufcspa/simdecs/mb/bn/RedeDataModel.java b/src/java/org/ufcspa/simdecs/mb/bn/RedeDataModel.java new file mode 100644 index 0000000..883aab5 --- /dev/null +++ b/src/java/org/ufcspa/simdecs/mb/bn/RedeDataModel.java @@ -0,0 +1,47 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.ufcspa.simdecs.mb.bn; + +/** + * + * @author mchelem + */ +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.faces.model.ListDataModel; +import org.primefaces.model.SelectableDataModel; +import org.ufcspa.simdecs.entities.Rede; + +public class RedeDataModel extends ListDataModel implements SelectableDataModel { + + private static final Logger logger = Logger.getLogger("" + RedeDataModel.class); + + public RedeDataModel() { + } + + public RedeDataModel(List data) { + super(data); + } + + @Override + public Rede getRowData(String rowKey) { + //In a real app, a more efficient way like a query by rowKey should be implemented to deal with huge data + List redes = (List) getWrappedData(); + for(Rede rede : redes) { + if(rowKey.equals(rede.getId().toString())){ + logger.log(Level.INFO, "Selected network {0}", rede.getId()); + return rede; + } + } + logger.log(Level.INFO, "Did not select network"); + return null; + } + + @Override + public Object getRowKey(Rede rede) { + return rede.getId().toString(); + } +} diff --git a/web/WEB-INF/lib/primefaces-3.0.1.jar b/web/WEB-INF/lib/primefaces-3.0.1.jar new file mode 100644 index 0000000..c811102 Binary files /dev/null and b/web/WEB-INF/lib/primefaces-3.0.1.jar differ diff --git a/web/WEB-INF/web.xml b/web/WEB-INF/web.xml index 8806522..f21a71e 100644 --- a/web/WEB-INF/web.xml +++ b/web/WEB-INF/web.xml @@ -2,8 +2,12 @@ javax.faces.PROJECT_STAGE - Development + Release + + primefaces.THEME + casablanca + Faces Servlet javax.faces.webapp.FacesServlet diff --git a/web/editarcasos/selecioneCaso.xhtml b/web/editarcasos/selecioneCaso.xhtml index ec35611..8a694cd 100644 --- a/web/editarcasos/selecioneCaso.xhtml +++ b/web/editarcasos/selecioneCaso.xhtml @@ -1,7 +1,7 @@ @@ -24,13 +24,13 @@
  • - +
  • - + Criar um novo caso clínico
  • @@ -70,7 +70,7 @@         - + diff --git a/web/img/bn/browse.png b/web/img/bn/browse.png new file mode 100644 index 0000000..62fd424 Binary files /dev/null and b/web/img/bn/browse.png differ diff --git a/web/img/bn/remove.png b/web/img/bn/remove.png new file mode 100644 index 0000000..b18352b Binary files /dev/null and b/web/img/bn/remove.png differ diff --git a/web/login.xhtml b/web/login.xhtml index 3c24551..e7e8cc8 100644 --- a/web/login.xhtml +++ b/web/login.xhtml @@ -1,7 +1,7 @@ diff --git a/web/rede/editarRede.xhtml b/web/rede/editarRede.xhtml new file mode 100644 index 0000000..a246d57 --- /dev/null +++ b/web/rede/editarRede.xhtml @@ -0,0 +1,90 @@ + + + + + + SimDeCS: Redes Bayesianas + + + +

    Rede Bayesiana: #{redeController.selectedItem.nome}

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + diff --git a/web/rede/header.xhtml b/web/rede/header.xhtml new file mode 100644 index 0000000..d184bad --- /dev/null +++ b/web/rede/header.xhtml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + diff --git a/web/rede/index.xhtml b/web/rede/index.xhtml index b97f284..72dc886 100644 --- a/web/rede/index.xhtml +++ b/web/rede/index.xhtml @@ -1,19 +1,90 @@ + xmlns:p="http://primefaces.org/ui" + xmlns:h="http://java.sun.com/jsf/html" + xmlns:ui="http://java.sun.com/jsf/facelets" + xmlns:c="http://java.sun.com/jsp/jstl/core" + xmlns:f="http://java.sun.com/jsf/core"> - Facelet Title + SimDeCS: Redes Bayesianas - Hello from Facelets - - - + + +

    Upload de Redes Bayesianas

    + +
    + +



    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #{rede.nomeArquivo} + + + + + + + + + + + + + + + + + + + +