quando eu clico nesta opcao
***************consultar.jspx
<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>
</div>
executo a rotina abaixo
Set<Analise> analisesConsultadas = analiseService
.buscarAnalisesPadraoPorMatriz(matriz);
************************************* retorna 1043 linhas
for (Analise analise : analisesConsultadas) {
AnaliseContratada analiseContratada = new AnaliseContratada(analise);
AnaliseItem analiseItem = AnaliseItemHelper.criarAnaliseItem(
itemAtual, analiseContratada);
this.todasAnalises.add(analiseItem);
}
Logo apos a rotina acima, ele vai preencher o dataTable, como a paginação no total de 1043 linhas, gerando aproximadamente 10 paginas mais ou menos.
TERIA COMO A PRIMEIRA VEZ QUE CARREGAR A ROTINA ACIMA, CARREGAR OS PRIMEIROS 100 REGISTROS, E QUANDO CLICAR NA PAGINA 2 A PAGINACACAO IRA CARREGAR DE 101 A 200
E SE APERTAR A PAGINA 3 IRA CARREGAR DE 201 ATE 300 ETC
teria como fazer isso ??? alguem teria outra solução, pq a rotina para carregar a rotina abaixo esta demorando cerca de 8 segundos:
AnaliseItem analiseItem = AnaliseItemHelper.criarAnaliseItem(
itemAtual, analiseContratada);
*************************************************************itensorcamento.jspx
<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" />
***************consultar.jspx
<rich:dataTable rows="10" rowClasses="lineOdd,lineEven" footerClass="paginador"
id="resultadoPesquisa" value="#{ConsultarMatrizMB.matrizes}"
var="matrizAtual" styleClass="richDataTable">
<f:facet name="header">
<rich:columnGroup sytleClass="collCenter">
<rich:column>
<h:outputText width="90%" value="#{messages['label.nome']}" />
</rich:column>
<rich:column width="10%" styleClass="collCenter">
<h:outputText value="#{messages['label.opcoes']}" />
</rich:column>
</rich:columnGroup>
</f:facet>
<h:column>
<h:outputText value="#{matrizAtual.nome}" />
</h:column>
<h:column>
<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>
</div>
</h:column>
<f:facet name="footer">
<rich:datascroller ajaxSingle="true" for="resultadoPesquisa" />
</f:facet>
</rich:dataTable>
***************************************************ConsultarMatrizMB
public class ConsultarMatrizMB extends AuxilioPreenchimento implements PageMB {
public void selecionarMatriz() {
Matriz matrizSelecionada = (Matriz) matrizes.getRowData();
this.getMbRetorno().setObjetoSelecionado(matrizSelecionada);
FacesUtils.renderPage(this.getMbRetorno().getUrl());
}
***************************************************ManterItemOrcamentoMB
public class ManterItemOrcamentoMB implements PageMB, OperacaoConfirmavel,
CallbackableMB {
@EJB(name = "AnaliseServiceBean/local")
private AnaliseServiceLocal analiseService;
public void selecionarMatriz() {
// Prepara os elementos da tela que dependem da matriz
this.carregarElementosConformeMatrizSelecionada();
}
private void carregarElementosConformeMatrizSelecionada() {
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);
}
}
*****************************************************AnaliseServiceBean
public class AnaliseServiceBean implements AnaliseServiceLocal {
@PersistenceContext(unitName = "lims-pu")
EntityManager em;
@EJB(name = "ExecucaoServiceBean/local")
private ExecucaoServiceLocal resultadoService;
@SuppressWarnings("unchecked")
public Set<Analise> buscarAnalisesPadraoPorMatriz(Matriz matriz) {
StringBuffer jpql = new StringBuffer();
jpql.append("select a ");
jpql.append("from Analise a ");
jpql.append("where a.padrao = true ");
jpql.append(" and a.matriz = :matriz ");
Query query = em.createQuery(jpql.toString());
query.setParameter("matriz", matriz);
query.setHint("org.hibernate.cacheable", true);
Set<Analise> analises = new HashSet<Analise>(query.getResultList());
return analises;
}
***************************************************** AnaliseItemHelper
public class AnaliseItemHelper {
public static AnaliseItem criarAnaliseItem(ItemOrcamento itemOrcamento,
AnaliseContratada analiseContratada) {
return new AnaliseItem(analiseContratada, itemOrcamento, getService()
.buscarMetodosPorEnsaioMatriz(analiseContratada.getEnsaio(),
analiseContratada.getMatriz()));
}
*****************************************************
public class ImportadorServiceBean implements ImportadorServiceLocal {
@PersistenceContext(unitName = "lims-pu")
private EntityManager em;
@SuppressWarnings("unchecked")
public Set<Metodo> buscarMetodosPorEnsaioMatriz(Ensaio ensaio, Matriz matriz) {
StringBuilder jpql = new StringBuilder("select a.metodo ");
jpql.append("from Analise a ");
jpql.append("where a.ensaio = :ensaio ");
jpql.append("and a.matriz = :matriz ");
Query query = em.createQuery(jpql.toString());
query.setParameter("ensaio", ensaio);
query.setParameter("matriz", matriz);
return new HashSet<Metodo>(query.getResultList());
}