--- /dev/null
+/dist/
\ No newline at end of file
@Column(nullable=true, length=30)
private String tipo;
- @Column(nullable=true, length=1)
- private String bogus;
+ @Column(nullable=true)
+ private Boolean bogus;
@OneToMany(cascade = javax.persistence.CascadeType.ALL, mappedBy="nodo")
private List<PerguntaNodo> perguntas;
this.tipo = tipo;
}
- public String getBogus() {
+ public Boolean getBogus() {
return bogus;
}
- public void setBogus(String bogus) {
+ public void setBogus(Boolean bogus) {
this.bogus = bogus;
}
--- /dev/null
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.ufcspa.simdecs.mb.bn;
+
+import java.io.IOException;
+import java.io.Serializable;
+import javax.servlet.*;
+
+public class CharacterEncodingFilter implements Filter, Serializable
+{
+ private static final long serialVersionUID = -4246457499875267088L;
+
+ @Override
+ public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
+ req.setCharacterEncoding("UTF-8");
+ //resp.setCharacterEncoding("UTF-8");
+ chain.doFilter(req, resp);
+ }
+
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+ }
+
+ @Override
+ public void destroy() {
+ }
+}
@ManagedBean
@RequestScoped
public class FileUploadController extends DefaultManagedBean {
-
- private static final Logger logger = Logger.getLogger("" + FileUploadController.class);
-
+
private File saveUploadedFile(UploadedFile uploadedFile) throws IOException{
long unixTime = System.currentTimeMillis() / 1000L;
while(in.available() != 0){
fout.write(in.read());
}
- logger.log(Level.INFO, "Uploaded file saved in: {0}", file.getAbsolutePath());
+ Logger.getLogger(FileUploadController.class.getName()).log(Level.INFO, "Uploaded file saved in: {0}", file.getAbsolutePath());
return file;
}
em.getTransaction().commit();
}
- logger.log(Level.INFO, "Bayesian Network {0} persisted.", redeBayesiana.getNome());
+ Logger.getLogger(FileUploadController.class.getName()).log(Level.INFO, "Bayesian Network {0} persisted.", redeBayesiana.getNome());
}
ArrayList<Nodo> nodes = new ArrayList<Nodo>();
for (unbbayes.prs.Node prs_node: bn.getNodes()){
Nodo nodo = new Nodo();
- nodo.setNome(prs_node.getName());
- nodo.setBogus("N");
+ nodo.setNome(prs_node.getName());
nodo.setRede(rede);
nodes.add(nodo);
}
rede.setNodos(nodes);
persist(rede);
- addInfoMessage("Rede Adicionada!", "Rede Bayesiana adicionada com sucesso!");
+ addInfoMessage("Rede Adicionada", "Rede Bayesiana adicionada com sucesso");
} catch (LoadException ex) {
Logger.getLogger(FileUploadController.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
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;
}
public SimdecsDataModel getSelectableNodos() {
- if (rede.getNodos() != null){
+ if (rede != null && rede.getNodos() != null) {
Collections.sort(rede.getNodos());
+ List<IdHolder> idHolders = new ArrayList<IdHolder>(rede.getNodos());
+ return new SimdecsDataModel(idHolders);
+ } else {
+ return new SimdecsDataModel(new ArrayList());
}
- List<IdHolder> idHolders = new ArrayList<IdHolder>(rede.getNodos());
- return new SimdecsDataModel(idHolders);
+
}
public PerguntaNodo getSelectedPergunta() {
}
public SimdecsDataModel getSelectablePerguntas() {
- if (selectedNodo.getPerguntas() != null){
+ if (selectedNodo != null && selectedNodo.getPerguntas() != null) {
Collections.sort(selectedNodo.getPerguntas());
+ List<IdHolder> idHolders = new ArrayList<IdHolder>(selectedNodo.getPerguntas());
+ return new SimdecsDataModel(idHolders);
+ } else {
+ return new SimdecsDataModel(new ArrayList());
}
- List<IdHolder> idHolders = new ArrayList<IdHolder>(selectedNodo.getPerguntas());
- return new SimdecsDataModel(idHolders);
}
public void setSelectedPergunta(PerguntaNodo selectedPergunta) {
}
public SimdecsDataModel getSelectableRespostas() {
- if (selectedPergunta.getRespostas() != null) {
+ if (selectedPergunta != null && selectedPergunta.getRespostas() != null) {
Collections.sort(selectedPergunta.getRespostas());
+ List<IdHolder> idHolders = new ArrayList<IdHolder>(selectedPergunta.getRespostas());
+ return new SimdecsDataModel(idHolders);
+ } else {
+ return new SimdecsDataModel(new ArrayList());
}
- List<IdHolder> idHolders = new ArrayList<IdHolder>(selectedPergunta.getRespostas());
- return new SimdecsDataModel(idHolders);
}
public RespostaNodo getSelectedResposta() {
em.persist(pergunta);
em.getTransaction().commit();
}
+ addInfoMessage("Pergunta Adicionada", "Pergunta adicionada com sucesso.");
}
public void removePergunta(PerguntaNodo pergunta) {
em.remove(pergunta);
em.getTransaction().commit();
}
+ addInfoMessage("Pergunta Removida", "Pergunta removida com sucesso.");
}
public void addResposta() {
em.persist(resposta);
em.getTransaction().commit();
}
+ addInfoMessage("Resposta adicionada", "Resposta adicionada com sucesso.");
}
public void removeResposta(RespostaNodo resposta) {
em.remove(resposta);
em.getTransaction().commit();
}
+ addInfoMessage("Resposta removida", "Resposta removida com sucesso.");
}
public void addNodo() {
em.persist(nodo);
em.getTransaction().commit();
}
+ addInfoMessage("Nodo adicionado", "Nodo adicionado com sucesso.");
+
}
public void removeNodo(Nodo nodo) {
em.remove(nodo);
em.getTransaction().commit();
}
+ addInfoMessage("Nodo removido", "Nodo removido com sucesso.");
+
}
public String close() {
}
private void setRespostaPanelVisible(boolean visible) {
- DataTable table = (DataTable) getComponentById(
- ":formNodos:respostaTable");
- table.setRendered(visible);
+ Panel panel = (Panel) getComponentById(
+ ":formNodos:respostaPanel");
+ panel.setVisible(visible);
}
public void onNodoRowSelect(SelectEvent event) {
selectedPergunta = null;
selectedResposta = null;
+ setRespostaPanelVisible(false);
setNodoPanelVisible(true);
}
public void onNodoRowUnselect(UnselectEvent event) throws Exception {
selectedPergunta = null;
selectedResposta = null;
+ setRespostaPanelVisible(false);
setNodoPanelVisible(false);
}
public class RedeUploadBean extends DefaultManagedBean {
private Rede[] selectedItems;
- private static final Logger logger = Logger.getLogger("" + RedeUploadBean.class);
public List<Rede> getItems() {
CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
public void setSelectedItems(Rede[] selectedItems) {
this.selectedItems = selectedItems;
- logger.log(Level.INFO, "Set selected items.");
+ Logger.getLogger(RedeUploadBean.class.getName()).log(Level.INFO, "Set selected items.");
}
public SimdecsDataModel getSelectableItems() {
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
+ <filter>
+ <filter-name>Character Encoding Filter</filter-name>
+ <filter-class>org.ufcspa.simdecs.mb.bn.CharacterEncodingFilter</filter-class>
+ </filter>
+ <filter-mapping>
+ <filter-name>Character Encoding Filter</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
</web-app>
<script type="text/javascript">
function editLastDatatableRow(){
-//
-// jQuery('.ui-datatable-data tr').first().find('span.ui-icon-pencil').each(function(){
-// jQuery(this).click()
-// });
+
+ jQuery('.ui-datatable-data tr').first().last('span.ui-icon-pencil').each(function(){
+ jQuery(this).click()
+ });
}
</script>
+++ /dev/null
-<?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">
-
- <h:form>
- <p:menubar style="width:70%">
- <p:menuitem value="Project" url="#"/>
- <p:menuitem value="Other" url="#"/>
- <p:menuitem value="Undo" url="#"/>
- <p:menuitem value="Redo" url="#"/>
- <p:menuitem value="Quit" url="http://www.primefaces.org"/>
- </p:menubar>
-
- </h:form>
-</ui:composition>
-
<link type="text/css" rel="stylesheet" href="style.css" />
</h:head>
<h:body>
- <!-- <ui:include src="header.xhtml"/>-->
<h:form id="formUpload" enctype="multipart/form-data">
<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:panel header="Envio de redes bayesianas" style="width:60%">
<p:fileUpload fileUploadListener="#{fileUploadController.handleFileUpload}"
- mode="advanced"
- update=":formRedeTable,:formUpload:messages"
- multiple="true"
- allowTypes="/(\.|\/)(xml)$/"
- uploadLabel="Enviar"
- cancelLabel="Cancelar"
- label="Selecionar"/>
- <p:growl id="messages" showDetail="true"/>
+ mode="advanced"
+ update=":formRedeTable,:formUpload"
+ multiple="true"
+ allowTypes="/(\.|\/)(xml)$/"
+ uploadLabel="Enviar"
+ cancelLabel="Cancelar"
+ label="Selecionar"/>
+ <p:growl id="messages" showDetail="true"/>
</p:panel>
</h:form>
-
+
<p:spacer height="10px"/>
<h:form id="formRedeTable">
<ui:include src="tabelaRede.xhtml"/>
<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();"/>
+ <p:commandButton
+ icon="ui-icon-circle-arrow-w"
+ action="#{redeEditBean.close}"
+ ajax="false"
+ title="Voltar para o cadastro de redes bayesianas"/>
+ <p:commandButton
+ icon="ui-icon-plusthick" action="#{redeEditBean.addNodo}"
+ update=":formNodos:nodoTable"
+ oncomplete="editLastDatatableRow();"
+ title="Adicionar nodo na rede bayesiana"/>
</f:facet>
<p:column headerText="Nome">
</f:facet>
</p:cellEditor>
</p:column>
- <p:column headerText="Bogus">
+ <p:column headerText="Bogus">
<p:cellEditor>
<f:facet name="output">
- <h:outputText value="#{nodo.bogus}" />
+ <p:selectBooleanCheckbox value="#{nodo.bogus}" disabled="true" />
</f:facet>
<f:facet name="input">
- <p:inputText value="#{nodo.bogus}" size="1"/>
+ <p:selectBooleanCheckbox value="#{nodo.bogus}" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="">
<p:rowEditor />
+ <p:spacer width="5px"/>
+
<p:commandLink action="#{redeEditBean.removeNodo(nodo)}" update=":formNodos">
<h:graphicImage value="/img/bn/remove.png" />
</p:commandLink>
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}"
+ rendered="#{redeEditBean.selectedNodo != null}"
value="#{redeEditBean.selectablePerguntas}" id="perguntaTable"
paginator="true" rows="10"
paginatorPosition="top"
update=":formNodos"/>
<f:facet name="header">
- <p:commandButton icon="ui-icon-plusthick" action="#{redeEditBean.addPergunta}"
+ <p:commandButton icon="ui-icon-plusthick"
+ action="#{redeEditBean.addPergunta}"
update=":formNodos:perguntaTable"
- oncomplete="editLastDatatableRow();"/>
+ oncomplete="editLastDatatableRow();"
+ title="Adicionar pergunta ao nodo"/>
</f:facet>
<p:column headerText="Texto">
</p:column>
<p:column style="width: 15%">
<p:rowEditor/>
+ <p:spacer width="5px"/>
+
<p:commandLink action="#{redeEditBean.removePergunta(pergunta)}" update=":formNodos:nodoPanel">
<h:graphicImage value="/img/bn/remove.png" />
</p:commandLink>
<p:column headerText="Descrição">
<p:cellEditor>
<f:facet name="output">
- <h:outputText value="#{rede.descricao}"/>
+ <f:view locale="pt_BR">
+ <h:outputText value="#{rede.descricao}"/>
+ </f:view>
</f:facet>
<f:facet name="input">
- <p:inputText value="#{rede.descricao}" size="10"/>
+ <f:view locale="pt_BR">
+ <p:inputText value="#{rede.descricao}" size="10"/>
+ </f:view>
</f:facet>
</p:cellEditor>
</p:column>
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core">
+ <p:panel style="border-width: 0px" id="respostaPanel">
+ <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."
+ selection="#{redeEditBean.selectedResposta}" selectionMode="single">
- <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:respostaPanel"
+ oncomplete="editLastDatatableRow();"
+ title="Adicionar resposta"/>
+ </f:facet>
- <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="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="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 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:spacer width="5px"/>
- <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>
+ <p:commandLink action="#{redeEditBean.removeResposta(resposta)}" update=":formNodos:nodoPanel">
+ <h:graphicImage value="/img/bn/remove.png" />
+ </p:commandLink>
+ </p:column>
+ </p:dataTable>
+ </p:panel>
</ui:composition>