Visualizacao de perguntas e respostas adicionada.
authorMichele Silva <michele.silva@gmail.com>
Sun, 5 Feb 2012 18:02:56 +0000 (16:02 -0200)
committerMichele Silva <michele.silva@gmail.com>
Sun, 5 Feb 2012 18:02:56 +0000 (16:02 -0200)
22 files changed:
nbproject/build-impl.xml
nbproject/genfiles.properties
nbproject/project.properties
nbproject/project.xml
src/java/org/ufcspa/simdecs/entities/IdHolder.java [new file with mode: 0644]
src/java/org/ufcspa/simdecs/entities/Nodo.java
src/java/org/ufcspa/simdecs/entities/PerguntaNodo.java
src/java/org/ufcspa/simdecs/entities/Rede.java
src/java/org/ufcspa/simdecs/entities/RespostaNodo.java
src/java/org/ufcspa/simdecs/mb/bn/RedeDataModel.java [deleted file]
src/java/org/ufcspa/simdecs/mb/bn/RedeEditBean.java [new file with mode: 0644]
src/java/org/ufcspa/simdecs/mb/bn/RedeUploadBean.java [moved from src/java/org/ufcspa/simdecs/mb/bn/RedeController.java with 87% similarity]
src/java/org/ufcspa/simdecs/mb/bn/SimdecsDataModel.java [new file with mode: 0644]
web/WEB-INF/web.xml
web/img/bn/browse.png [deleted file]
web/rede/editarRede.xhtml
web/rede/index.xhtml
web/rede/tabelaNodos.xhtml [new file with mode: 0644]
web/rede/tabelaPerguntas.xhtml [new file with mode: 0644]
web/rede/tabelaRede.xhtml [new file with mode: 0644]
web/rede/tabelaRespostas.xhtml [new file with mode: 0644]
web/style.css

index df2c7ee..28fab05 100644 (file)
@@ -695,7 +695,6 @@ exists or setup the property manually. For example like this:
         <copyfiles files="${file.reference.unbbayes-4.10.4-1s.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
         <copyfiles files="${file.reference.xalan-2.7.0.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
         <copyfiles files="${file.reference.xml-apis-1.0.b2.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
-        <copyfiles files="${file.reference.casablanca-1.0.3.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
         <mkdir dir="${build.web.dir}/META-INF"/>
         <manifest file="${build.web.dir}/META-INF/MANIFEST.MF" mode="update"/>
     </target>
@@ -722,7 +721,6 @@ exists or setup the property manually. For example like this:
         <copyfiles files="${file.reference.unbbayes-4.10.4-1s.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
         <copyfiles files="${file.reference.xalan-2.7.0.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
         <copyfiles files="${file.reference.xml-apis-1.0.b2.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
-        <copyfiles files="${file.reference.casablanca-1.0.3.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
     </target>
     <target depends="init" if="dist.ear.dir" name="-clean-webinf-lib">
         <delete dir="${build.web.dir}/WEB-INF/lib"/>
index 75bab72..7c59915 100644 (file)
@@ -1,8 +1,8 @@
-build.xml.data.CRC32=04b72030
+build.xml.data.CRC32=2c4c42bc
 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=04b72030
-nbproject/build-impl.xml.script.CRC32=ee0ab292
+nbproject/build-impl.xml.data.CRC32=2c4c42bc
+nbproject/build-impl.xml.script.CRC32=d3f674de
 nbproject/build-impl.xml.stylesheet.CRC32=b7883b1f@1.36.1.1
index 6b7069b..8781252 100644 (file)
@@ -29,7 +29,6 @@ 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
@@ -84,8 +83,7 @@ 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.casablanca-1.0.3.jar}
+    ${file.reference.xml-apis-1.0.b2.jar}
 # Space-separated list of extra javac options
 javac.compilerargs=
 javac.debug=true
index e78675e..c7c6a47 100644 (file)
                     <file>${file.reference.xml-apis-1.0.b2.jar}</file>
                     <path-in-war>WEB-INF/lib</path-in-war>
                 </library>
-                <library dirs="200">
-                    <file>${file.reference.casablanca-1.0.3.jar}</file>
-                    <path-in-war>WEB-INF/lib</path-in-war>
-                </library>
             </web-module-libraries>
             <web-module-additional-libraries/>
             <source-roots>
diff --git a/src/java/org/ufcspa/simdecs/entities/IdHolder.java b/src/java/org/ufcspa/simdecs/entities/IdHolder.java
new file mode 100644 (file)
index 0000000..acffd69
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.ufcspa.simdecs.entities;
+
+/**
+ *
+ * @author mchelem
+ */
+public interface IdHolder {
+    
+    public Long getId();
+    
+}
index afc7b81..c6c354f 100644 (file)
@@ -13,7 +13,7 @@ import javax.persistence.*;
  * @author maroni
  */
 @Entity
-public class Nodo implements Serializable {
+public class Nodo implements Serializable, IdHolder, Comparable<Nodo> {
   
     public static final String SINAL_SINTOMA        = "SINAL_SINTOMA";
     public static final String HISTORICO            = "HISTORICO";
@@ -155,5 +155,10 @@ public class Nodo implements Serializable {
         this.perguntas = perguntas;
     }
 
+    @Override
+    public int compareTo(Nodo t) {
+        return t.getId().intValue() - this.getId().intValue();
+    }
+
     
 }
index f1a8ae0..fc3f74b 100644 (file)
@@ -23,7 +23,7 @@ import javax.persistence.Table;
  */
 @Entity
 @Table(name="PERGUNTA_NODO")
-public class PerguntaNodo implements Serializable {
+public class PerguntaNodo implements Serializable, IdHolder, Comparable<PerguntaNodo> {
     private static final long serialVersionUID = 1L;
     @Id
     @SequenceGenerator(name="SeqPerguntaNodo", sequenceName="SQ_PERGUNTA_NODO")
@@ -97,5 +97,9 @@ public class PerguntaNodo implements Serializable {
         this.respostas = respostas;
     }
 
+    @Override
+    public int compareTo(PerguntaNodo t) {
+        return t.getId().intValue()- this.getId().intValue();
+    }
 
 }
index 56d2c22..289db95 100644 (file)
@@ -21,7 +21,7 @@ import org.hibernate.annotations.Table;
  */
 @Entity
 @Table(appliesTo="Rede")
-public class Rede implements Serializable {
+public class Rede implements Serializable, IdHolder, Comparable<Rede> {
     private static final long serialVersionUID = 1L;
     @Id
     @SequenceGenerator(name="seqRede", sequenceName="SQ_REDE")
@@ -41,8 +41,7 @@ public class Rede implements Serializable {
     private List<Nodo> nodos;
         
     public Long getId() {
-        return id;
-        
+        return id;        
     }
 
     public void setId(Long id) {
@@ -110,5 +109,10 @@ public class Rede implements Serializable {
     public void setDescricao(String descricao) {
         this.descricao = descricao;
     }
+    
+    @Override
+    public int compareTo(Rede t) {
+        return t.getId().intValue() - this.getId().intValue();
+    }
 
 }
index 8b1d562..d167bbb 100644 (file)
@@ -5,6 +5,7 @@
 package org.ufcspa.simdecs.entities;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.List;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -23,7 +24,7 @@ import javax.persistence.Table;
  */
 @Entity
 @Table(name="RESPOSTA_NODO")
-public class RespostaNodo implements Serializable {
+public class RespostaNodo implements Serializable, IdHolder, Comparable<RespostaNodo> {
     private static final long serialVersionUID = 1L;
     @Id
     @SequenceGenerator(name="SeqRespotaNOdo", sequenceName="SQ_RESPOTA_NODO")
@@ -37,11 +38,14 @@ public class RespostaNodo implements Serializable {
     private Integer pesoMaximo;
 
     @ManyToOne
-    @JoinColumn(name="nodo_id", nullable=false)
+    @JoinColumn(name="pergunta_id", nullable=false)
     private PerguntaNodo pergunta;
     
     @OneToMany(cascade = javax.persistence.CascadeType.ALL, mappedBy="resposta")
     private List<SinonimoResposta> sinonimos;
+    
+    @Column(nullable=true, length=2000)
+    private String texto;
 
     public Long getId() {
         return id;
@@ -109,6 +113,16 @@ public class RespostaNodo implements Serializable {
         this.sinonimos = sinonimos;
     }
     
+    public void setTexto(String texto) {
+       this.texto = texto;            
+    }
     
+    public String getTexto(){
+        return this.texto;
+    }
     
+    @Override
+    public int compareTo(RespostaNodo t) {
+        return t.getId().intValue() - this.getId().intValue();
+    }    
 }
diff --git a/src/java/org/ufcspa/simdecs/mb/bn/RedeDataModel.java b/src/java/org/ufcspa/simdecs/mb/bn/RedeDataModel.java
deleted file mode 100644 (file)
index 883aab5..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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<Rede> implements SelectableDataModel<Rede> {    
-  
-    private static final Logger logger = Logger.getLogger("" + RedeDataModel.class);
-
-    public RedeDataModel() {  
-    }  
-  
-    public RedeDataModel(List<Rede> 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<Rede> redes = (List<Rede>) 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/src/java/org/ufcspa/simdecs/mb/bn/RedeEditBean.java b/src/java/org/ufcspa/simdecs/mb/bn/RedeEditBean.java
new file mode 100644 (file)
index 0000000..a76f3cd
--- /dev/null
@@ -0,0 +1,200 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.ufcspa.simdecs.mb.bn;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import org.primefaces.component.datatable.DataTable;
+import org.primefaces.component.panel.Panel;
+import org.primefaces.event.SelectEvent;
+import org.primefaces.event.UnselectEvent;
+import org.ufcspa.simdecs.entities.*;
+import org.ufcspa.simdecs.mb.DefaultManagedBean;
+
+@ManagedBean
+@SessionScoped
+public class RedeEditBean extends DefaultManagedBean {
+
+    private Rede rede;
+    private Nodo selectedNodo;
+    private PerguntaNodo selectedPergunta;
+    private RespostaNodo selectedResposta;
+
+    public Rede getRede() {
+        return rede;
+    }
+
+    public void setRede(Rede rede) {
+        this.rede = rede;
+    }
+
+    public Nodo getSelectedNodo() {
+        return selectedNodo;
+    }
+
+    public void setSelectedNodo(Nodo selectedNodo) {
+        this.selectedNodo = selectedNodo;
+    }
+
+    public SimdecsDataModel getSelectableNodos() {
+        if (rede.getNodos() != null){
+            Collections.sort(rede.getNodos());
+        }
+        List<IdHolder> idHolders = new ArrayList<IdHolder>(rede.getNodos());
+        return new SimdecsDataModel(idHolders);
+    }
+
+    public PerguntaNodo getSelectedPergunta() {
+        return selectedPergunta;
+    }
+
+    public SimdecsDataModel getSelectablePerguntas() {
+        if (selectedNodo.getPerguntas() != null){
+            Collections.sort(selectedNodo.getPerguntas());
+        }
+        List<IdHolder> idHolders = new ArrayList<IdHolder>(selectedNodo.getPerguntas());
+        return new SimdecsDataModel(idHolders);
+    }
+
+    public void setSelectedPergunta(PerguntaNodo selectedPergunta) {
+        this.selectedPergunta = selectedPergunta;
+    }
+
+    public SimdecsDataModel getSelectableRespostas() {
+        if (selectedPergunta.getRespostas() != null) {
+            Collections.sort(selectedPergunta.getRespostas());
+        }
+        List<IdHolder> idHolders = new ArrayList<IdHolder>(selectedPergunta.getRespostas());
+        return new SimdecsDataModel(idHolders);
+    }
+
+    public RespostaNodo getSelectedResposta() {
+        return selectedResposta;
+    }
+
+    public void setSelectedResposta(RespostaNodo selectedResposta) {
+        this.selectedResposta = selectedResposta;
+    }
+
+    public void addPergunta() {
+        try {
+            em.getTransaction().begin();
+        } finally {
+            PerguntaNodo pergunta = new PerguntaNodo();
+            pergunta.setTexto("");
+            pergunta.setNodo(selectedNodo);
+            pergunta.setRespostas(new ArrayList());
+            selectedNodo.getPerguntas().add(pergunta);
+            em.persist(pergunta);
+            em.getTransaction().commit();
+        }
+    }
+
+    public void removePergunta(PerguntaNodo pergunta) {
+        try {
+            em.getTransaction().begin();
+        } finally {
+            pergunta.getNodo().getPerguntas().remove(pergunta);
+            em.remove(pergunta);
+            em.getTransaction().commit();
+        }
+    }
+
+    public void addResposta() {
+        try {
+            em.getTransaction().begin();
+        } finally {
+            RespostaNodo resposta = new RespostaNodo();
+            resposta.setTexto("");
+            resposta.setPergunta(selectedPergunta);
+            resposta.setPesoMinimo(0);
+            resposta.setPesoMaximo(1);
+            selectedPergunta.getRespostas().add(resposta);
+            em.persist(resposta);
+            em.getTransaction().commit();
+        }
+    }
+
+    public void removeResposta(RespostaNodo resposta) {
+        try {
+            em.getTransaction().begin();
+        } finally {
+            resposta.getPergunta().getRespostas().remove(resposta);
+            em.remove(resposta);
+            em.getTransaction().commit();
+        }
+    }
+
+    public void addNodo() {
+        try {
+            em.getTransaction().begin();
+        } finally {
+            Nodo nodo = new Nodo();
+            nodo.setNome("");
+            nodo.setRede(rede);
+            nodo.setPerguntas(new ArrayList());
+            rede.getNodos().add(nodo);
+            em.persist(nodo);
+            em.getTransaction().commit();
+        }
+    }
+
+    public void removeNodo(Nodo nodo) {
+        try {
+            em.getTransaction().begin();
+        } finally {
+            nodo.getRede().getNodos().remove(nodo);
+            em.remove(nodo);
+            em.getTransaction().commit();
+        }
+    }
+
+    public String close() {
+        selectedNodo = null;
+        selectedPergunta = null;
+        selectedResposta = null;
+        return "/rede/index";
+    }
+
+    public String edit(Rede rede) {
+        this.rede = rede;
+        return "/rede/editarRede";
+    }
+
+    private void setNodoPanelVisible(boolean visible) {
+        Panel panel = (Panel) getComponentById(
+                ":formNodos:nodoPanel");
+        panel.setVisible(visible);
+    }
+
+    private void setRespostaPanelVisible(boolean visible) {
+        DataTable table = (DataTable) getComponentById(
+                ":formNodos:respostaTable");
+        table.setRendered(visible);
+    }
+
+    public void onNodoRowSelect(SelectEvent event) {
+        selectedPergunta = null;
+        selectedResposta = null;
+        setNodoPanelVisible(true);
+    }
+
+    public void onNodoRowUnselect(UnselectEvent event) throws Exception {
+        selectedPergunta = null;
+        selectedResposta = null;
+        setNodoPanelVisible(false);
+    }
+
+    public void onPerguntaRowSelect(SelectEvent event) {
+        setRespostaPanelVisible(true);
+    }
+
+    public void onPerguntaRowUnselect(UnselectEvent event) {
+        setRespostaPanelVisible(false);
+    }
+}
@@ -4,6 +4,7 @@
  */
 package org.ufcspa.simdecs.mb.bn;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -14,16 +15,17 @@ 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.IdHolder;
 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 {
+public class RedeUploadBean extends DefaultManagedBean {
 
     private Rede[] selectedItems;
-    private static final Logger logger = Logger.getLogger("" + RedeDataModel.class);
+    private static final Logger logger = Logger.getLogger("" + RedeUploadBean.class);
 
     public List<Rede> getItems() {
         CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
@@ -31,8 +33,7 @@ public class RedeController extends DefaultManagedBean {
         Query q = em.createQuery(cq);
         return q.getResultList();
     }
-    
-    
+        
     public Rede getSelectedItem() {
         assert selectedItems.length == 1;
         return selectedItems[0];
@@ -47,8 +48,9 @@ public class RedeController extends DefaultManagedBean {
         logger.log(Level.INFO, "Set selected items.");
     }
 
-    public RedeDataModel getSelectableItems() {
-        return new RedeDataModel(this.getItems());
+    public SimdecsDataModel getSelectableItems() {
+        List<IdHolder> idHolders = new ArrayList<IdHolder>(this.getItems());
+        return new SimdecsDataModel(idHolders);
     }
 
     public void destroy() {
@@ -62,14 +64,6 @@ public class RedeController extends DefaultManagedBean {
             em.getTransaction().commit();
         }
     }    
-    
-    public String close(){
-        return "/rede/index";
-    }
-    
-    public String edit() {
-        return "/rede/editarRede";
-    }
 
     public List<Nodo> getNodos(){
         Rede rede = getSelectedItem();
diff --git a/src/java/org/ufcspa/simdecs/mb/bn/SimdecsDataModel.java b/src/java/org/ufcspa/simdecs/mb/bn/SimdecsDataModel.java
new file mode 100644 (file)
index 0000000..8935b60
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * 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 javax.faces.model.ListDataModel;
+import org.primefaces.model.SelectableDataModel;
+import org.ufcspa.simdecs.entities.IdHolder;
+
+public class SimdecsDataModel extends ListDataModel<IdHolder> 
+    implements SelectableDataModel<IdHolder> {
+    
+     public SimdecsDataModel(List<IdHolder> data) {  
+        super(data);  
+     }  
+     
+    @Override
+    public IdHolder 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<IdHolder> entities = (List<IdHolder>) getWrappedData();            
+        for(IdHolder entity : entities) {  
+            if(rowKey.equals(entity.getId().toString())){  
+                return entity;                  
+            }
+        }    
+        return null;  
+    }  
+  
+    @Override
+    public Object getRowKey(IdHolder object) {  
+        return object.getId().toString();  
+    }  
+    
+}
index f21a71e..af3c812 100644 (file)
@@ -4,10 +4,6 @@
         <param-name>javax.faces.PROJECT_STAGE</param-name>
         <param-value>Release</param-value>
     </context-param>
-    <context-param>  
-        <param-name>primefaces.THEME</param-name>  
-        <param-value>casablanca</param-value>  
-    </context-param>  
     <servlet>
         <servlet-name>Faces Servlet</servlet-name>
         <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
diff --git a/web/img/bn/browse.png b/web/img/bn/browse.png
deleted file mode 100644 (file)
index 62fd424..0000000
Binary files a/web/img/bn/browse.png and /dev/null differ
index a246d57..a0f3b9d 100644 (file)
@@ -7,84 +7,45 @@
       xmlns:c="http://java.sun.com/jsp/jstl/core"
       xmlns:f="http://java.sun.com/jsf/core">
 
+    <script type="text/javascript">
+        function editLastDatatableRow(){
+//
+//            jQuery('.ui-datatable-data tr').first().find('span.ui-icon-pencil').each(function(){
+//                jQuery(this).click()
+//            });
+        }
+    </script>
+
     <h:head>
         <title>SimDeCS: Redes Bayesianas</title>
+        <link type="text/css" rel="stylesheet" href="style.css" />
     </h:head>
     <h:body>
-        <h:form>      
-            <h2>Rede Bayesiana: #{redeController.selectedItem.nome}</h2> 
-            <p:dataTable var="nodo" value="#{redeController.nodos}" id="nodoTable" 
-                         paginator="true" rows="10"
-                         style="width:70%"
-                         paginatorPosition="top"
-                         paginatorAlwaysVisible="false"
-                         emptyMessage="Não existem nodos cadastrados.">  
-
-                <f:facet name="header">
-                    <h:outputText value="Nodos"/>
-                    <p:separator/>
-                    <p:commandButton icon="ui-icon-close" action="#{redeController.close}" ajax="false"/>
-            <p:commandButton icon="ui-icon-plus" action="#{redeController.close}" ajax="false"/>
-                </f:facet>
-
-                <p:column headerText="Nome">  
-                    <p:cellEditor>  
-                        <f:facet name="output">  
-                            <h:outputText value="#{nodo.nome}" />  
-                        </f:facet>  
-                        <f:facet name="input">  
-                            <p:inputText value="#{nodo.nome}"/>  
-                        </f:facet>  
-                    </p:cellEditor>  
-                </p:column>  
-                <p:column headerText="Nome Alternativo">  
-                    <p:cellEditor>  
-                        <f:facet name="output">  
-                            <h:outputText value="#{nodo.nomeAmigavel}" />  
-                        </f:facet>  
-                        <f:facet name="input">  
-                            <p:inputText value="#{nodo.nomeAmigavel}"/>  
-                        </f:facet>  
-                    </p:cellEditor>  
-                </p:column>  
-                <p:column headerText="Custo">  
-                    <p:cellEditor>  
-                        <f:facet name="output">  
-                            <h:outputText value="#{nodo.custo}" />  
-                        </f:facet>  
-                        <f:facet name="input">  
-                            <p:inputText value="#{nodo.custo}"/>  
-                        </f:facet>  
-                    </p:cellEditor>  
-                </p:column>  
-                <p:column headerText="Tipo">
-                    <p:cellEditor>  
-                        <f:facet name="output">  
-                            <h:outputText value="#{nodo.tipo}" />  
-                        </f:facet>  
-                        <f:facet name="input">  
-                            <p:inputText value="#{nodo.tipo}"/>  
-                        </f:facet>  
-                    </p:cellEditor>  
-                </p:column>  
-                <p:column headerText="Bogus">
-                    <p:cellEditor>  
-                        <f:facet name="output">  
-                            <h:outputText value="#{nodo.bogus}" />  
-                        </f:facet>  
-                        <f:facet name="input">  
-                            <p:inputText value="#{nodo.bogus}"/>  
-                        </f:facet>  
-                    </p:cellEditor>  
-                </p:column>              
+        <h:form id="formNodos">   
+            <p:growl id="growl" showDetail="true"/>  
+            <p:panel style="width: 99%">
+                <h:outputText value="Rede Bayesiana: #{redeEditBean.rede.nome}"/>
+            </p:panel>
+            <table>
+                <tr>
+                    <td>
+                        <ui:include src="tabelaNodos.xhtml"/>
+                    </td>
+                    <td><p:spacer width="10" height="10" /> </td>
+                    <td> 
+                        <p:panel id="nodoPanel" 
+                                 header="Detalhes do nodo #{redeEditBean.selectedNodo.nome}" 
+                                 style="width: 500px; height: 465px" 
+                                 visible="#{redeEditBean.selectedNodo != null}">  
 
-                <p:column headerText="">  
-                    <p:rowEditor />  
-
-                </p:column>  
-            </p:dataTable>  
+                            <ui:include src="tabelaPerguntas.xhtml"/>
+                            <p:spacer height="20" /> 
+                            <ui:include src="tabelaRespostas.xhtml"/>
+                        </p:panel>                          
+                    </td>
+                </tr>
+            </table>
         </h:form>   
-
     </h:body>
 </html>
 
index 72dc886..5d364ca 100644 (file)
@@ -8,83 +8,31 @@
       xmlns:f="http://java.sun.com/jsf/core">
     <h:head>
         <title>SimDeCS: Redes Bayesianas</title>
+        <link type="text/css" rel="stylesheet" href="style.css" />
     </h:head>
     <h:body>
-<!--        <ui:include src="header.xhtml"/>-->
+        <!--        <ui:include src="header.xhtml"/>-->
         <h:form id="formUpload" enctype="multipart/form-data"> 
-            <h2>Upload de Redes Bayesianas</h2>
-            <p:fileUpload fileUploadListener="#{fileUploadController.handleFileUpload}"  
+            <p:panel style="width: 60%">
+                <h:outputText value="Cadastro de Bayesianas"/>            
+            </p:panel>
+            <p:spacer height="10px"/>
+            <p:panel header="Envio de redes bayesianas" style="width:38%">
+                <p:fileUpload fileUploadListener="#{fileUploadController.handleFileUpload}"  
                           mode="advanced"  
-                          update=":formRedeTable,:formUpload:messages"  
-                          style="width:70%; height: 50px"
+                          update=":formRedeTable,:formUpload:messages"                            
                           multiple="true"
                           allowTypes="/(\.|\/)(xml)$/"
                           uploadLabel="Enviar"
                           cancelLabel="Cancelar"
                           label="Selecionar"/>  
             <p:growl id="messages" showDetail="true"/>
+            </p:panel>            
         </h:form>
-
-        <br></br><br></br>     
+        
+        <p:spacer height="10px"/>
         <h:form id="formRedeTable">
-            <p:dataTable id="redeTable" var="rede" value="#{redeController.selectableItems}" paginator="true" rows="30"
-                         selection="#{redeController.selectedItems}" style="width:70%"
-                         paginatorPosition="top"
-                         paginatorAlwaysVisible="false"
-                         emptyMessage="Não existem redes cadastradas.">
-                
-                <p:ajax event="rowSelect" listener="#{redeController.onRowSelect}"   
-                        update=":formRedeTable,:formUpload:messages"/>  
-                <p:ajax event="rowUnselect" listener="#{redeController.onRowUnselect}"   
-                        update=":formRedeTable,:formUpload:messages"/> 
-                
-                <f:facet name="header">
-                    <h:outputText value="Redes Bayesianas"/>
-                    
-                    <p:separator />                    
-                    <p:commandButton id="verButton" icon="ui-icon-folder-open"
-                                     action="#{redeController.edit}"
-                                     disabled="#{redeController.viewButtonDisabled}" ajax="false"/>
-                    <p:commandButton icon="ui-icon-trash" actionListener="#{redeController.destroy}"
-                                     update=":formRedeTable,:formUpload:messages"/>
-                </f:facet>
-
-                <p:column selectionMode="multiple" />
-
-                <p:column headerText="Nome">
-                    <p:cellEditor>  
-                        <f:facet name="output">  
-                            <p:commandLink value="#{rede.nome}"/>
-                        </f:facet>  
-                        <f:facet name="input">  
-                            <p:inputText value="#{rede.nome}"/>  
-                        </f:facet>  
-                    </p:cellEditor> 
-                </p:column>
-
-                <p:column headerText="Arquivo">                    
-                    #{rede.nomeArquivo}
-                </p:column>        
-
-                <p:column headerText="Descrição">                    
-                    <p:cellEditor>  
-                        <f:facet name="output">  
-                            <h:outputText value="#{rede.descricao}"/>  
-                        </f:facet>  
-                        <f:facet name="input">  
-                            <p:inputText value="#{rede.descricao}"/>  
-                        </f:facet>  
-                    </p:cellEditor>  
-
-                </p:column>     
-
-                <p:column headerText="">  
-                    <p:rowEditor />                     
-                </p:column>  
-
-            </p:dataTable>
-
-            
+            <ui:include src="tabelaRede.xhtml"/>
         </h:form>
     </h:body>
 </html>
diff --git a/web/rede/tabelaNodos.xhtml b/web/rede/tabelaNodos.xhtml
new file mode 100644 (file)
index 0000000..dea5451
--- /dev/null
@@ -0,0 +1,88 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:p="http://primefaces.org/ui"
+                xmlns:h="http://java.sun.com/jsf/html"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:f="http://java.sun.com/jsf/core">
+
+    <p:dataTable var="nodo" value="#{redeEditBean.selectableNodos}" id="nodoTable" 
+                 paginator="true" rows="10"
+                 style="width:700px; height: 465px"
+                 paginatorPosition="top"
+                 paginatorAlwaysVisible="false"
+                 emptyMessage="Não existem nodos cadastrados."
+                 selection="#{redeEditBean.selectedNodo}" selectionMode="single"
+                 sortBy="#nodo.nome"
+                 >  
+
+        <p:ajax event="rowSelect" listener="#{redeEditBean.onNodoRowSelect}"   
+                update=":formNodos:nodoPanel"/>  
+        <p:ajax event="rowUnselect" listener="#{redeEditBean.onNodoRowUnselect}" update=":formNodos:nodoPanel"/>   
+
+        <f:facet name="header">
+            <h:outputText value="Nodos"/>
+            <p:separator/>
+            <p:commandButton icon="ui-icon-arrowthick-1-w" action="#{redeEditBean.close}" ajax="false"/>
+            <p:commandButton icon="ui-icon-plusthick" action="#{redeEditBean.addNodo}" update=":formNodos:nodoTable"
+                             oncomplete="editLastDatatableRow();"/>
+        </f:facet>
+
+        <p:column headerText="Nome">  
+            <p:cellEditor>  
+                <f:facet name="output">  
+                    <h:outputText value="#{nodo.nome}" />  
+                </f:facet>  
+                <f:facet name="input">  
+                    <p:inputText value="#{nodo.nome}" size="10"/>  
+                </f:facet>  
+            </p:cellEditor>  
+        </p:column>  
+        <p:column headerText="Nome Alternativo">  
+            <p:cellEditor>  
+                <f:facet name="output">  
+                    <h:outputText value="#{nodo.nomeAmigavel}" />  
+                </f:facet>  
+                <f:facet name="input">  
+                    <p:inputText value="#{nodo.nomeAmigavel}" size="10"/>  
+                </f:facet>  
+            </p:cellEditor>  
+        </p:column>  
+        <p:column headerText="Custo">  
+            <p:cellEditor>  
+                <f:facet name="output">  
+                    <h:outputText value="#{nodo.custo}" />  
+                </f:facet>  
+                <f:facet name="input">  
+                    <p:inputText value="#{nodo.custo}" size="3"/>  
+                </f:facet>  
+            </p:cellEditor>  
+        </p:column>  
+        <p:column headerText="Tempo">
+            <p:cellEditor>  
+                <f:facet name="output">  
+                    <h:outputText value="#{nodo.tempo}" />  
+                </f:facet>  
+                <f:facet name="input">  
+                    <p:inputText value="#{nodo.tempo}" size="3"/>  
+                </f:facet>  
+            </p:cellEditor>  
+        </p:column>                 
+ <p:column headerText="Bogus">
+            <p:cellEditor>  
+                <f:facet name="output">  
+                    <h:outputText value="#{nodo.bogus}" />  
+                </f:facet>  
+                <f:facet name="input">  
+                    <p:inputText value="#{nodo.bogus}" size="1"/>  
+                </f:facet>  
+            </p:cellEditor>  
+        </p:column>         
+        <p:column headerText="">  
+            <p:rowEditor />  
+            <p:commandLink action="#{redeEditBean.removeNodo(nodo)}" update=":formNodos">
+                <h:graphicImage value="/img/bn/remove.png" />
+            </p:commandLink>
+        </p:column>  
+    </p:dataTable>      
+</ui:composition>
\ No newline at end of file
diff --git a/web/rede/tabelaPerguntas.xhtml b/web/rede/tabelaPerguntas.xhtml
new file mode 100644 (file)
index 0000000..8468051
--- /dev/null
@@ -0,0 +1,48 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:p="http://primefaces.org/ui"
+                xmlns:h="http://java.sun.com/jsf/html"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:f="http://java.sun.com/jsf/core">
+    <p:dataTable var="pergunta" 
+                 rendered="#{redeEditBean.selectedNodo.perguntas != null}"
+                 value="#{redeEditBean.selectablePerguntas}" id="perguntaTable" 
+                 paginator="true" rows="10"
+                 paginatorPosition="top"
+                 paginatorAlwaysVisible="false"
+                 emptyMessage="Não existem perguntas cadastradas."
+                 selection="#{redeEditBean.selectedPergunta}" selectionMode="single"
+                 >
+
+        <p:ajax event="rowSelect" 
+                listener="#{redeEditBean.onPerguntaRowSelect}"   
+                update=":formNodos"/>  
+        <p:ajax event="rowUnselect" 
+                listener="#{redeEditBean.onPerguntaRowUnselect}" 
+                update=":formNodos"/>   
+
+        <f:facet name="header">
+            <p:commandButton icon="ui-icon-plusthick" action="#{redeEditBean.addPergunta}" 
+                             update=":formNodos:perguntaTable"
+                             oncomplete="editLastDatatableRow();"/>
+        </f:facet>
+
+        <p:column headerText="Texto">  
+            <p:cellEditor>  
+                <f:facet name="output">  
+                    <h:outputText value="#{pergunta.texto}" />  
+                </f:facet>  
+                <f:facet name="input">  
+                    <p:inputText value="#{pergunta.texto}"/>  
+                </f:facet>                          
+            </p:cellEditor>  
+        </p:column>  
+        <p:column style="width: 15%">
+            <p:rowEditor/>
+            <p:commandLink action="#{redeEditBean.removePergunta(pergunta)}" update=":formNodos:nodoPanel">
+                <h:graphicImage value="/img/bn/remove.png" />
+            </p:commandLink>
+        </p:column>
+    </p:dataTable>  
+</ui:composition>
diff --git a/web/rede/tabelaRede.xhtml b/web/rede/tabelaRede.xhtml
new file mode 100644 (file)
index 0000000..f86762f
--- /dev/null
@@ -0,0 +1,70 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:p="http://primefaces.org/ui"
+                xmlns:h="http://java.sun.com/jsf/html"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:f="http://java.sun.com/jsf/core">
+
+    <p:dataTable id="redeTable" var="rede" value="#{redeUploadBean.selectableItems}" 
+                 style="width:60%"
+                 paginator="true" rows="30"
+                 paginatorPosition="top"
+                 paginatorAlwaysVisible="false"
+                 selection="#{redeUploadBean.selectedItems}"
+                 emptyMessage="Não existem redes cadastradas.">
+
+        <p:ajax event="rowSelect" 
+                listener="#{redeUploadBean.onRowSelect}"   
+                update=":formRedeTable,:formUpload:messages"/>  
+        <p:ajax event="rowUnselect" 
+                listener="#{redeUploadBean.onRowUnselect}"   
+                update=":formRedeTable,:formUpload:messages"/> 
+
+        <f:facet name="header">
+            <h:outputText value="Redes cadastradas"/>
+            <p:separator />                    
+            
+            <p:commandButton id="verButton" icon="ui-icon-folder-open"
+                             disabled="#{redeUploadBean.viewButtonDisabled}"                              
+                             action="#{redeEditBean.edit(redeUploadBean.selectedItem)}"
+                             ajax="false"/>
+            <p:commandButton icon="ui-icon-trash" 
+                             actionListener="#{redeUploadBean.destroy}"                             update=":formRedeTable,:formUpload:messages"/>
+        </f:facet>
+
+        <p:column selectionMode="multiple" />
+
+        <p:column headerText="Nome">
+            <p:cellEditor>  
+                <f:facet name="output">  
+                    <p:commandLink value="#{rede.nome}"/>
+                </f:facet>  
+                <f:facet name="input">  
+                    <p:inputText value="#{rede.nome}" size="10"/>  
+                </f:facet>  
+            </p:cellEditor> 
+        </p:column>
+
+        <p:column headerText="Arquivo">                    
+            #{rede.nomeArquivo}
+        </p:column>        
+
+        <p:column headerText="Descrição">                    
+            <p:cellEditor>  
+                <f:facet name="output">  
+                    <h:outputText value="#{rede.descricao}"/>  
+                </f:facet>  
+                <f:facet name="input">  
+                    <p:inputText value="#{rede.descricao}" size="10"/>  
+                </f:facet>  
+            </p:cellEditor>  
+        </p:column>     
+
+        <p:column headerText="">  
+            <p:rowEditor />                     
+        </p:column>  
+        
+    </p:dataTable>
+    
+</ui:composition>
diff --git a/web/rede/tabelaRespostas.xhtml b/web/rede/tabelaRespostas.xhtml
new file mode 100644 (file)
index 0000000..4538fa5
--- /dev/null
@@ -0,0 +1,68 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:p="http://primefaces.org/ui"
+                xmlns:h="http://java.sun.com/jsf/html"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:f="http://java.sun.com/jsf/core">
+
+
+    <p:dataTable var="resposta" 
+                 rendered="#{redeEditBean.selectedPergunta.respostas != null}"
+                 value="#{redeEditBean.selectableRespostas}" id="respostaTable" 
+                 style="width: 500"
+                 paginator="true" rows="10"
+                 paginatorPosition="top"
+                 paginatorAlwaysVisible="false"
+                 emptyMessage="Não existem respostas cadastradas.">
+
+        <f:facet name="header">
+            <p:commandButton icon="ui-icon-plusthick" 
+                             action="#{redeEditBean.addResposta}" 
+                             update=":formNodos:respostaTable"
+                             oncomplete="editLastDatatableRow();"/>
+        </f:facet>
+
+        <p:column headerText="Texto">  
+            <p:cellEditor>  
+                <f:facet name="output">  
+                    <h:outputText value="#{resposta.texto}" />  
+                </f:facet>  
+                <f:facet name="input">  
+                    <p:inputText  value="#{resposta.texto}" size="10"/>  
+                </f:facet>                          
+            </p:cellEditor>  
+        </p:column>  
+
+        <p:column headerText="Min">  
+            <p:cellEditor>  
+                <f:facet name="output">  
+                    <h:outputText id="minOutput" value="#{resposta.pesoMinimo}" />  
+                </f:facet>  
+                <f:facet name="input">  
+                    <p:inputText id="minInput" value="#{resposta.pesoMinimo}" size="3" />  
+                    <p:slider for="minInput"/>  
+                </f:facet>                          
+            </p:cellEditor>  
+        </p:column>  
+
+        <p:column headerText="Max">  
+            <p:cellEditor>  
+                <f:facet name="output">  
+                    <h:outputText value="#{resposta.pesoMaximo}" />  
+                </f:facet>  
+                <f:facet name="input">  
+                    <p:inputText id="maxInput" value="#{resposta.pesoMaximo}" size="3"/>  
+                    <p:slider for="maxInput"/>  
+                </f:facet>                          
+            </p:cellEditor>  
+        </p:column>  
+
+        <p:column style="width: 15%">
+            <p:rowEditor/>
+            <p:commandLink action="#{redeEditBean.removeResposta(resposta)}" update=":formNodos:nodoPanel">
+                <h:graphicImage value="/img/bn/remove.png" />
+            </p:commandLink>
+        </p:column>
+    </p:dataTable>  
+</ui:composition>
index 08a2be3..14727ef 100644 (file)
@@ -43,8 +43,14 @@ h1 {
 
 h2 {
     font-size: 13px;
+    color: gray;
 }
 
 .ui-datalist-data {
     border: 0px;
+}
+
+.site-title{
+    font-size: 40px;
+    color: gray;
 }
\ No newline at end of file