Debug pq entra varias vezes na mesma rotina?

3 respostas
E

Pessoal,

estou dando manutencação em um sistema, e notei algo estranho , estou debugando o codigo para entender melhor o que o sistema faz , e por exemplo coloquei um breakpoint na linha (return itemAtual1)

public ItemOrcamentoHelper getItemAtual1() {
		return itemAtual1;
	}

e percebi que ele entra nesta rotina por exemplo 3 vezes, antes de apresentar a tela , alguem ja passou por isso ???

segue abaixo meu jspx e minha classe ManterItemOrcamentoMB

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:t="http://myfaces.apache.org/tomahawk"
	xmlns:cqa="http://www.cqa.com.br"
	xmlns:rich="http://richfaces.org/rich"
	xmlns:a4j="http://richfaces.org/a4j"
	xmlns:f="http://java.sun.com/jsf/core"
	version="2.0">
    <ui:composition>
    	<h:form id="itensOrcamentoForm">
    		<div style="display: none">
    			<h:commandButton value="#{messages['botao.salvar']}" action="#{ManterItemOrcamentoMB.confirmar}"
	                styleClass="saveButton mainButton" />
    		</div>

	        <a4j:keepAlive beanName="ManterItemOrcamentoMB" />
	        <a4j:keepAlive beanName="ManterOrcamentoMB" />
	        <a4j:log/>

	        <fieldset>
	            <ul>
	                <li class="tabOrcamento">
	                    <rich:dataTable styleClass="richDataTable" rowClasses="lineOdd,lineEven" rowKeyVar="indice"
	                    	rendered="#{ManterItemOrcamentoMB.itens.rowCount > 0}" value="#{ManterItemOrcamentoMB.itens}"
	                    	var="itemOrcamento">
	                        <f:facet name="header">
	                            <rich:columnGroup>
	                                <rich:column width="5%">
	                                    <h:outputText value="#{messages['label.numero']}" />
	                                </rich:column>
	                                <rich:column style="width:50%">
	                                    <h:outputText value="#{messages['label.descricao']}" />
	                                </rich:column>
	                                <rich:column style="width:20%">
	                                    <h:outputText value="#{messages['label.matriz']}" />
	                                </rich:column>
	                                <rich:column style="width:10%"/>
	                            </rich:columnGroup>
	                        </f:facet>
	                        <rich:column>
	                            <h:outputText value="#{indice + 1}" />
	                        </rich:column>
	                        <rich:column>
	                            <h:outputText value="#{itemOrcamento.descricao}" />
	                        </rich:column>
	                        <rich:column>
	                            <h:outputText value="#{itemOrcamento.matriz.nome}" />
	                        </rich:column>
	                        <rich:column>
	                            <div class="collCenter coll100">
	                                <h:commandLink action="#{ManterItemOrcamentoMB.alterarItemOrcamento}"
	                                	styleClass="imgLink" title="#{messages['botao.alterar']}">
	                                    <h:graphicImage url="/assets/images/edit-content.png" />
	                                </h:commandLink>
	                                <h:commandLink action="#{ManterItemOrcamentoMB.excluirItemOrcamento}"
	                                	styleClass="imgLink" title="#{messages['botao.excluir']}">
	                                    <h:graphicImage url="/assets/images/helper-reset.png" />
	                                </h:commandLink>
	                            </div>
	                        </rich:column>
	                    </rich:dataTable>
	                </li>
	                <li>
	                    <rich:panel>
	                        <f:facet name="header">
	                            <h:outputText value="#{messages['label.itemOrcamento']}" />
	                        </f:facet>
	                        <ul>
	                            <li class="sentenceInput required">
	                                <h:outputLabel value="#{messages['label.descricao']}" />
	                                <h:inputText styleClass="sentenceInput" value="#{ManterItemOrcamentoMB.itemAtual.descricao}"
	                                	maxlength="100" />
	                            </li>
	                            <li class="noWrap required spaceRight">
			                		<h:outputLabel value="#{messages['label.matriz']}" />
			                		<h:inputText value="#{ManterItemOrcamentoMB.matriz.nome}" readonly="true" size="60"/>
	                                <h:commandLink action="#{ManterItemOrcamentoMB.consultarMatriz}"
	                                	styleClass="imgLink" title="#{messages['botao.consultar']}">
	                                    <h:graphicImage url="/assets/images/search-button.png" />
	                                </h:commandLink>
			                    </li>
	                            <li class="required noWrap">
	                                <h:outputLabel value="#{messages['label.tipoAmostra']}" />
	                                <h:selectOneMenu id="tipoAmostra" value="#{ManterItemOrcamentoMB.itemAtual.tipoAmostra}"
	                                	converter="#{ManterItemOrcamentoMB.tipoAmostraConverter}">
	                                    <f:selectItems value="#{ManterItemOrcamentoMB.tipoAmostraItems}" />
	                                    <a4j:support ajaxSingle="true" event="onchange" reRender="panelTotal" />
	                                </h:selectOneMenu>
	                            </li>
	                            <li class="required noWrap">
	                                <h:outputLabel value="#{messages['label.numeroAmostras']}" />
	                                <h:inputText id="numAmostras" value="#{ManterItemOrcamentoMB.itemAtual1.numeroAmostras}"
	                                	maxlength="3" converter="IntegerConverter">
	                                    <f:attribute name="fieldLabel" value="#{messages['label.numeroAmostras']}" />
	                                    <a4j:support event="onchange" reRender="panelTotal" />
	                                </h:inputText>
	                            </li>
	                            <li class="panelEspecificacoes">
	                                <h:outputLabel value="#{messages['label.especificacao']}" />
	                                <rich:panel id="panelEspecificacoes">
	                                    <h:dataTable value="#{ManterItemOrcamentoMB.especificacoes}" var="especificacao">
	                                        <h:column>
	                                            <h:selectBooleanCheckbox value="#{especificacao.selecionado}">
	                                                <a4j:support event="onclick" ajaxSingle="true"
	                                                	action="#{ManterItemOrcamentoMB.selecionarEspecificacao}"
	                                                	reRender="panelEspecificacoes, panelAnalises,
	                                                		totalEnsaiosContratados, panelPerguntas, panelTotal" />
	                                            </h:selectBooleanCheckbox>
	                                        </h:column>
	                                        <h:column>
	                                            <h:outputText value="#{especificacao.objeto.nome}" />
	                                        </h:column>
	                                    </h:dataTable>
	                                </rich:panel>
	                            </li>
	                            <li id="panelAnalisesContainer">
	                                <rich:panel id="panelAnalises">
	                                    <f:facet name="header">
	                                        <h:outputText value="#{messages['label.analisesSeremExecutadas']}" />
	                                    </f:facet>
	                                    <ul>
	                                        <li class="noWrap spaceRight funtionalGroup">
	                                            <h:outputLabel value="#{messages['label.ensaio']}" />
	                                            <h:inputText value="#{ManterItemOrcamentoMB.filtro.nomeEnsaio}" />
	                                            <h:outputLabel style="margin-left:10px" value="#{messages['label.grupoFuncional']}" />
	                                            <h:selectOneMenu value="#{ManterItemOrcamentoMB.filtro.grupoFuncional}"
	                                            	converter="#{ManterItemOrcamentoMB.grupoFuncionalConverter}">
	                                                <f:selectItems value="#{ManterItemOrcamentoMB.gruposFuncionais}" />
	                                            </h:selectOneMenu>
	                                        </li>
	                                        <li>
	                                            <h:outputLabel style="margin-top:5px" for="somenteSelecionados"
	                                            	value="#{messages['label.exibirSomenteSelecionados']}" />
	                                            <h:selectBooleanCheckbox id="somenteSelecionados"
	                                            	value="#{ManterItemOrcamentoMB.filtro.exibirSomenteSelecionados}" />
	                                            <a4j:commandButton style="margin-left:195px;" styleClass="filtersButton inlineButton"
	                                            	action="#{ManterItemOrcamentoMB.executarFiltro}" reRender="analises, panelAnalises"
	                                            	value="#{messages['botao.filtrar']}" />
	                                        </li>
	                                        <li>
	                                            <a4j:commandButton style="background-color: transparent; border: none;"
	                                            	styleClass="removeButton inlineButton" action="#{ManterItemOrcamentoMB.desmarcarTodos}"
	                                            	reRender="analises, panelAnalises" value="#{messages['botao.desmarcarTodos']}"
	                                            	title="#{messages['botao.desmarcarTodos']}" />
	                                            <rich:dataTable rows="100" styleClass="richDataTable" rowClasses="lineOdd,lineEven"
	                                            	footerClass="paginador" rendered="#{ManterItemOrcamentoMB.analisesExibidas.rowCount > 0}"
	                                            	value="#{ManterItemOrcamentoMB.analisesExibidas}" var="analise" id="analises">
	                                                <f:facet name="header">
	                                                    <rich:columnGroup>
	                                                        <rich:column/>
	                                                        <rich:column>
	                                                            <h:outputText value="#{messages['label.ensaios']}" />
	                                                        </rich:column>
	                                                        <rich:column>
	                                                            <h:outputText value="#{messages['label.metodos']}" />
	                                                        </rich:column>
	                                                        <rich:column>
	                                                            <h:outputText value="#{messages['label.unidade']}" />
	                                                        </rich:column>
	                                                        <rich:column>
	                                                            <h:outputText value="#{messages['label.LD']}" />
	                                                        </rich:column>
	                                                        <rich:column>
	                                                            <h:outputText value="#{messages['label.LQ']}" />
	                                                        </rich:column>
	                                                        <rich:column>
	                                                            <h:outputText value="#{messages['label.preco']}" />
	                                                        </rich:column>
	                                                        <rich:column>
	                                                            <h:outputText value="#{messages['label.prazo']}" />
	                                                        </rich:column>
	                                                        <rich:column>
	                                                        </rich:column>
	                                                    </rich:columnGroup>
	                                                </f:facet>
	                                                <rich:column styleClass="collCenter" width="15">
	                                                    <h:selectBooleanCheckbox value="#{analise.selecionado}" id="checkSelecionarAnalise"
	                                                    	disabled="#{analise.ensaiosAlocados}">
	                                                        <a4j:support ajaxSingle="true" action="#{ManterItemOrcamentoMB.selecionarAnalise}"
	                                                        	event="onclick" reRender="totalEnsaiosContratados, panelTotal, MsgAnalisePanel" />
	                                                    </h:selectBooleanCheckbox>
	                                                </rich:column>
	                                                <rich:column>
	                                                    <h:outputText value="#{analise.ensaio.nome}" />
	                                                </rich:column>
	                                                <rich:column>
	                                                    <h:selectOneMenu value="#{analise.metodo}" disabled="#{analise.ensaiosAlocados}"
	                                                    	converter="#{ManterItemOrcamentoMB.metodosConverter}">
	                                                        <t:selectItems value="#{analise.metodosDisponiveis}" var="metodo"
	                                                        	itemLabel="#{metodo.nome}" itemValue="#{metodo}" />
	                                                        <a4j:support action="#{ManterItemOrcamentoMB.trocarMetodo}"
	                                                        	ajaxSingle="true" event="onchange" reRender="panelAnalises, panelTotal" />
	                                                    </h:selectOneMenu>
	                                                </rich:column>
	                                                <rich:column>
	                                                    <h:selectOneMenu value="#{analise.unidade}" disabled="#{analise.ensaiosAlocados}"
	                                                    	converter="#{ManterItemOrcamentoMB.unidadeConverter}">
	                                                        <t:selectItems value="#{analise.unidade.grupo.unidades}" var="unidade"
	                                                        	itemLabel="#{unidade.descricao}" itemValue="#{unidade}" />
	                                                        <a4j:support ajaxSingle="true" event="onchange" reRender="panelAnalises, panelTotal" />
	                                                    </h:selectOneMenu>
	                                                </rich:column>
	                                                <rich:column>
	                                                    <h:outputText value="#{analise.ld}" />
	                                                </rich:column>
	                                                <rich:column>
	                                                    <h:outputText value="#{analise.lq}" />
	                                                </rich:column>
	                                                <rich:column>
	                                                    <h:outputText value="#{analise.preco}" />
	                                                </rich:column>
	                                                <rich:column>
	                                                    <h:outputText value="#{analise.prazo}" />
	                                                </rich:column>
	                                                <rich:column width="20" styleClass="collCenter">
	                                                    <a4j:commandButton reRender="panelAnalises" ajaxSingle="true"
	                                                    	action="#{ManterItemOrcamentoMB.copiarAnalise}" title="#{messages['botao.copiar']}"
	                                                    	value="" styleClass="btCopiar" />
	                                                </rich:column>
	                                                <f:facet name="footer">
	                                                    <rich:datascroller ajaxSingle="true" for="analises" />
	                                                </f:facet>
	                                            </rich:dataTable>
	                                        </li>
	                                    </ul>
	                                </rich:panel>
	                                <a4j:outputPanel id="totalEnsaiosContratados">
	                                    <ul>
	                                        <li class="noWrap spaceRight sentenceLabel labelTotal">
	                                            <h:outputLabel value="#{messages['label.precoTotalEnsaiosContratados']}" />
	                                            <h:inputText styleClass="readOnly" readonly="true" id="totalAnalisesContratadas"
	                                            	value="#{ManterItemOrcamentoMB.itemAtual1.totalPorAmostra}" />
	                                        </li>
	                                        <li class="readOnly labelTotal">
	                                            <h:outputLabel value="#{messages['label.prazoTotalAnalise']}" />
	                                            <h:inputText styleClass="readOnly" readonly="true" id="prazoTotalAnalise"
	                                            	value="#{ManterItemOrcamentoMB.prazoItemOrcamento}" />
	                                        </li>
	                                    </ul>
	                                </a4j:outputPanel>
	                            </li>
	                            <li>
	                                <rich:panel id="panelPerguntas">
	                                    <rich:dataTable id="perguntas" styleClass="richDataTable" rowClasses="lineOdd,lineEven"
	                                    	rendered="#{ManterItemOrcamentoMB.exibirQuestoes}"
	                                    	value="#{ManterItemOrcamentoMB.itemAtual.questionario.respostas}" var="resposta">
	                                        <f:facet name="header">
	                                            <rich:columnGroup>
	                                                <rich:column width="50%">
	                                                    <h:outputText value="#{messages['label.pergunta']}" />
	                                                </rich:column>
	                                                <rich:column>
	                                                    <h:outputText value="#{messages['label.resposta']}" />
	                                                </rich:column>
	                                            </rich:columnGroup>
	                                        </f:facet>
	                                        <rich:column>
	                                            <h:outputText rendered="#{resposta.pergunta.respostaObrigatoria}"
	                                            	style="color:#CC0000;margin-right:5px;" value="*" />
	                                            <h:outputText value="#{resposta.pergunta.texto}" />
	                                        </rich:column>
	                                        <rich:column>
	                                            <h:inputText value="#{resposta.texto}" style="width:98%" maxlength="255" />
	                                        </rich:column>
	                                    </rich:dataTable>
	                                </rich:panel>
	                            </li>
	                            <li>
	                                <rich:panel id="itensOrcamentoPanelAjusteFinanceiro" rendered="#{ManterItemOrcamentoMB.exibirPainelAjusteFinanceiro}">
	                                    <f:facet name="header">
	                                        <h:outputText value="#{messages['label.descontoAcrescimo']}" />
	                                    </f:facet>
	                                    <ul>
	                                        <li class="noWrap">
	                                            <h:selectOneMenu value="#{ManterItemOrcamentoMB.itemAtual.ajusteFinanceiro.tipoAjusteFinanceiro}">
	                                                <f:selectItems value="#{ManterOrcamentoMB.tiposAjusteFinanceiro}" />
	                                                <a4j:support ajaxSingle="true" event="onchange" reRender="panelTotal" />
	                                            </h:selectOneMenu>
	                                            <h:inputText style="margin-left:5px; font-size:17px;"
	                                            	value="#{ManterItemOrcamentoMB.itemAtual.ajusteFinanceiro.taxa}"
	                                            	converter="ajusteFinanceiroConverter">
	                                                <a4j:support ajaxSingle="true" event="onchange" reRender="panelTotal" />
	                                            </h:inputText><span class="fakeSpace" />
	                                            <h:selectOneMenu value="#{ManterItemOrcamentoMB.itemAtual.ajusteFinanceiro.unidadeAjusteFinanceiro}">
	                                                <f:selectItems value="#{ManterOrcamentoMB.unidadesAjusteFinanceiro}" />
	                                                <a4j:support ajaxSingle="true" event="onchange" reRender="panelTotal" />
	                                            </h:selectOneMenu>
	                                        </li>
	                                    </ul>
	                                </rich:panel>
	                            </li>
	                            <li>
	                                <rich:panel id="panelTotal">
	                                    <f:facet name="header">
	                                        <h:outputText value="#{messages['label.totalizacoes']}" />
	                                    </f:facet>
	                                    <ul>
	                                        <li class="sentenceLabel noWrap labelTotal">
	                                            <h:outputLabel value="#{messages['label.totalPorAmostra']}" />
	                                            <h:inputText value="#{ManterItemOrcamentoMB.itemAtual1.totalPorAmostra}"
	                                            	readonly="true" styleClass="readOnly" />
	                                        </li>
	                                        <li class="sentenceLabel labelTotal">
	                                            <h:outputLabel value="#{messages['label.totalPara']} #{ManterItemOrcamentoMB.itemAtual.numeroAmostras} #{messages['label.amostras']}" />
	                                            <h:inputText value="#{ManterItemOrcamentoMB.itemAtual1.total}" readonly="true" styleClass="readOnly" />
	                                        </li>
	                                    </ul>
	                                </rich:panel>
	                            </li>
	                            <li class="textAreaObservaction">
	                                <h:outputLabel value="#{messages['label.observacoes']}" />
	                                <h:inputTextarea styleClass="textAreaLarge textObservacao" value="#{ManterItemOrcamentoMB.itemAtual.observacao}" />
	                            </li>
	                        </ul>
	                    </rich:panel>
	                </li>
	            </ul>
	            <div class="buttons">
	                <h:commandButton value="#{messages['botao.salvar']}" action="#{ManterItemOrcamentoMB.confirmar}"
	                	styleClass="saveButton mainButton" />
	                <h:commandButton value="#{messages['botao.novo']}" action="#{ManterItemOrcamentoMB.novoItem}"
	                	styleClass="addButton" />
	            </div>
	        </fieldset>
        </h:form>
    </ui:composition>
</jsp:root>

************************************
package br.com.cqa.lims.web.orcamento;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.SortedSet;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.context.FacesContext;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import br.com.cqa.lims.analise.Analise;
import br.com.cqa.lims.analise.AnaliseContratada;
import br.com.cqa.lims.analise.AnaliseServiceLocal;
import br.com.cqa.lims.analise.EnsaioServiceLocal;
import br.com.cqa.lims.analise.Especificacao;
import br.com.cqa.lims.analise.GrupoFuncional;
import br.com.cqa.lims.analise.Matriz;
import br.com.cqa.lims.analise.TipoAmostra;
import br.com.cqa.lims.analise.questionario.Pergunta;
import br.com.cqa.lims.analise.questionario.Questionario;
import br.com.cqa.lims.coleta.orcamento.ItemOrcamentoColetavel;
import br.com.cqa.lims.financeiro.AjusteFinanceiro;
import br.com.cqa.lims.financeiro.TipoAjusteFinanceiro;
import br.com.cqa.lims.financeiro.UnidadeAjusteFinanceiro;
import br.com.cqa.lims.orcamento.AnaliseDuplicadaException;
import br.com.cqa.lims.orcamento.ItemOrcamento;
import br.com.cqa.lims.orcamento.Orcamento;
import br.com.cqa.lims.orcamento.OrcamentoServiceLocal;
import br.com.cqa.lims.util.StringUtil;
import br.com.cqa.lims.validation.CampoInvalido;
import br.com.cqa.lims.validation.CampoInvalido.Motivo;
import br.com.cqa.lims.web.analise.GrupoFuncionalConverter;
import br.com.cqa.lims.web.analise.MatrizConverter;
import br.com.cqa.lims.web.analise.MetodoConverter;
import br.com.cqa.lims.web.analise.TipoAmostraConverter;
import br.com.cqa.lims.web.analise.unidade.UnidadeConverter;
import br.com.cqa.lims.web.matriz.ConsultarMatrizMB;
import br.com.cqa.lims.web.orcamento.helper.AnaliseItem;
import br.com.cqa.lims.web.orcamento.helper.AnaliseItemComparator;
import br.com.cqa.lims.web.orcamento.helper.AnaliseItemHelper;

import br.com.cqa.lims.web.orcamento.helper.ItemOrcamentoHelper;


import br.com.cqa.lims.web.orcamento.helper.FiltroAnalise;
import br.com.cqa.lims.web.utils.CallbackableMB;
import br.com.cqa.lims.web.utils.ConfirmarOperacaoMB;
import br.com.cqa.lims.web.utils.FacesUtils;
import br.com.cqa.lims.web.utils.ObjetoSelecionavel;
import br.com.cqa.lims.web.utils.OperacaoConfirmavel;
import br.com.cqa.lims.web.utils.PageMB;
import br.com.cqa.lims.web.utils.ValidationUtils;
import br.com.dextra.web.menu.MenuMB;


import br.com.cqa.lims.orcamento.ItemOrcamentoServiceBean;

import br.com.cqa.lims.orcamento.PrecoPorMetodoServiceBean;
import br.com.cqa.lims.orcamento.PrecoPorMetodoServiceLocal;


public class ManterItemOrcamentoMB implements PageMB, OperacaoConfirmavel,
		CallbackableMB {

	private static final long serialVersionUID = 4902643748803576282L;

	private static final Logger LOG = LoggerFactory
			.getLogger(ManterItemOrcamentoMB.class);

	@EJB(name = "OrcamentoServiceBean/local")
	private OrcamentoServiceLocal orcamentoService;

	@EJB(name = "EnsaioServiceBean/local")
	private EnsaioServiceLocal ensaioService;

	@EJB(name = "AnaliseServiceBean/local")
	private AnaliseServiceLocal analiseService;	
	
	@EJB(name = "PrecoPorMetodoServiceBean/local")
	private PrecoPorMetodoServiceLocal precopormetodoservice;


	private Orcamento orcamento;
	
	
	private ItemOrcamento itemorcamento;
	private ItemOrcamento itemAtual = new ItemOrcamentoColetavel();
	
	private ItemOrcamentoHelper itemAtual1 = new ItemOrcamentoHelper(this.getItemAtual());
//	private ItemOrcamentoHelper itemAtual1 = new ItemOrcamentoHelper(itemorcamento);
	
	
	
	private Matriz matriz;

	private List<SelectItem> tipoAmostraItems;
	private List<SelectItem> gruposFuncionais = new ArrayList<SelectItem>();
	private ListDataModel itens;

	// Analises que estao sendo exibidas no momento
	private ListDataModel analisesExibidas = new ListDataModel(
			new ArrayList<AnaliseItem>());

	// Agrupa todas as analises, inclusive as com especificacao
	private List<AnaliseItem> todasAnalises = new ArrayList<AnaliseItem>();

	// Mantem isolado as analises que possuem especificacao
	private List<AnaliseItem> analisesComEspecificacao = new ArrayList<AnaliseItem>();

	private ListDataModel especificacoes = new ListDataModel(
			Collections.EMPTY_LIST);

	private FiltroAnalise filtro = new FiltroAnalise();
	private GrupoFuncional filtroGrupoFuncional;

	private GrupoFuncionalConverter grupoFuncionalConverter = new GrupoFuncionalConverter();
	private MatrizConverter matrizConverter = new MatrizConverter();
	private TipoAmostraConverter tipoAmostraConverter = new TipoAmostraConverter();
	private MetodoConverter metodosConverter = new MetodoConverter();
	private UnidadeConverter unidadeConverter = new UnidadeConverter();

	private boolean alteracao = false;

	private ManterOrcamentoMB manterOrcamentoMB = FacesUtils
			.findManagedBean(ManterOrcamentoMB.class);

	private int indiceItemAlterado;

	public void alterarItemOrcamento() {
		ItemOrcamento item = (ItemOrcamento) itens.getRowData();
		this.indiceItemAlterado = orcamento.getIndiceItem(item);
		this.prepararAlteracaoItem();
	}

	@SuppressWarnings("unchecked")
	public void confirmar() {
		List<CampoInvalido> camposInvalidos = new ArrayList<CampoInvalido>();
		if (StringUtil.isEmpty(itemAtual.getDescricao())) {
			camposInvalidos.add(new CampoInvalido("descricao", Motivo.NOTNULL));
		}
		if (this.matriz == null) {
			camposInvalidos.add(new CampoInvalido("matriz", Motivo.NOTNULL));
		}
		if (itemAtual.getTipoAmostra() == null) {
			camposInvalidos
					.add(new CampoInvalido("tipoAmostra", Motivo.NOTNULL));
		}
		if (itemAtual.getNumeroAmostras() == null
				|| itemAtual.getNumeroAmostras().intValue() <= 0) {
			camposInvalidos.add(new CampoInvalido("numeroAmostras",
					Motivo.VALOR_MENOR_IGUAL_ZERO));
		}
		camposInvalidos.addAll(itemAtual.validar());
		ValidationUtils.adicionaErrosNegocio(camposInvalidos, FacesContext
				.getCurrentInstance());

		if (camposInvalidos.isEmpty()) {
			List<AnaliseItem> listaOrdenada = (List<AnaliseItem>) this.analisesExibidas
					.getWrappedData();
			Collections.sort(listaOrdenada, new AnaliseItemComparator());
			this.analisesExibidas.setWrappedData(listaOrdenada);

			manterOrcamentoMB = FacesUtils
					.findManagedBean(ManterOrcamentoMB.class);

			int prazoOrcamento = Integer.parseInt(manterOrcamentoMB.getPrazo());

			if (!manterOrcamentoMB.isPrazoOrcamentoAlterado()
					&& itemAtual.getPrazo() > prazoOrcamento) {
				manterOrcamentoMB.setPrazo(itemAtual.getPrazo() + "");
			}

			if (this.alteracao) {
				FacesUtils
						.addSucessMessage("sucesso.manterItemOrcamento.alterar");
				orcamento.removerItem(indiceItemAlterado);
				orcamento.adicionarItem(indiceItemAlterado, itemAtual);
				this.limpar();
			} else {
				FacesUtils
						.addSucessMessage("sucesso.manterItemOrcamento.incluir");
				orcamento.adicionarItem(itemAtual);
				this.limpar();
			}

		}
	}

	@SuppressWarnings("unchecked")
	public void copiarAnalise() {
		AnaliseItem analiseSelecionavel = (AnaliseItem) this.analisesExibidas
				.getRowData();
		AnaliseContratada analise = analiseSelecionavel.getAnaliseContratada();

		List<AnaliseItem> analisesSelecionaveis = (List<AnaliseItem>) this.analisesExibidas
				.getWrappedData();

		AnaliseItem novoAnaliseItem = AnaliseItemHelper.criarAnaliseItem(
				itemAtual, analise.clone());
		int index = analisesSelecionaveis.indexOf(analiseSelecionavel) + 1;
		analisesSelecionaveis.add(index, novoAnaliseItem);
	}

	@SuppressWarnings("unchecked")
	public void desmarcarTodos() {
		List<AnaliseItem> analisesAtuais = (List<AnaliseItem>) this.analisesExibidas
				.getWrappedData();
		for (AnaliseItem analiseItem : analisesAtuais) {
			if (analiseItem.isSelecionado()) {
				analiseItem.deselecionar();
				this.analisesComEspecificacao.remove(analiseItem);
			}
		}
	}

	public void excluirItemOrcamento() {
		itemAtual = (ItemOrcamento) itens.getRowData();
		if (itemAtual.getId() != null) {
			itemAtual = orcamentoService
					.carregarAnalisesComExecucoesDoItemDeOrcamento(itemAtual);
		}
		if (!itemAtual.isRemocaoPermitida()) {
			FacesUtils.addError("erro.excluirItemOrcamento.amostraAlocada");
			itemAtual = new ItemOrcamentoColetavel();
		} else {
			this.forwardConfirmacao();
		}
	}

	@SuppressWarnings("unchecked")
	public void executarFiltro() {
		List<AnaliseItem> analisesExibidas = (List<AnaliseItem>) this.analisesExibidas
				.getWrappedData();

		if (!filtro.isPreenchido()) {
			analisesExibidas.clear();
			analisesExibidas.addAll(this.todasAnalises);
		} else {
			List<AnaliseItem> analisesFiltradas = filtro
					.aplicarA(todasAnalises);

			Collections.sort(analisesFiltradas, new AnaliseItemComparator());
			analisesExibidas.clear();
			analisesExibidas.addAll(analisesFiltradas);
		}
	}

	public void forwardConfirmacao() {
		ConfirmarOperacaoMB confirmarOperacaoMB = FacesUtils
				.findManagedBean(ConfirmarOperacaoMB.class);

		confirmarOperacaoMB.setOperacaoConfirmavel(this);
		confirmarOperacaoMB.setPerguntaConfirmacao(FacesUtils
				.getMessage("pergunta.confirmacao.remocao.itemOrcamento"));
		confirmarOperacaoMB.setUrlRetorno(this.getUrl());
		FacesUtils.renderPage(confirmarOperacaoMB.getUrl());
	}

	public ListDataModel getAnalisesExibidas() {
		return this.analisesExibidas;
	}

	public ListDataModel getEspecificacoes() {
		return especificacoes;
	}

	public FiltroAnalise getFiltro() {
		return filtro;
	}

	public GrupoFuncional getFiltroGrupoFuncional() {
		return filtroGrupoFuncional;
	}

	public GrupoFuncionalConverter getGrupoFuncionalConverter() {
		return grupoFuncionalConverter;
	}

	public List<SelectItem> getGruposFuncionais() {
		return gruposFuncionais;
	}

	public ItemOrcamento getItemAtual() {
		return itemAtual;
	}
	
	public ItemOrcamentoHelper getItemAtual1() {

		return itemAtual1;
	}	
	
	public Integer getPrazoItemOrcamento() {
		Integer prazoItem = itemAtual.getPrazo();
		int prazoOrcamento = Integer.parseInt(manterOrcamentoMB.getPrazo());

		if (!manterOrcamentoMB.isPrazoOrcamentoAlterado()) {
			return prazoItem;
		} else {
			if (prazoItem > prazoOrcamento) {
				return prazoOrcamento;
			}

			return prazoItem;
		}
	}

	public ListDataModel getItens() {
		return itens;
	}

	public Matriz getMatriz() {
		return matriz;
	}

	public MatrizConverter getMatrizConverter() {
		return matrizConverter;
	}

	public MetodoConverter getMetodosConverter() {
		return metodosConverter;
	}

	public Orcamento getOrcamento() {
		return orcamento;
	}

	public TipoAmostraConverter getTipoAmostraConverter() {
		return tipoAmostraConverter;
	}

	public List<SelectItem> getTipoAmostraItems() {
		return tipoAmostraItems;
	}

	public UnidadeConverter getUnidadeConverter() {
		return unidadeConverter;
	}

	public String getUrl() {
		return new String("/pages/orcamento/manter.jspx");
	}

	@PostConstruct
	public void initialize() {
		this.orcamento = manterOrcamentoMB.getOrcamento();
		itens = new ListDataModel(orcamento.getItemsOrcamento());

		tipoAmostraItems = new ArrayList<SelectItem>();
		tipoAmostraItems.add(FacesUtils.getEmptySelectItem());

		SortedSet<GrupoFuncional> todosGruposFuncionais = ensaioService
				.buscarTodosGruposFuncionais();
		this.gruposFuncionais.add(FacesUtils.getEmptySelectItem());
		for (GrupoFuncional grupoFuncional : todosGruposFuncionais) {
			this.gruposFuncionais.add(new SelectItem(grupoFuncional,
					grupoFuncional.getSigla()));
		}

		// caso o ajuste financeiro do item nao tenha valores definidos (para um
		// novo item de orcamento, por exemplo), seta com valores default
		AjusteFinanceiro ajusteFinanceiro = this.itemAtual
				.getAjusteFinanceiro();
		if (ajusteFinanceiro.getTipoAjusteFinanceiro() == null) {
			ajusteFinanceiro
					.setTipoAjusteFinanceiro(TipoAjusteFinanceiro.DESCONTO);
		}
		if (ajusteFinanceiro.getUnidadeAjusteFinanceiro() == null) {
			ajusteFinanceiro
					.setUnidadeAjusteFinanceiro(UnidadeAjusteFinanceiro.PORCENTAGEM);
		}
	}

	public boolean isAlteracao() {
		return this.alteracao;
	}

	public boolean isExibirPainelAjusteFinanceiro() {
		MenuMB menuMb = FacesUtils.findManagedBean(MenuMB.class);
		return menuMb.getUsuarioLogado().podeAcessarFuncionalidade(
				"ajusteFinanceiroItemOrcamento");
	}

	public boolean isExibirQuestoes() {
		return !this.itemAtual.getQuestionario().getRespostas().isEmpty();
	}

	public void novoItem() {
		this.limpar();
	}

	public void selecionarAnalise() {
		AnaliseItem analiseSelecionada = (AnaliseItem) this.analisesExibidas
				.getRowData();

		// Quando esta selecionando, eh necessario reconsultar a analise pois o
		// metodo pode ter sido modificado pelo usuario
		// Quando esta desmarcando, o proprio objeto AnaliseItem remove a
		// analise do item atual
		if (analiseSelecionada.isSelecionado()) {
			Analise analiseConsultada = analiseService.consultarAnalise(
					analiseSelecionada.getEnsaio(), analiseSelecionada
							.getMetodo(), analiseSelecionada.getMatriz());

			try {
				analiseSelecionada
						.selecionarAnalise(new AnaliseContratada(
								analiseConsultada, analiseConsultada
										.getUnidadePadrao()));
			} catch (AnaliseDuplicadaException e) {
				FacesUtils.addWarn("checkSelecionarAnalise",
						"erro.selecionarAnalise.duplicado");
			}
		}
		// Ao desmarcar analise, se ela estiver relacionada a especificacao, eh
		// necessario removela da lista de analisesComEspecificacao
		else {
			analiseSelecionada.deselecionar();
			if (analiseSelecionada.possueEspecificacao()) {
				analisesComEspecificacao.remove(analiseSelecionada);
				itemAtual.removerAnaliseContratada(analiseSelecionada
						.getAnaliseContratada());
			}
		}
	}

	@SuppressWarnings("unchecked")
	public void selecionarEspecificacao() {
		ObjetoSelecionavel<Especificacao> especificacaoSelecionada = (ObjetoSelecionavel<Especificacao>) especificacoes
				.getRowData();

		if (!especificacaoSelecionada.isSelecionado()) {
			itemAtual.deselecionarEspecificacao(especificacaoSelecionada
					.getObjeto(), getMatriz());

			for (Iterator<AnaliseItem> it = analisesComEspecificacao.iterator(); it
					.hasNext();) {
				AnaliseItem item = it.next();

				if (item.getAnalisesEspecificadas().size() == 1
						&& item.getAnalisesEspecificadas().get(0)
								.getEspecificacao().equals(
										especificacaoSelecionada.getObjeto())) {
					item.deselecionar();
					it.remove();
				}
			}

			Collections.sort(todasAnalises, new AnaliseItemComparator());

			List<AnaliseItem> analisesFiltradas = filtro
					.aplicarA(todasAnalises);

			List<AnaliseItem> analisesExibidas = (List<AnaliseItem>) this.analisesExibidas
					.getWrappedData();
			analisesExibidas.clear();
			analisesExibidas.addAll(analisesFiltradas);
		} else {
			List<Pergunta> perguntasEspecificacao = orcamentoService
					.consultarPerguntasOrcamento(getMatriz(),
							especificacaoSelecionada.getObjeto());
			itemAtual.getQuestionario().adicionarPerguntas(
					perguntasEspecificacao);

			List<AnaliseItem> novosItemsDeEspecificacao = AnaliseItemHelper
					.adicionarAnaliseItemPorEspecificacao(
							especificacaoSelecionada.getObjeto(), itemAtual,
							analisesComEspecificacao, this.getMatriz());
			todasAnalises.removeAll(analisesComEspecificacao);

			analisesComEspecificacao.addAll(novosItemsDeEspecificacao);
			todasAnalises.addAll(0, analisesComEspecificacao);
			Collections.sort(todasAnalises, new AnaliseItemComparator());

			List<AnaliseItem> analisesFiltradas = filtro
					.aplicarA(todasAnalises);

			List<AnaliseItem> analisesExibidas = (List<AnaliseItem>) this.analisesExibidas
					.getWrappedData();
			analisesExibidas.clear();
			analisesExibidas.addAll(analisesFiltradas);
		}
	}

	public void selecionarMatriz() {
		if (matriz == null) {
			this.analisesExibidas = new ListDataModel(
					new ArrayList<AnaliseItem>());
			this.especificacoes = new ListDataModel();
			this.todasAnalises = new ArrayList<AnaliseItem>();
			itemAtual.getQuestionario().limparPerguntasMatriz();
			itemAtual.setQuestionario(new Questionario());
			itemAtual.setNumeroAmostras(0);
			itemAtual.limparAnalisesContratadas();
			tipoAmostraItems.add(FacesUtils.getEmptySelectItem());
			this.analisesComEspecificacao.clear();
			return;
		}

		// Remove todas as antigas analisesContratada
		this.itemAtual.getAnalisesContratadas().clear();

		// Prepara os elementos da tela que dependem da matriz
		this.carregarElementosConformeMatrizSelecionada();
	}

	public void setAnalises(ListDataModel configuracaoesEnsaio) {
		this.analisesExibidas = configuracaoesEnsaio;
	}

	public void setEspecificacoes(ListDataModel especificacoes) {
		this.especificacoes = especificacoes;
	}

	public void setFiltro(FiltroAnalise filtro) {
		this.filtro = filtro;
	}

	public void setFiltroGrupoFuncional(GrupoFuncional filtroGrupoFuncional) {
		this.filtroGrupoFuncional = filtroGrupoFuncional;
	}

	public void setGruposFuncionais(List<SelectItem> gruposFuncionais) {
		this.gruposFuncionais = gruposFuncionais;
	}

	public void setItemAtual(ItemOrcamento itemAtual) {
		this.itemAtual = itemAtual;
	}
	
	public void setItemAtual1(ItemOrcamentoHelper itemAtual1) {
//	public void setItemAtual1(PrecoPorMetodoServiceBean itemAtual1) {
	
	
		this.itemAtual1 = itemAtual1;
	}

	
	public void setItens(ListDataModel itens) {
		this.itens = itens;
	}

	public void setMatriz(Matriz matriz) {
		this.matriz = matriz;
	}

	public void setOperacaoConfirmada(boolean operacaoConfirmada) {
		if (operacaoConfirmada) {
			orcamento.removerItem(itemAtual);
			this.limpar();
			FacesUtils.addSucessMessage("sucesso.manterItemOrcamento.remover");
		} else {
			itemAtual = new ItemOrcamentoColetavel();
			FacesUtils.renderPage(this.getUrl());
		}
	}

	public void setOrcamento(Orcamento orcamento) {
		this.orcamento = orcamento;
	}

	public void setTipoAmostraItems(List<SelectItem> tipoAmostraItems) {
		this.tipoAmostraItems = tipoAmostraItems;
	}

	public void trocarMetodo() {
		AnaliseItem analiseAtual = (AnaliseItem) this.analisesExibidas
				.getRowData();

		Analise analiseNova = analiseService.consultarAnalise(analiseAtual
				.getEnsaio(), analiseAtual.getMetodo(), analiseAtual
				.getMatriz());
		AnaliseContratada analiseContratada = new AnaliseContratada(
				analiseNova, analiseNova.getUnidadePadrao());

		try {
			if (analiseAtual.isSelecionado()) {
				analiseAtual.alterarAnalise(analiseContratada);
			} else {
				analiseAtual.selecionarAnalise(analiseContratada);
			}
		} catch (AnaliseDuplicadaException e) {
			FacesUtils.addWarn("checkSelecionarAnalise",
					"erro.selecionarAnalise.duplicado");
		}
	}

	@SuppressWarnings("unchecked")
	private void carregarAnalisesSelecionadas() {
		List<AnaliseContratada> analisesContratadas = itemAtual
				.getAnalisesContratadas();

		for (AnaliseContratada analiseContratada : analisesContratadas) {
			AnaliseItem analiseExistente = AnaliseItemHelper.criarAnaliseItem(
					itemAtual, analiseContratada);
			analiseExistente.setEnsaiosAlocados(analiseContratada
					.possuePeloMenosUmEnsaioComExecucaoIniciada());
			analiseExistente.setSelecionado(true);

			if (analiseContratada.isEspecificada()) {
				analiseExistente.setAnalisesEspecificadas(analiseContratada
						.getAnalisesEspecificadas());
				analisesComEspecificacao.add(analiseExistente);
			} else {
				todasAnalises.add(analiseExistente);
			}
		}

		todasAnalises.addAll(0, analisesComEspecificacao);
		Collections.sort(todasAnalises, new AnaliseItemComparator());

		List<AnaliseItem> analisesExibidas = (List<AnaliseItem>) this.analisesExibidas
				.getWrappedData();
		analisesExibidas.clear();
		analisesExibidas.addAll(todasAnalises);
	}

	private void carregarElementosConformeMatrizSelecionada() {
		this.matriz = ensaioService.carregaTiposAmostra(this.matriz);
		tipoAmostraItems = new ArrayList<SelectItem>();
		tipoAmostraItems.add(FacesUtils.getEmptySelectItem());
		for (TipoAmostra tipoAmostra : matriz.getTiposAmostra()) {
			tipoAmostraItems.add(new SelectItem(tipoAmostra, tipoAmostra
					.getNome()));
		}

		ArrayList<ObjetoSelecionavel<Especificacao>> especs = new ArrayList<ObjetoSelecionavel<Especificacao>>();
		Set<Especificacao> especificacoesDaMatriz = analiseService
				.buscarEspecificacoesPorMatriz(matriz);
		for (Especificacao especificacao : especificacoesDaMatriz) {
			ObjetoSelecionavel<Especificacao> objSelecionavel = new ObjetoSelecionavel<Especificacao>(
					especificacao);
			especs.add(objSelecionavel);
		}
		this.especificacoes = new ListDataModel(especs);

		this.todasAnalises = new ArrayList<AnaliseItem>();

		// log para investigação de problemas da CR#173
		LOG.debug("Realizando busca de análises para matriz ({}) {}", matriz
				.getId(), matriz.getNome());

		Set<Analise> analisesConsultadas = analiseService
				.buscarAnalisesPadraoPorMatriz(matriz);
		for (Analise analise : analisesConsultadas) {
			AnaliseContratada analiseContratada = new AnaliseContratada(analise);
			AnaliseItem analiseItem = AnaliseItemHelper.criarAnaliseItem(
					itemAtual, analiseContratada);
			this.todasAnalises.add(analiseItem);

			// log para investigação de problemas da CR#173
			LOG.debug("[MATRIZ {} - {}] Método: {} - {} | Ensaio: {} - {}",
					new Object[] { matriz.getId(), matriz.getNome(),
							analiseItem.getMetodo().getId(),
							analiseItem.getMetodo().getNome(),
							analiseItem.getEnsaio().getId(),
							analiseItem.getEnsaio().getNome() });

		}
		Collections.sort(this.todasAnalises, new AnaliseItemComparator());
		this.analisesExibidas = new ListDataModel(new ArrayList<AnaliseItem>(
				this.todasAnalises));

		List<Pergunta> perguntas = orcamentoService
				.consultarPerguntasOrcamento(matriz, null);
		if (!this.alteracao) {
			Questionario questionario = itemAtual.getQuestionario();
			questionario.limparPerguntasMatriz();
			questionario.adicionarPerguntas(perguntas);
		}
	}

	@SuppressWarnings("unchecked")
	private void limpar() {
		this.itemAtual = new ItemOrcamentoColetavel();
		this.alteracao = false;
		this.matriz = null;
		this.tipoAmostraItems = new ArrayList<SelectItem>();
		this.tipoAmostraItems.add(FacesUtils.getEmptySelectItem());
		((List) this.especificacoes.getWrappedData()).clear();
		((List) this.analisesExibidas.getWrappedData()).clear();
		this.analisesComEspecificacao.clear();
		this.filtro = new FiltroAnalise();
	}

	private void prepararAlteracaoItem() {
		this.alteracao = true;
		this.analisesComEspecificacao.clear();
		this.itemAtual = orcamento.getItemsOrcamento().get(indiceItemAlterado);
		this.matriz = this.itemAtual.getMatriz();
		if (itemAtual.getId() != null) {
			this.itemAtual = orcamentoService
					.carregarRelacionamentosItem(itemAtual);
		}

		this.carregarElementosConformeMatrizSelecionada();
		this.carregarAnalisesSelecionadas();
		this.selecionarEspecificacoesParaAlteracao();
	}

	@SuppressWarnings("unchecked")
	private void selecionarEspecificacoesParaAlteracao() {
		List<ObjetoSelecionavel<Especificacao>> especificacoesSelecionaveis = (List<ObjetoSelecionavel<Especificacao>>) this.especificacoes
				.getWrappedData();

		for (ObjetoSelecionavel<Especificacao> especificacaoSelecionavel : especificacoesSelecionaveis) {
			if (itemAtual.getEspecificacoes().contains(
					especificacaoSelecionavel.getObjeto())) {
				especificacaoSelecionavel.setSelecionado(true);
			}
		}
	}

	public void consultarMatriz() {
		this.auxilioPreenchimentoMatriz();
	}

	private void auxilioPreenchimentoMatriz() {
		ConsultarMatrizMB consultarMatrizMB = FacesUtils
				.findManagedBean(ConsultarMatrizMB.class);

		consultarMatrizMB.setAuxilioPreenchimento(true);
		consultarMatrizMB.setMbRetorno(this);

		FacesUtils.renderPage(consultarMatrizMB.getUrl());
	}

	public void setObjetoSelecionado(Object objetoSelecionado) {
		this.matriz = (Matriz) objetoSelecionado;

		this.selecionarMatriz();
	}
}

3 Respostas

renanjp

Cara isto ocorre devido ao fluxo de vida do JSF…
Recomendo que você de uma aprofundada ai neste framework antes de tentar manter este código…

E

Ok, vou dar uma olhada.

mas meu problema esta lentidao na seguinte rotina :

<div class="collCenter">
										<h:commandLink rendered="#{ConsultarMatrizMB.auxilioPreenchimento}"
											action="#{ConsultarMatrizMB.selecionarMatriz}"
											title="#{messages['label.selecionar']}" styleClass="imgLink">
											<h:graphicImage id="imgSelecione" url="/assets/images/select-button.png" />
										</h:commandLink>

**********************************************************************

public class ConsultarMatrizMB extends AuxilioPreenchimento implements PageMB {

	private static final long serialVersionUID = 2313870392024583411L;

	@EJB(name = "AnaliseServiceBean/local")
	private AnaliseServiceLocal analiseService;

	private GrupoMatriz grupoMatriz;
	private GrupoMatriz categoriaGrupoMatriz;

	private List<SelectItem> gruposMatrizItems;
	private List<SelectItem> categoriasGrupoMatrizItems;
	private String nomeMatriz;

	private GrupoMatrizConverter grupoMatrizConverter = new GrupoMatrizConverter();

	public void selecionarMatriz() {
		Matriz matrizSelecionada = (Matriz) matrizes.getRowData();
		this.getMbRetorno().setObjetoSelecionado(matrizSelecionada);
		FacesUtils.renderPage(this.getMbRetorno().getUrl());
	}

estou dando uma olhada no Log e apresentou o seguinte :


2012-11-22 09:50:16,771 DEBUG [org.hibernate.hql.ast.ErrorCounter] throwQueryException() : no errors
2012-11-22 09:50:16,771 DEBUG [org.hibernate.hql.ast.QueryTranslatorImpl] HQL: select a.metodo from br.com.cqa.lims.analise.Analise a where a.ensaio = :ensaio and a.matriz = :matriz 
2012-11-22 09:50:16,771 DEBUG [org.hibernate.hql.ast.QueryTranslatorImpl] SQL: select metodo1_.id as id25_, metodo1_.nome as nome25_, metodo1_.metodologia_id as metodolo4_25_, metodo1_.valor as valor25_ from Analise analise0_ inner join Metodo metodo1_ on analise0_.metodo_id=metodo1_.id where analise0_.ensaio_id=? and analise0_.matriz_id=?
2012-11-22 09:50:16,771 DEBUG [org.hibernate.hql.ast.ErrorCounter] throwQueryException() : no errors
2012-11-22 09:50:16,781 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
2012-11-22 09:50:16,781 DEBUG [org.hibernate.jdbc.ConnectionManager] opening JDBC connection
2012-11-22 09:50:16,781 DEBUG [org.hibernate.SQL] select metodo1_.id as id25_, metodo1_.nome as nome25_, metodo1_.metodologia_id as metodolo4_25_, metodo1_.valor as valor25_ from Analise analise0_ inner join Metodo metodo1_ on analise0_.metodo_id=metodo1_.id where analise0_.ensaio_id=? and analise0_.matriz_id=?
2012-11-22 09:50:16,781 INFO  [STDOUT] Hibernate: select metodo1_.id as id25_, metodo1_.nome as nome25_, metodo1_.metodologia_id as metodolo4_25_, metodo1_.valor as valor25_ from Analise analise0_ inner join Metodo metodo1_ on analise0_.metodo_id=metodo1_.id where analise0_.ensaio_id=? and analise0_.matriz_id=?
2012-11-22 09:50:16,781 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to open ResultSet (open ResultSets: 0, globally: 0)
2012-11-22 09:50:16,781 DEBUG [org.hibernate.loader.Loader] result row: EntityKey[br.com.cqa.lims.analise.Metodo#11981]
2012-11-22 09:50:16,781 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to close ResultSet (open ResultSets: 1, globally: 1)
2012-11-22 09:50:16,781 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
2012-11-22 09:50:16,781 DEBUG [org.hibernate.jdbc.ConnectionManager] aggressively releasing JDBC connection
2012-11-22 09:50:16,781 DEBUG [org.hibernate.jdbc.ConnectionManager] releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
2012-11-22 09:50:16,781 DEBUG [org.hibernate.engine.TwoPhaseLoad] resolving associations for [br.com.cqa.lims.analise.Metodo#11981]
2012-11-22 09:50:16,781 DEBUG [org.hibernate.cache.EhCache] key: br.com.cqa.lims.analise.Metodologia#1270
2012-11-22 09:50:16,781 DEBUG [org.hibernate.engine.TwoPhaseLoad] adding entity to second-level cache: [br.com.cqa.lims.analise.Metodo#11981]
2012-11-22 09:50:16,781 DEBUG [org.hibernate.cache.EhCache] key: br.com.cqa.lims.analise.Metodo#11981
2012-11-22 09:50:16,781 DEBUG [org.hibernate.engine.TwoPhaseLoad] done materializing entity [br.com.cqa.lims.analise.Metodo#11981]
2012-11-22 09:50:16,781 DEBUG [org.hibernate.engine.StatefulPersistenceContext] initializing non-lazy collections
2012-11-22 09:50:16,781 DEBUG [org.hibernate.event.def.AbstractFlushingEventListener] processing flush-time cascades
2012-11-22 09:50:16,781 DEBUG [org.hibernate.event.def.AbstractFlushingEventListener] dirty checking collections
2012-11-22 09:50:16,781 DEBUG [org.hibernate.event.def.AbstractFlushingEventListener] Flushed: 0 insertions, 0 updates, 0 deletions to 2 objects
2012-11-22 09:50:16,781 DEBUG [org.hibernate.event.def.AbstractFlushingEventListener] Flushed: 0 (re)creations, 0 updates, 0 removals to 0 collections
2012-11-22 09:50:16,781 DEBUG [org.hibernate.pretty.Printer] listing entities:
2012-11-22 09:50:16,781 DEBUG [org.hibernate.pretty.Printer] br.com.cqa.lims.analise.Metodologia{bibliografia=AMERICAN PUBLIC HEALTH ASSOCIATION, AMERICAN WORKS ASSOCIATION, WATER ENVIRONMENT FEDERATION. Standard Methods for the Examination of Water and Wastewater, 22nd ed. Washington, DC: American Public Health Association, 2012., id=1270, nome=SM, origem=Método Oficial, descricao=Standard Methods}
2012-11-22 09:50:16,781 DEBUG [org.hibernate.pretty.Printer] br.com.cqa.lims.analise.Metodo{metodologia=br.com.cqa.lims.analise.Metodologia#1270, id=11981, preco=component[valor]{valor=0.00}, nome=SM 4500H+ B}
2012-11-22 09:50:16,781 DEBUG [org.hibernate.jdbc.ConnectionManager] aggressively releasing JDBC connection
2012-11-22 09:50:16,781 DEBUG [org.jboss.ejb3.entity.ManagedEntityManagerFactory] ************** closing entity managersession **************
2012-11-22 09:50:16,791 DEBUG [br.com.cqa.lims.web.orcamento.ManterItemOrcamentoMB] [MATRIZ 496 - Água Bruta (Superficial, Subterrânea) / Tratada / Consumo Humano] Método: 11981 - SM 4500H+ B | Ensaio: 11985 - pH a 25°C
2012-11-22 09:50:16,791 DEBUG [org.hibernate.impl.SessionImpl] opened session at timestamp: 5544284228775936
2012-11-22 09:50:16,791 DEBUG [org.hibernate.ejb.AbstractEntityManagerImpl] Looking for a JTA transaction to join
2012-11-22 09:50:16,791 DEBUG [org.hibernate.jdbc.JDBCContext] successfully registered Synchronization
2012-11-22 09:50:16,791 DEBUG [org.hibernate.ejb.AbstractEntityManagerImpl] Looking for a JTA transaction to join
2012-11-22 09:50:16,791 DEBUG [org.hibernate.ejb.AbstractEntityManagerImpl] Transaction already joined
2012-11-22 09:50:16,791 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
2012-11-22 09:50:16,791 DEBUG [org.hibernate.jdbc.ConnectionManager] opening JDBC connection
2012-11-22 09:50:16,791 DEBUG [org.hibernate.SQL] select metodo1_.id as id25_, metodo1_.nome as nome25_, metodo1_.metodologia_id as metodolo4_25_, metodo1_.valor as valor25_ from Analise analise0_ inner join Metodo metodo1_ on analise0_.metodo_id=metodo1_.id where analise0_.ensaio_id=? and analise0_.matriz_id=?
2012-11-22 09:50:16,791 INFO  [STDOUT] Hibernate: select metodo1_.id as id25_, metodo1_.nome as nome25_, metodo1_.metodologia_id as metodolo4_25_, metodo1_.valor as valor25_ from Analise analise0_ inner join Metodo metodo1_ on analise0_.metodo_id=metodo1_.id where analise0_.ensaio_id=? and analise0_.matriz_id=?
2012-11-22 09:50:16,791 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to open ResultSet (open ResultSets: 0, globally: 0)
2012-11-22 09:50:16,791 DEBUG [org.hibernate.loader.Loader] result row: EntityKey[br.com.cqa.lims.analise.Metodo#11575]
2012-11-22 09:50:16,791 DEBUG [org.hibernate.loader.Loader] result row: EntityKey[br.com.cqa.lims.analise.Metodo#2866]
2012-11-22 09:50:16,791 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to close ResultSet (open ResultSets: 1, globally: 1)
2012-11-22 09:50:16,791 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
2012-11-22 09:50:16,791 DEBUG [org.hibernate.jdbc.ConnectionManager] aggressively releasing JDBC connection
2012-11-22 09:50:16,791 DEBUG [org.hibernate.jdbc.ConnectionManager] releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
2012-11-22 09:50:16,791 DEBUG [org.hibernate.engine.TwoPhaseLoad] resolving associations for [br.com.cqa.lims.analise.Metodo#11575]
2012-11-22 09:50:16,791 DEBUG [org.hibernate.cache.EhCache] key: br.com.cqa.lims.analise.Metodologia#1254
2012-11-22 09:50:16,791 DEBUG [org.hibernate.engine.TwoPhaseLoad] adding entity to second-level cache: [br.com.cqa.lims.analise.Metodo#11575]
2012-11-22 09:50:16,791 DEBUG [org.hibernate.cache.EhCache] key: br.com.cqa.lims.analise.Metodo#11575
2012-11-22 09:50:16,791 DEBUG [org.hibernate.engine.TwoPhaseLoad] done materializing entity [br.com.cqa.lims.analise.Metodo#11575]
2012-11-22 09:50:16,791 DEBUG [org.hibernate.engine.TwoPhaseLoad] resolving associations for [br.com.cqa.lims.analise.Metodo#2866]
2012-11-22 09:50:16,791 DEBUG [org.hibernate.cache.EhCache] key: br.com.cqa.lims.analise.Metodologia#1252
2012-11-22 09:50:16,791 DEBUG [org.hibernate.cache.EhCache] Element for br.com.cqa.lims.analise.Metodologia#1252 is null
2012-11-22 09:50:16,791 DEBUG [org.hibernate.loader.Loader] loading entity: [br.com.cqa.lims.analise.Metodologia#1252]
2012-11-22 09:50:16,791 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
2012-11-22 09:50:16,791 DEBUG [org.hibernate.jdbc.ConnectionManager] opening JDBC connection
2012-11-22 09:50:16,791 DEBUG [org.hibernate.SQL] select metodologi0_.id as id26_0_, metodologi0_.nome as nome26_0_, metodologi0_.descricao as descricao26_0_, metodologi0_.origem as origem26_0_, metodologi0_.bibliografia as bibliogr5_26_0_ from Metodologia metodologi0_ where metodologi0_.id=?
2012-11-22 09:50:16,791 INFO  [STDOUT] Hibernate: select metodologi0_.id as id26_0_, metodologi0_.nome as nome26_0_, metodologi0_.descricao as descricao26_0_, metodologi0_.origem as origem26_0_, metodologi0_.bibliografia as bibliogr5_26_0_ from Metodologia metodologi0_ where metodologi0_.id=?
2012-11-22 09:50:16,791 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to open ResultSet (open ResultSets: 0, globally: 0)
2012-11-22 09:50:16,791 DEBUG [org.hibernate.loader.Loader] result row: EntityKey[br.com.cqa.lims.analise.Metodologia#1252]
2012-11-22 09:50:16,791 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to close ResultSet (open ResultSets: 1, globally: 1)
2012-11-22 09:50:16,791 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
2012-11-22 09:50:16,791 DEBUG [org.hibernate.jdbc.ConnectionManager] aggressively releasing JDBC connection
2012-11-22 09:50:16,791 DEBUG [org.hibernate.jdbc.ConnectionManager] releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
2012-11-22 09:50:16,791 DEBUG [org.hibernate.engine.TwoPhaseLoad] resolving associations for [br.com.cqa.lims.analise.Metodologia#1252]
2012-11-22 09:50:16,791 DEBUG [org.hibernate.engine.TwoPhaseLoad] adding entity to second-level cache: [br.com.cqa.lims.analise.Metodologia#1252]
2012-11-22 09:50:16,791 DEBUG [org.hibernate.cache.EhCache] key: br.com.cqa.lims.analise.Metodologia#1252
2012-11-22 09:50:16,791 DEBUG [org.hibernate.cache.EhCache] Element for br.com.cqa.lims.analise.Metodologia#1252 is null
2012-11-22 09:50:16,791 DEBUG [org.hibernate.engine.TwoPhaseLoad] done materializing entity [br.com.cqa.lims.analise.Metodologia#1252]
2012-11-22 09:50:16,791 DEBUG [org.hibernate.loader.Loader] done entity load
2012-11-22 09:50:16,791 DEBUG [org.hibernate.engine.TwoPhaseLoad] adding entity to second-level cache: [br.com.cqa.lims.analise.Metodo#2866]
2012-11-22 09:50:16,791 DEBUG [org.hibernate.cache.EhCache] key: br.com.cqa.lims.analise.Metodo#2866
2012-11-22 09:50:16,791 DEBUG [org.hibernate.cache.EhCache] Element for br.com.cqa.lims.analise.Metodo#2866 is null
2012-11-22 09:50:16,791 DEBUG [org.hibernate.engine.TwoPhaseLoad] done materializing entity [br.com.cqa.lims.analise.Metodo#2866]
2012-11-22 09:50:16,791 DEBUG [org.hibernate.engine.StatefulPersistenceContext] initializing non-lazy collections
2012-11-22 09:50:16,791 DEBUG [org.hibernate.event.def.AbstractFlushingEventListener] processing flush-time cascades
2012-11-22 09:50:16,791 DEBUG [org.hibernate.event.def.AbstractFlushingEventListener] dirty checking collections
2012-11-22 09:50:16,791 DEBUG [org.hibernate.event.def.AbstractFlushingEventListener] Flushed: 0 insertions, 0 updates, 0 deletions to 4 objects
2012-11-22 09:50:16,791 DEBUG [org.hibernate.event.def.AbstractFlushingEventListener] Flushed: 0 (re)creations, 0 updates, 0 removals to 0 collections
2012-11-22 09:50:16,791 DEBUG [org.hibernate.pretty.Printer] listing entities:
2012-11-22 09:50:16,791 DEBUG [org.hibernate.pretty.Printer] br.com.cqa.lims.analise.Metodologia{bibliografia=INSTITUTO NACIONAL DA FARMÁCIA E DO MEDICAMENTO: Farmacopéia Portuguesa. VII edição. Lisboa, 2002., id=1252, nome=FP, origem=Método Oficial, descricao=Farmacopéia Portuguesa VII}
2012-11-22 09:50:16,791 DEBUG [org.hibernate.pretty.Printer] br.com.cqa.lims.analise.Metodo{metodologia=br.com.cqa.lims.analise.Metodologia#1252, id=2866, preco=component[valor]{valor=0.00}, nome=FP p.749}
2012-11-22 09:50:16,791 DEBUG [org.hibernate.pretty.Printer] br.com.cqa.lims.analise.Metodo{metodologia=br.com.cqa.lims.analise.Metodologia#1254, id=11575, preco=component[valor]{valor=0.00}, nome=IAL 199 IV}
2012-11-22 09:50:16,791 DEBUG [org.hibernate.pretty.Printer] br.com.cqa.lims.analise.Metodologia{bibliografia=INSTITUTO ADOLFO LUTZ. Métodos físico-químicos para análise de alimentos. 4. ed. Brasília: Ministério da Saúde, 2005., id=1254, nome=IAL, origem=Método Oficial, descricao=Instituto Adolfo Lutz - Alimentos}
2012-11-22 09:50:16,791 DEBUG [org.hibernate.jdbc.ConnectionManager] aggressively releasing JDBC connection
2012-11-22 09:50:16,791 DEBUG [org.jboss.ejb3.entity.ManagedEntityManagerFactory] ************** closing entity managersession **************
2012-11-22 09:50:16,791 DEBUG [br.com.cqa.lims.web.orcamento.ManterItemOrcamentoMB] [MATRIZ 496 - Água Bruta (Superficial, Subterrânea) / Tratada / Consumo Humano] Método: 11575 - IAL 199 IV | Ensaio: 13891 - Substâncias Oxidáveis
2012-11-22 09:50:16,801 DEBUG [org.hibernate.impl.SessionImpl] opened session at timestamp: 5544284228816896
2012-11-22 09:50:16,801 DEBUG [org.hibernate.ejb.AbstractEntityManagerImpl] Looking for a JTA transaction to join
2012-11-22 09:50:16,801 DEBUG [org.hibernate.jdbc.JDBCContext] successfully registered Synchronization
2012-11-22 09:50:16,801 DEBUG [org.hibernate.ejb.AbstractEntityManagerImpl] Looking for a JTA transaction to join
2012-11-22 09:50:16,801 DEBUG [org.hibernate.ejb.AbstractEntityManagerImpl] Transaction already joined
2012-11-22 09:50:16,801 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
2012-11-22 09:50:16,801 DEBUG [org.hibernate.jdbc.ConnectionManager] opening JDBC connection
2012-11-22 09:50:16,801 DEBUG [org.hibernate.SQL] select metodo1_.id as id25_, metodo1_.nome as nome25_, metodo1_.metodologia_id as metodolo4_25_, metodo1_.valor as valor25_ from Analise analise0_ inner join Metodo metodo1_ on analise0_.metodo_id=metodo1_.id where analise0_.ensaio_id=? and analise0_.matriz_id=?
2012-11-22 09:50:16,801 INFO  [STDOUT] Hibernate: select metodo1_.id as id25_, metodo1_.nome as nome25_, metodo1_.metodologia_id as metodolo4_25_, metodo1_.valor as valor25_ from Analise analise0_ inner join Metodo metodo1_ on analise0_.metodo_id=metodo1_.id where analise0_.ensaio_id=? and analise0_.matriz_id=?
2012-11-22 09:50:16,801 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to open ResultSet (open ResultSets: 0, globally: 0)
2012-11-22 09:50:16,801 DEBUG [org.hibernate.loader.Loader] result row: EntityKey[br.com.cqa.lims.analise.Metodo#4688]
2012-11-22 09:50:16,801 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to close ResultSet (open ResultSets: 1, globally: 1)
2012-11-22 09:50:16,801 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
2012-11-22 09:50:16,801 DEBUG [org.hibernate.jdbc.ConnectionManager] aggressively releasing JDBC connection
2012-11-22 09:50:16,801 DEBUG [org.hibernate.jdbc.ConnectionManager] releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
2012-11-22 09:50:16,801 DEBUG [org.hibernate.engine.TwoPhaseLoad] resolving associations for [br.com.cqa.lims.analise.Metodo#4688]
2012-11-22 09:50:16,801 DEBUG [org.hibernate.cache.EhCache] key: br.com.cqa.lims.analise.Metodologia#1270
2012-11-22 09:50:16,801 DEBUG [org.hibernate.engine.TwoPhaseLoad] adding entity to second-level cache: [br.com.cqa.lims.analise.Metodo#4688]
2012-11-22 09:50:16,801 DEBUG [org.hibernate.cache.EhCache] key: br.com.cqa.lims.analise.Metodo#4688
2012-11-22 09:50:16,801 DEBUG [org.hibernate.engine.TwoPhaseLoad] done materializing entity [br.com.cqa.lims.analise.Metodo#4688]
2012-11-22 09:50:16,801 DEBUG [org.hibernate.engine.StatefulPersistenceContext] initializing non-lazy collections
2012-11-22 09:50:16,801 DEBUG [org.hibernate.event.def.AbstractFlushingEventListener] processing flush-time cascades
2012-11-22 09:50:16,801 DEBUG [org.hibernate.event.def.AbstractFlushingEventListener] dirty checking collections
2012-11-22 09:50:16,801 DEBUG [org.hibernate.event.def.AbstractFlushingEventListener] Flushed: 0 insertions, 0 updates, 0 deletions to 2 objects
2012-11-22 09:50:16,801 DEBUG [org.hibernate.event.def.AbstractFlushingEventListener] Flushed: 0 (re)creations, 0 updates, 0 removals to 0 collections
2012-11-22 09:50:16,801 DEBUG [org.hibernate.pretty.Printer] listing entities:
2012-11-22 09:50:16,801 DEBUG [org.hibernate.pretty.Printer] br.com.cqa.lims.analise.Metodo{metodologia=br.com.cqa.lims.analise.Metodologia#1270, id=4688, preco=component[valor]{valor=0.00}, nome=SM 2110}
2012-11-22 09:50:16,801 DEBUG [org.hibernate.pretty.Printer] br.com.cqa.lims.analise.Metodologia{bibliografia=AMERICAN PUBLIC HEALTH ASSOCIATION, AMERICAN WORKS ASSOCIATION, WATER ENVIRONMENT FEDERATION. Standard Methods for the Examination of Water and Wastewater, 22nd ed. Washington, DC: American Public Health Association, 2012., id=1270, nome=SM, origem=Método Oficial, descricao=Standard Methods}
2012-11-22 09:50:16,801 DEBUG [org.hibernate.jdbc.ConnectionManager] aggressively releasing JDBC connection
2012-11-22 09:50:16,801 DEBUG [org.jboss.ejb3.entity.ManagedEntityManagerFactory] ************** closing entity managersession **************


esse bloco se repetiu varias vezes, provocando uma certa lentidão no sistema.

Alguem pode me dar uma luz ???
Hebert_Coelho

Cara, evita clocar esse tanto de código. Fica até dificil de ler ou responder…

O JSF funciona assim mesmo, você não deve colocar acesso ao banco diretamente em um get a não ser que você faça lazy:

if(car == null){

car = // get from database

}

return car;

Criado 22 de novembro de 2012
Ultima resposta 22 de nov. de 2012
Respostas 3
Participantes 3