Sou estagiário e possuo um conhecimento básio em JSP, estou tentando colocar o projeto https://github.com/culturagovbr/GOG para rodar. Me deparei com erros como o exposto abaixo em 3 páginas, tentei todas as soluções que encontrei na internet, mas não consegui aplicar as soluções corretamente.
O erro:
The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: failed to lazily initialize a collection of role: br.com.xti.ouvidoria.model.TbUnidade.tbClassificacaoCollection, no session or session was closed
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:98)
org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62)
br.com.xti.ouvidoria.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:22)
root cause
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.xti.ouvidoria.model.TbUnidade.tbClassificacaoCollection, no session or session was closed org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:393) org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:385) org.hibernate.collection.internal.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:125) org.hibernate.collection.internal.PersistentBag.size(PersistentBag.java:242) javax.faces.model.ListDataModel.isRowAvailable(ListDataModel.java:110) javax.faces.model.ListDataModel.setRowIndex(ListDataModel.java:185) javax.faces.model.ListDataModel.setWrappedData(ListDataModel.java:220) javax.faces.model.ListDataModel.<init>(ListDataModel.java:79) com.sun.faces.facelets.component.UIRepeat.getDataModel(UIRepeat.java:257) com.sun.faces.facelets.component.UIRepeat.setIndex(UIRepeat.java:443) com.sun.faces.facelets.component.UIRepeat.process(UIRepeat.java:482) com.sun.faces.facelets.component.UIRepeat.encodeChildren(UIRepeat.java:984) javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779) javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) org.primefaces.component.datatable.DataTableRenderer.encodeCell(DataTableRenderer.java:823) org.primefaces.component.datatable.DataTableRenderer.encodeRow(DataTableRenderer.java:784) org.primefaces.component.datatable.DataTableRenderer.encodeRows(DataTableRenderer.java:699) org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:654) org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:249) org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:211) org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:83) javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786) javax.faces.render.Renderer.encodeChildren(Renderer.java:168) javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:70) org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:57) org.primefaces.component.fieldset.FieldsetRenderer.encodeContent(FieldsetRenderer.java:94) org.primefaces.component.fieldset.FieldsetRenderer.encodeMarkup(FieldsetRenderer.java:76) org.primefaces.component.fieldset.FieldsetRenderer.encodeEnd(FieldsetRenderer.java:47) javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786) javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402) com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125) javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288) com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:98) org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62) br.com.xti.ouvidoria.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:22)
O arquivo principal.xhtml do manterunidade
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition template="../templates/template.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<ui:define name="bread">
<h:form>
<p:breadCrumb>
<p:menuitem value="Home"/>
<p:menuitem value="Cadastro de Unidade"/>
</p:breadCrumb>
</h:form>
</ui:define>
<ui:define name="content">
<p:fieldset legend="Cadastro de Unidade" style="max-width: 1190px; margin: 0 auto">
<h:form id="formUnidades">
<p:dataTable id="tabela1"
widgetVar="tabela"
value="#{mBUnidade.todos}"
paginator="true" rows="5"
rowsPerPageTemplate="5,10,15"
paginatorPosition="bottom"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
var="item"
rowStyleClass="#{empty rowIx or rowIx mod 2 ne 0 ? 'even-row' : 'odd-row'}" rowIndexVar="rowIx">
<f:facet name="header">
<p:commandButton id="cbNovo"
type="button"
value="Novo"
onclick="dlgNovoUnidade.show();"
style="float: left"/>
</f:facet>
<p:column filterBy="#{item.nmUnidade}" filterMatchMode="contains" sortBy="#{item.nmUnidade}">
<f:facet name="header">
<h:outputText value="Nome da Unidade"/>
</f:facet>
<h:outputText value="#{item.nmUnidade}"/>
</p:column>
<p:column filterBy="#{item.sgUnidade}" filterMatchMode="contains" sortBy="#{item.sgUnidade}">
<f:facet name="header">
<h:outputText value="Sigla da Unidade"/>
</f:facet>
<h:outputText value="#{item.sgUnidade}"/>
</p:column>
<p:column >
<f:facet name="header">
<h:outputText value="Classificações"/>
</f:facet>
<ui:repeat value="#{item.tbClassificacaoCollection}" var="c">
<li>#{c.dsClassificacao}</li>
</ui:repeat>
</p:column>
<p:column filterBy="#{item.eeEmail}" filterMatchMode="contains" sortBy="#{item.eeEmail}">
<f:facet name="header">
<h:outputText value="E-mail"/>
</f:facet>
<h:outputText value="#{item.eeEmail}"/>
</p:column>
<p:column style="width: 80px">
<f:facet name="header">
<h:outputText value="Editar"/>
</f:facet>
<p:commandButton id="cbViewEditar"
icon="ui-icon-pencil"
title="Editar"
update=":frmEditarUnidades"
oncomplete="dlgEditarUnidade.show();"
>
<f:setPropertyActionListener value="#{item}" target="#{mBUnidade.unidade}" />
</p:commandButton>
</p:column>
<p:column style="width: 40px">
<f:facet name="header">
<h:outputLabel value="Excluir"/>
</f:facet>
<p:commandButton icon="ui-icon-close" onclick="dlgNaoPodeExcluir.show();"
rendered="#{not mBUnidade.mostrarBotaoExcluir(item) and item.idUnidade != 1}" />
<p:commandButton id="cbViewExcluir" onclick="dlgExcluirUnidade.show();"
icon="ui-icon-close" title="Excluir"
rendered="#{mBUnidade.mostrarBotaoExcluir(item)}">
<f:setPropertyActionListener value="#{item}" target="#{mBUnidade.unidade}" />
</p:commandButton>
</p:column>
</p:dataTable>
</h:form>
<!-- Caixa de diálogo de exclusão -->
<p:confirmDialog id="dialogoExcluirUnidades" message="Confirmar Operação?"
header="Excluir Unidade" severity="alert"
widgetVar="dlgExcluirUnidade" appendToBody="true" closable="true" width="300">
<h:form id="frmExcluirUnidades">
<p:panelGrid style="width: 100%">
<p:row>
<p:column style="text-align: center; width: 100%" styleClass="ui-widget-header">
<p:commandButton id="cbExcluirContinuar" value="Sim"
update=":formUnidades"
oncomplete="dlgExcluirUnidade.hide();tabela.filter()"
actionListener="#{mBUnidade.remover}"/>
<p:commandButton id="cbExcluirCancelar" value="Não" onclick="dlgExcluirUnidade.hide()" type="button" />
</p:column>
</p:row>
</p:panelGrid>
</h:form>
</p:confirmDialog>
<!-- Caixa de diálogo de inclusão -->
<p:dialog id="dialogoNovoUnidades" widgetVar="dlgNovoUnidade" modal="true" header="Nova Unidade"
resizable="false" appendToBody="true" closable="true">
<h:form id="frmNovoUnidades">
<p:messages id="mNovoMessages" redisplay="false" />
<p:panelGrid columns="2" style="width: 100%">
<h:outputLabel value="Nome da Unidade:* " />
<p:inputText value="#{mBUnidade.unidadeNovo.nmUnidade}" required="true" requiredMessage="Digite a Nome da Unidade" title="Informe o Nome da Unidade " size="50" />
<h:outputLabel value="Sigla da Unidade:* " />
<p:inputText value="#{mBUnidade.unidadeNovo.sgUnidade}" required="true" requiredMessage="Digite a Sigla da Unidade" title="Informe a Sigla da Unidade " size="50" />
<h:outputLabel value="E-mail da Unidade:* " />
<p:inputText value="#{mBUnidade.unidadeNovo.eeEmail}" required="true" requiredMessage="Digite o E-mail da Unidade" title="Informe o E-mail da Unidade " size="50">
<f:validator binding="#{emailValidator}" />
</p:inputText>
<h:outputText value="Permitir qualquer interlocutor realizar encaminhamento para outras unidades"/>
<p:selectBooleanCheckbox value="#{mBUnidade.unidadeNovo.encaminharOutrasAreas}" />
<h:outputText value="Permitir qualquer analista RETORNAR trâmite para Ouvidoria"/>
<p:selectBooleanCheckbox value="#{mBUnidade.unidadeNovo.retornoOuvidoria}" />
<h:outputText value="Unidade Vinculada?"/>
<p:selectBooleanCheckbox value="#{mBUnidade.unidadeNovo.vinculada}" />
</p:panelGrid>
<p:panelGrid style="width: 100%">
<p:row>
<p:column style="text-align: center; width: 100%" styleClass="ui-widget-header">
<p:commandButton id="cbNovoSalvar" value="Salvar"
actionListener="#{mBUnidade.cadastrar}"
oncomplete="if (!args.validationFailed){dlgNovoUnidade.hide()}"
update=":formUnidades,frmNovoUnidades"
ajax="true">
<p:resetInput target="frmNovoUnidades" />
</p:commandButton>
<p:spacer width="20px"/>
<p:commandButton value="Fechar" immediate="true" update="frmNovoUnidades" onclick="dlgNovoUnidade.hide()">
<p:resetInput target="frmNovoUnidades" />
</p:commandButton>
</p:column>
</p:row>
</p:panelGrid>
</h:form>
</p:dialog>
<!-- Caixa de diálogo de edição -->
<p:dialog id="dialogoEditarUnidades" widgetVar="dlgEditarUnidade" header="Editar Unidade"
resizable="false" modal="true" appendToBody="true" closable="true">
<h:form id="frmEditarUnidades">
<p:messages id="mEditarMessages" redisplay="false" />
<p:panelGrid columns="2" style="width: 100%">
<h:outputLabel value="Nome da Unidade:* " />
<p:inputText value="#{mBUnidade.unidade.nmUnidade}" required="true" requiredMessage="Digite o Nome da Undidade" title="Informe o Nome da Undidade " size="45" disabled="#{mBUnidade.unidade.idUnidade == 1}"/>
<h:outputLabel value="Sigla da Unidade:* " />
<p:inputText value="#{mBUnidade.unidade.sgUnidade}" required="true" requiredMessage="Digite Sigla da Unidade" title="Informe a Sigla da Unidade " size="45" disabled="#{mBUnidade.unidade.idUnidade == 1}"/>
<h:outputLabel value="E-mail da Unidade:* " />
<p:inputText value="#{mBUnidade.unidade.eeEmail}" size="50" required="true" requiredMessage="Digite o E-mail da Unidade" title="Informe o E-mail da Unidade " >
<f:validator binding="#{emailValidator}" />
</p:inputText>
<h:outputText value="Permitir qualquer interlocutor realizar encaminhamento para outras unidades"/>
<p:selectBooleanCheckbox value="#{mBUnidade.unidade.encaminharOutrasAreas}" />
<h:outputText value="Permitir qualquer analista RETORNAR trâmite para Ouvidoria"/>
<p:selectBooleanCheckbox value="#{mBUnidade.unidade.retornoOuvidoria}" />
<h:outputText value="Unidade Vinculada?"/>
<p:selectBooleanCheckbox value="#{mBUnidade.unidade.vinculada}" />
</p:panelGrid>
<p:panelGrid style="width: 100%">
<p:row>
<p:column style="text-align: center; width: 100%" styleClass="ui-widget-header">
<p:commandButton id="cbEditarSalvar" value="Salvar"
actionListener="#{mBUnidade.alterar}"
oncomplete="if (!args.validationFailed){dlgEditarUnidade.hide()}"
update=":formUnidades,frmEditarUnidades">
<p:resetInput target="frmEditarUnidades" />
</p:commandButton>
<p:spacer width="20px"/>
<p:commandButton value="Fechar" immediate="true" update="frmEditarUnidades" onclick="dlgEditarUnidade.hide()">
<p:resetInput target="frmEditarUnidades" />
</p:commandButton>
</p:column>
</p:row>
</p:panelGrid>
</h:form>
</p:dialog>
<!-- Caixa de diálogo Não pode excluir -->
<p:confirmDialog id="dialogoNaoPodeExcluir"
message="Esta unidade não pode ser deletada pois existem encaminhamentos realizados para ela."
header="Excluir Unidade" severity="alert"
widgetVar="dlgNaoPodeExcluir" appendToBody="true" closable="true" width="315">
<p:panelGrid style="width: 100%">
<p:row>
<p:column style="text-align: center; width: 100%" styleClass="ui-widget-header">
<p:commandButton id="cbExcluirCancelar" value="Fechar" onclick="dlgNaoPodeExcluir.hide()" type="button" />
</p:column>
</p:row>
</p:panelGrid>
</p:confirmDialog>
</p:fieldset>
</ui:define>
</ui:composition>
O UnidadeDAO.java
package br.com.xti.ouvidoria.dao;
import java.util.Collection;
import java.util.HashMap;
import javax.ejb.Stateless;
import br.com.xti.ouvidoria.model.TbManifestacao;
import br.com.xti.ouvidoria.model.TbUnidade;
/**
* @author renato
*/
@Stateless
public class UnidadeDAO extends AbstractDAO<TbUnidade> {
public UnidadeDAO() {
super(TbUnidade.class);
}
@Override
public String getNomeEntidade() {
return "Unidade";
}
public Collection<TbUnidade> getPorEncaminhamentoManifestacao(TbManifestacao idManifestacao) {
Collection<TbUnidade> retorno = null;
try {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("idManifestacao", idManifestacao);
retorno = selectList("SELECT t.idUnidadeRecebeu FROM TbEncaminhamento t WHERE t.idManifestacao = :idManifestacao", map);
} catch (Exception e) {
e.printStackTrace();
}
return retorno;
}
}
O controller MBUnidade.java:
package br.com.xti.ouvidoria.controller;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import org.hibernate.Hibernate;
import br.com.xti.ouvidoria.dao.ClassificacaoDAO;
import br.com.xti.ouvidoria.dao.UnidadeDAO;
import br.com.xti.ouvidoria.helper.ValidacaoHelper;
import br.com.xti.ouvidoria.model.TbUnidade;
import br.com.xti.ouvidoria.model.enums.UnidadeEnum;
/**
* @author renato
*/
@SuppressWarnings("serial")
@ManagedBean(name = "mBUnidade")
@ViewScoped
public class MBUnidade implements Serializable {
@EJB
private UnidadeDAO dao;
@EJB
private ClassificacaoDAO classificacaoDAO;
private TbUnidade unidade = new TbUnidade();
private TbUnidade unidadeNovo = new TbUnidade();
public List<TbUnidade> getTodos() {
Hibernate.initialize(dao);
List<TbUnidade> list = dao.findAll();
Collections.sort(list);
return list;
}
public void cadastrar(ActionEvent actionEvent) {
try {
getDao().create(getUnidadeNovo());
MensagemFaceUtil.info("Inclusão realizada com sucesso.", "");
} catch (Exception e) {
if (e.getMessage().contains("UNIQUE")) {
MensagemFaceUtil.erro("Erro", "Já existe uma unidade com este nome ou sigla");
} else {
MensagemFaceUtil.erro("Erro", "Ocorreu um erro. Entre em contato com o administrador do sistema.");
}
}
limpar();
}
public void alterar(ActionEvent actionEvent) {
try {
if (getUnidade() != null && getUnidade().getIdUnidade() != null) {
getDao().edit(getUnidade());
MensagemFaceUtil.info("Alteração realizada com sucesso.", "");
}
} catch (Exception e) {
if (e.getMessage().contains("UNIQUE")) {
MensagemFaceUtil.erro("Erro", "Já existe uma unidade com este nome ou sigla");
} else {
MensagemFaceUtil.erro("Erro", "Ocorreu um erro. Entre em contato com o administrador do sistema.");
}
}
limpar();
}
public void remover(ActionEvent actionEvent) {
try {
if (getUnidade() != null && getUnidade().getIdUnidade() != null) {
getDao().remove(getUnidade());
MensagemFaceUtil.info("Exclusão realizada com sucesso.", "");
}
} catch (Exception e) {
e.printStackTrace();
MensagemFaceUtil.erro("Erro", "Ocorreu um erro. Entre em contato com o administrador do sistema.");
}
limpar();
}
public boolean mostrarBotaoExcluir(TbUnidade u) {
if(u.getIdUnidade() == UnidadeEnum.OUVIDORIA.getId()) {
return false;
}
if(ValidacaoHelper.isNotEmpty(u.getTbEncaminhamentoCollection().size())) {
return false;
}
return true;
}
private void limpar() {
unidade = new TbUnidade();
unidadeNovo = new TbUnidade();
}
public UnidadeDAO getDao() {
return dao;
}
public TbUnidade getUnidade() {
return unidade;
}
public void setUnidade(TbUnidade unidade) {
this.unidade = unidade;
}
public TbUnidade getUnidadeNovo() {
return unidadeNovo;
}
public void setUnidadeNovo(TbUnidade unidadeNovo) {
this.unidadeNovo = unidadeNovo;
}
}
O model TbUnidade.java:
package br.com.xti.ouvidoria.model;
import static br.com.xti.ouvidoria.model.enums.BooleanEnum.NAO;
import static br.com.xti.ouvidoria.model.enums.BooleanEnum.SIM;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import br.com.xti.ouvidoria.model.enums.UnidadeEnum;
/**
* @author samuel.guimaraes
*/
@Entity
@Table(name = "tbUnidade")
@NamedQueries({
@NamedQuery(name = "TbUnidade.findAll", query = "SELECT t FROM TbUnidade t"),
@NamedQuery(name = "TbUnidade.findByIdUnidade", query = "SELECT t FROM TbUnidade t WHERE t.idUnidade = :idUnidade"),
@NamedQuery(name = "TbUnidade.findByNmUnidade", query = "SELECT t FROM TbUnidade t WHERE t.nmUnidade = :nmUnidade"),
@NamedQuery(name = "TbUnidade.findBySgUnidade", query = "SELECT t FROM TbUnidade t WHERE t.sgUnidade = :sgUnidade"),
@NamedQuery(name = "TbUnidade.findByEeEmail", query = "SELECT t FROM TbUnidade t WHERE t.eeEmail = :eeEmail")})
public class TbUnidade implements Serializable, Comparable<TbUnidade> {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idUnidade")
private Integer idUnidade;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 100)
@Column(name = "nmUnidade")
private String nmUnidade;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 10)
@Column(name = "sgUnidade")
private String sgUnidade;
@Size(max = 200)
@Column(name = "eeEmail")
private String eeEmail;
@Basic(optional = true)
@Size(min = 1, max = 1)
@Column(name = "stRetornoOuvidoria")
private String stRetornoOuvidoria;
@Size(min = 1, max = 1)
@Column(name = "stVinculada")
private String stVinculada;
@Size(min = 1, max = 1)
@Column(name = "stEncaminharOutrasAreas")
private String stEncaminharOutrasAreas;
@OneToMany(mappedBy = "idUnidadeEnvio")
private Collection<TbTramite> tbTramiteCollection = new ArrayList<>();
@OneToMany(mappedBy = "idUnidade")
private Collection<TbUnidadexManifestacao> tbUnidadexManifestacaoCollection = new ArrayList<>();
@OneToMany(mappedBy = "idUnidade")
private Collection<TbUsuario> tbUsuarioCollection = new ArrayList<>();
@OneToMany(mappedBy = "idUnidadeRecebeu")
private Collection<TbEncaminhamento> tbEncaminhamentoCollection = new ArrayList<>();
@OneToMany
@JoinTable(
name="TbManifestacao_UnidadeAreaSolucionadora",
joinColumns={@JoinColumn(name="idUnidade", referencedColumnName="idUnidade")},
inverseJoinColumns={@JoinColumn(name="idManifestacao", referencedColumnName="idManifestacao")})
private Collection<TbManifestacao> tbManifestacaoCollection = new ArrayList<>();
@OneToMany
@JoinTable(
name="tbClassificacao_tbUnidade",
joinColumns={@JoinColumn(name="tbUnidadeCollection_idUnidade", referencedColumnName="idUnidade")},
inverseJoinColumns={@JoinColumn(name="TbClassificacao_idClassificacao", referencedColumnName="idClassificacao")})
private Collection<TbClassificacao> tbClassificacaoCollection = new ArrayList<>();
public TbUnidade() {
}
public TbUnidade(Integer idUnidade) {
this.idUnidade = idUnidade;
}
public TbUnidade(Integer idUnidade, String nmUnidade, String sgUnidade) {
this.idUnidade = idUnidade;
this.nmUnidade = nmUnidade;
this.sgUnidade = sgUnidade;
}
public Integer getIdUnidade() {
return idUnidade;
}
public void setIdUnidade(Integer idUnidade) {
this.idUnidade = idUnidade;
}
public String getNmUnidade() {
return nmUnidade;
}
public void setNmUnidade(String nmUnidade) {
this.nmUnidade = nmUnidade;
}
public String getSgUnidade() {
return sgUnidade;
}
public void setSgUnidade(String sgUnidade) {
this.sgUnidade = sgUnidade;
}
public String getEeEmail() {
return eeEmail;
}
public void setEeEmail(String eeEmail) {
this.eeEmail = eeEmail;
}
public Collection<TbTramite> getTbTramiteCollection() {
return tbTramiteCollection;
}
public void setTbTramiteCollection(Collection<TbTramite> tbTramiteCollection) {
this.tbTramiteCollection = tbTramiteCollection;
}
public Collection<TbUnidadexManifestacao> getTbUnidadexManifestacaoCollection() {
return tbUnidadexManifestacaoCollection;
}
public void setTbUnidadexManifestacaoCollection(Collection<TbUnidadexManifestacao> tbUnidadexManifestacaoCollection) {
this.tbUnidadexManifestacaoCollection = tbUnidadexManifestacaoCollection;
}
public Collection<TbManifestacao> getTbManifestacaoCollection() {
return tbManifestacaoCollection;
}
public void setTbManifestacaoCollection(Collection<TbManifestacao> tbManifestacaoCollection) {
this.tbManifestacaoCollection = tbManifestacaoCollection;
}
public Collection<TbUsuario> getTbUsuarioCollection() {
return tbUsuarioCollection;
}
public void setTbUsuarioCollection(Collection<TbUsuario> tbUsuarioCollection) {
this.tbUsuarioCollection = tbUsuarioCollection;
}
public Collection<TbEncaminhamento> getTbEncaminhamentoCollection() {
return tbEncaminhamentoCollection;
}
public void setTbEncaminhamentoCollection(Collection<TbEncaminhamento> tbEncaminhamentoCollection) {
this.tbEncaminhamentoCollection = tbEncaminhamentoCollection;
}
public Collection<TbClassificacao> getTbClassificacaoCollection() {
return tbClassificacaoCollection;
}
public void setTbClassificacaoCollection(
Collection<TbClassificacao> tbClassificacaoCollection) {
this.tbClassificacaoCollection = tbClassificacaoCollection;
}
private String getEntidade() {
return "Unidade";
}
private String getDescricao() {
return nmUnidade;
}
public String getStRetornoOuvidoria() {
return stRetornoOuvidoria;
}
public void setStRetornoOuvidoria(String stRetornoOuvidoria) {
this.stRetornoOuvidoria = stRetornoOuvidoria;
}
public boolean isRetornoOuvidoria() {
return SIM.getId().equals(stRetornoOuvidoria);
}
public void setRetornoOuvidoria(boolean data) {
this.stRetornoOuvidoria = data ? SIM.getId() : NAO.getId();
}
public String getStVinculada() {
return stVinculada;
}
public void setStVinculada(String stVinculada) {
this.stVinculada = stVinculada;
}
public boolean isVinculada() {
return SIM.getId().equals(stVinculada);
}
public void setVinculada(boolean data) {
this.stVinculada = data ? SIM.getId() : NAO.getId();
}
public String getStEncaminharOutrasAreas() {
return stEncaminharOutrasAreas;
}
public void setStEncaminharOutrasAreas(String stEncaminharOutrasAreas) {
this.stEncaminharOutrasAreas = stEncaminharOutrasAreas;
}
public boolean isEncaminharOutrasAreas() {
return SIM.getId().equals(stEncaminharOutrasAreas);
}
public void setEncaminharOutrasAreas(boolean data) {
this.stEncaminharOutrasAreas = data ? SIM.getId() : NAO.getId();
}
@Override
public int hashCode() {
int hash = 0;
hash += (idUnidade != null ? idUnidade.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
if (!(object instanceof TbUnidade)) {
return false;
}
TbUnidade other = (TbUnidade) object;
if ((this.idUnidade == null && other.idUnidade != null)
|| (this.idUnidade != null && !this.idUnidade
.equals(other.idUnidade))) {
return false;
}
return true;
}
@Override
public String toString() {
return String.format("%s > %s", getEntidade(), getDescricao());
}
@Override
public int compareTo(TbUnidade o) {
return getNmUnidade().toUpperCase().compareTo(o.getNmUnidade().toUpperCase());
}
public String getNomeFormatado() {
String name = null;
if(getIdUnidade() == UnidadeEnum.OUVIDORIA.getId()) {
name = "Ouvidoria";
} else {
name = String.format("%s - %s", getSgUnidade(), getNmUnidade());
}
return name;
}
}