Erro de paginação jpa+javascript+ajax+hibernate

0 respostas
W

alguem pode me ajudar minha aplicação que eu peguei exemplo da javamagazine ta dando erro na de fazer um filtro pela paginação:
quando consulto 23 ele pula para o 1 ou então para 34 isso acontece contatemente
como faco para arrrumar esse erro
eu tou usando ide netbeans
jpa + ajax + hibernate + java script
se alguem souber corrigir me enviar o email por favor vou a classe de paginação e java script

package br.com.javamagazine.ca;

//import java.sql.Date;

import java.util.List;

import org.hibernate.Criteria;

import org.hibernate.Session;

import org.hibernate.Transaction;

import org.hibernate.criterion.Example;

import org.hibernate.criterion.MatchMode;

import org.hibernate.criterion.Projections;

public final class PacienteRepository {

//private static final Date TODAY = new Date(System.currentTimeMillis());
    
    @SuppressWarnings("unchecked")
public static List<Paciente> open() {
	Session session = TransacaoAplicacao.getSessionFactory().openSession();
	Criteria criterio = session.createCriteria(Paciente.class);
	List<Paciente> lista = criterio.list();
	session.close();
	return lista;
}
    
    
    @SuppressWarnings("unchecked")
protected static Paciente get(Paciente paciente) throws ControleAcessoPersistenceException  {
	Session session = TransacaoAplicacao.getSessionFactory().openSession();
	session.beginTransaction();
	Criteria crit = session.createCriteria(Paciente.class);
	crit.add(Example.create(paciente).excludeZeroes().ignoreCase().enableLike(MatchMode.EXACT));
	List l = crit.list();
	if(l.size() == 0) {
		throw new ControleAcessoPersistenceException("Paciente nao existe!");
	}
	paciente = (Paciente)crit.list().get(0);
	session.close();
	return paciente;
}
	
protected static void open(Paciente paciente) {
	Session session = TransacaoAplicacao.getSessionFactory().openSession();
	Transaction tx = session.beginTransaction();
	if(session.contains(paciente)){
		session.get(paciente.getClass(), paciente.getId());
	} else {
		session.load(paciente, paciente.getId());
	}
	tx.commit();
	session.close();
}

package br.com.javamagazine.ca;

import java.util.List;

public final class ControleAcessoFacadePaciente {

public static int countPaciente(Paciente filtro) {
	return PacienteRepository.countPaciente(filtro);
}

public static List<Paciente> pesquisar(Paciente filtro, int start, int limit) {
	return PacienteRepository.carregarPaciente(filtro, start, limit);
}

public static List<Paciente> pesquisar(Paciente paciente) {
	return PacienteRepository.pesquisar(paciente);
}

public static Paciente cadastrar(Paciente paciente) {
	return PacienteRepository.cadastrar(paciente);
}	
public static Paciente salvar(Paciente paciente) {
	return PacienteRepository.save(paciente);
}
public static boolean excluir(Paciente paciente) {
	return PacienteRepository.delete(paciente);
}

public static Paciente abrir(Paciente paciente) {
	PacienteRepository.open(paciente);
	return paciente;
}

}

protected static Paciente save(Paciente paciente) {
	Session session = TransacaoAplicacao.getSessionFactory().openSession();
	Transaction tx = session.beginTransaction();
	session.update(paciente.getClass().getName(), paciente);
	tx.commit();
	session.close();
	open(paciente);
	return paciente;
}

protected static boolean delete(Paciente paciente) {
	Session session = TransacaoAplicacao.getSessionFactory().openSession();
	Transaction tx = session.beginTransaction();
	if(session.contains(paciente)){
		session.get(paciente.getClass(), paciente.getId());
	} else {
		session.load(paciente, paciente.getId());
	}
	session.delete(paciente.getClass().getName(), paciente);
	tx.commit();
	session.close();
	return true;
}

protected static Paciente cadastrar(Paciente paciente) {
                   
       	System.out.println(paciente);
	Session session = TransacaoAplicacao.getSessionFactory().openSession();
	Transaction tx = session.beginTransaction();
	session.persist(paciente);
	tx.commit();
	session.close();
	open(paciente);
	return paciente;
}

	protected static int countPaciente(Paciente filtro) {
	Session session = TransacaoAplicacao.getSessionFactory().openSession();
	session.beginTransaction();
	Criteria criterio = session.createCriteria(Paciente.class);
	criterio.setProjection(Projections.rowCount())
		.add(Example.create(filtro).excludeZeroes().ignoreCase().enableLike(MatchMode.ANYWHERE));
	int total = (Integer)criterio.list().get(0);
	session.close();
	return total;
}

@SuppressWarnings("unchecked")
protected static List<Paciente> carregarPaciente(Paciente filtro, int start, int limit) {
	Session session = TransacaoAplicacao.getSessionFactory().openSession();
	session.beginTransaction();
	List lista = session.createCriteria(Paciente.class)
				.setFirstResult(start).setMaxResults(limit)
				.add(Example.create(filtro).excludeZeroes().ignoreCase().enableLike(MatchMode.ANYWHERE))
				.list();
	session.close();
	return lista;
}

@SuppressWarnings("unchecked")
public static List<Paciente> pesquisar(Paciente filtro) {
	Session session = TransacaoAplicacao.getSessionFactory().openSession();
	session.beginTransaction();
	List<Paciente> lista = session.createCriteria(Paciente.class)
	.add(Example.create(filtro).excludeZeroes().ignoreCase().enableLike(MatchMode.ANYWHERE))
	.list();
	session.close();
	return lista;
            
    }

}

JAVAMAGAZINE.Paciente = function() {

var grid;

var hasGrid = false;

this.CACHE = false;

var pesquisar = function() {

JAVAMAGAZINE.Paciente.CACHE = false;

var paciente = {id:0,prontuario:’’,nome:’’,acompanhante:’’,datainscricao:’’, datanascimento:’’,endereco:’’,bairro:’’,fone1:’’,fone2:’’,celular:’’,observacoes:’’,assistsocial:’’,audiometria:’’,otorrino:’’,psicologo:’’,premolde:’’,bera:’’,selecao:’’,neuro:’’,entrega:’’,apmarcacod:’’,adaptacaoa:’’,adaptacaob:’’,terapiac:’’,terapiad:’’};

dwr.util.getValues(paciente);

JAVAMAGAZINE.excludeNone(paciente);

var json = new JAVAMAGAZINE.Paciente.json();

json.setObj(paciente);

var datamapping = [

{name: id, mapping: id },

{name: doc_prontuario, mapping: prontuario},

{name: doc_nome, mapping: nome},

{name: doc_acompanhante, mapping: acompanhante},

{name: doc_datainscricao, mapping: datainscricao},

{name: doc_datanascimento, mapping: datanascimento},

{name: doc_endereco, mapping: endereco},

{name: doc_bairro, mapping: bairro},

{name: doc_fone1, mapping: fone1},

{name: doc_fone2, mapping: fone2},

{name: doc_celular, mapping: celular},

{name: doc_observacoes, mapping: observacoes},

{name: doc_assistsocial, mapping: assistsocial},

{name: doc_audiometria, mapping: audiometria},

{name: doc_otorrino, mapping: otorrino},

{name: doc_psicologo, mapping: psicologo},

{name: doc_premolde, mapping: premolde},

{name: doc_bera, mapping: bera},

{name: doc_selecao, mapping: selecao},

{name: doc_neuro, mapping: neuro},

{name: doc_entrega, mapping: entrega},

{name: doc_apmarcacod, mapping: apmarcacod},

{name: doc_adaptacaoa, mapping: adaptacaoa},

{name: doc_adaptacaob, mapping: adaptacaob},

{name: doc_terapiac, mapping: terapiac},

{name: doc_terapiad, mapping: terapiad}
];
	var columns = [
	   	{header:"id",width:20, dataIndex:'id'},
                    {id:'Desc',header:"prontuario",dataIndex:'doc_prontuario',width:20,'sortable':true},
                    {id:'Nome',header:"nome",dataIndex:'doc_nome',width:250,'sortable':true},
                    {id:'Nome',header:"acompanhante",dataIndex:'doc_acompanhante',width:250,'sortable':true},
                    {id:'Desc',header:"datainscricao",dataIndex:'doc_datainscricao',width:50,'sortable':true},
                    {id:'Desc',header:"datanascimento",dataIndex:'doc_datanascimento',width:50,'sortable':true},
                    {id:'Desc',header:"endereco",dataIndex:'doc_endereco',width:250,'sortable':true},
                    {id:'Desc',header:"bairro",dataIndex:'doc_bairro',width:250,'sortable':true},
                    {id:'Desc',header:"fone1",dataIndex:'doc_fone1',width:250,'sortable':true},
                    {id:'Desc',header:"fone2",dataIndex:'doc_fone2',width:250,'sortable':true},
                    {id:'Desc',header:"celular",dataIndex:'doc_celular',width:250,'sortable':true},
                    {id:'Desc',header:"observacoes",dataIndex:'doc_observacoes',width:250,'sortable':true},
		{id:'Desc',header:"assistsocial",dataIndex:'doc_assistsocial',width:100,'sortable':true},
                    {id:'Desc',header:"audiometria",dataIndex:'doc_audiometria',width:100,'sortable':true},
                    {id:'Desc',header:"otorrino",dataIndex:'doc_otorrino',width:100,'sortable':true},
                    {id:'Desc',header:"psicologo",dataIndex:'doc_psicologo',width:100,'sortable':true},
                    {id:'Desc',header:"premolde",dataIndex:'doc_premolde',width:100,'sortable':true},
                    {id:'Desc',header:"bera",dataIndex:'doc_bera',width:100,'sortable':true},
                    {id:'Desc',header:"selecao",dataIndex:'doc_selecao',width:100,'sortable':true},
                    {id:'Desc',header:"neuro",dataIndex:'doc_neuro',width:100,'sortable':true},
                    {id:'Desc',header:"entrega",dataIndex:'doc_entrega',width:100,'sortable':true},
                    {id:'Desc',header:"apmarcacod",dataIndex:'doc_apmarcacod',width:100,'sortable':true},
                    {id:'Desc',header:"adaptacaoa",dataIndex:'doc_adaptacaoa',width:100,'sortable':true},
                    {id:'Desc',header:"adaptacaob",dataIndex:'doc_adaptacaob',width:100,'sortable':true},
                    {id:'Desc',header:"terapiac",dataIndex:'doc_terapiac',width:100,'sortable':true},
                    {id:'Desc',header:"terapiad",dataIndex:'doc_terapiad',width:100,'sortable':true}
		
	];
				
	var ds = new Ext.data.Store({
		proxy: new JAVAMAGAZINE.data.MemoryProxy(json),
		reader: new Ext.data.JsonReader({root:'results',totalProperty:'total',id:'id'}, datamapping)
	});
	var cm = new Ext.grid.ColumnModel(columns);
	grid = new Ext.grid.Grid('griddoc',{ds:ds,cm:cm,autoSizeColumns:true,autoHeight:true,loadMask:false,trackMouseOver:true});
	cellclick = function (grid, rowIndex, colIndex, e){
		var data = grid.getSelectionModel().getSelected().data;
		AjaxFacadePaciente.abrir({id:data.id}, function(retorno){dwr.util.setValues(retorno);});
	};
	grid.addListener('cellclick', cellclick);
	grid.render();
	var gridHeader = grid.getView().getHeaderPanel(true);
	var gridFooter = grid.getView().getFooterPanel(true);
	var paging = new Ext.PagingToolbar(gridHeader,ds,
		{pageSize:20,
		displayInfo:true,
		displayMsg:'Exibindo o resultado: {0} a {1} de {2} registros',
		emptyMsg:"Sem resultados a exibir"});
	ds.load({params:{start:0, limit:20}});
	var layout = Ext.BorderLayout.create({
		center: { 
			margins:{left:3,top:3,right:3,bottom:3},
			panels: [new Ext.GridPanel(grid)]
		}
	}, 'doc-grid');
	hasGrid = true;
	JAVAMAGAZINE.Paciente.CACHE = true;
	
};

var validar = function(paciente) {
	if(paciente.prontuario.trim() == ''){
		var msg = "Preencha o Prontuario no formul&aacute;rio";
		Ext.MessageBox.show({title: 'Erro...',msg:msg,width:240,progress:false,closable:true,shadow:false,proxyDrag:true,modal:true});
		return false;
	}
            if(paciente.nome.trim() == ''){
		var msg = "Preencha o nome no formul&aacute;rio";
		Ext.MessageBox.show({title: 'Erro...',msg:msg,width:240,progress:false,closable:true,shadow:false,proxyDrag:true,modal:true});
		return false;
	}
return true;
};

var cadastrar = function() {
            var paciente = {prontuario:'',nome:'',acompanhante:'',datainscricao:'', datanascimento:'',endereco:'',bairro:'',fone1:'',fone2:'',celular:'',observacoes:'',assistsocial:'',audiometria:'',otorrino:'',psicologo:'',premolde:'',bera:'',selecao:'',neuro:'',entrega:'',apmarcacod:'',adaptacaoa:'',adaptacaob:'',terapiac:'',terapiad:''};
      	dwr.util.getValues(paciente);
	if(validar(paciente)) {
		AjaxFacadePaciente.cadastraPaciente(paciente, {
			callback:function(result){
				if(hasGrid){
					var ds = grid.getDataSource();
					var temp = {
		    id:result.id,
		    doc_prontuario:result.prontuario,
                        doc_nome:result.nome,
                        doc_acompanhante:result.acompanhante,
                        doc_datainscricao:result.datainscricao,
                        doc_datanascimento:result.datanascimento,
                        doc_endereco:result.endereco,
                        doc_bairro:result.bairro,
                        doc_fone1:result.fone1,
                        doc_fone2:result.fone2,
                        doc_celular:result.celular,
                        doc_observacoes:result.observacoes,
                        doc_assistsocial:result.assistsocial,
                        doc_audiometria:result.audiometria,
                        doc_otorrino:result.otorrino,
                        doc_psicologo:result.psicologo,
                        doc_premolde:result.premolde,
                        doc_bera:result.bera,
                        doc_selecao:result.selecao,
                        doc_neuro:result.neuro,
                        doc_entrega:result.entrega,
                        doc_apmarcacod:result.apmarcacod,
                        doc_adaptacaoa:result.adaptacaoa,
                        doc_adaptacaob:result.adaptacaob,
                        doc_terapiac:result.terapiac,
                        doc_terapiad:result.terapiad
                        
					};
					var record = new Ext.data.Record(temp);
					var ds = grid.getDataSource();
					var index = ds.getCount();//0;
					ds.insert(index, record);
					ds.commitChanges();
					ds.reload();
					grid.getView().refresh(true);
				} else {
					pesquisar();
				}
			},
			errorHandler:function(errorString, exception) {
				Ext.MessageBox.show({title: 'Erro...',msg:errorString,width:240,progress:false,closable:true,shadow:false,proxyDrag:true,modal:true});
			},
			timeout:5000,async:false
		});
	}

};

var salvar = function() {
	try {
		var selected = grid.getSelectionModel().getSelected().get('id');
		var paciente = {id:0,prontuario:'',nome:'',acompanhante:'',datainscricao:'', datanascimento:'',endereco:'',bairro:'',fone1:'',fone2:'',celular:'',observacoes:'',assistsocial:'',audiometria:'',otorrino:'',psicologo:'',premolde:'',bera:'',selecao:'',neuro:'',entrega:'',apmarcacod:'',adaptacaoa:'',adaptacaob:'',terapiac:'',terapiad:''};
		dwr.util.getValues(paciente);
		AjaxFacadePaciente.salvarPaciente(paciente, {
			callback:function(result){
				var ds = grid.getDataSource();
				ds.getById(selected).set('doc_prontuario',result.prontuario);
                                    ds.getById(selected).set('doc_nome',result.nome);
                                    ds.getById(selected).set('doc_acompanhante',result.acompanhante);
                                    ds.getById(selected).set('doc_datainscricao',result.datainscricao);
                                    ds.getById(selected).set('doc_datanascimento',result.datanascimento);
                                    ds.getById(selected).set('doc_endereco',result.endereco);
                                    ds.getById(selected).set('doc_bairro',result.bairro);
                                    ds.getById(selected).set('doc_fone1',result.fone1);
                                    ds.getById(selected).set('doc_fone2',result.fone2);
                                    ds.getById(selected).set('doc_celular',result.celular);
                                    ds.getById(selected).set('doc_observacoes',result.observacoes);
				ds.getById(selected).set('doc_assistsocial',result.assistsocial);
				ds.getById(selected).set('doc_audiometria',result.audiometria);
                                    ds.getById(selected).set('doc_otorrino',result.otorrino);
                                    ds.getById(selected).set('doc_psicologo',result.psicologo);            
                                    ds.getById(selected).set('doc_premolde',result.premolde);          
                                    ds.getById(selected).set('doc_bera',result.bera);
                                    ds.getById(selected).set('doc_neuro',result.neuro);
                                    ds.getById(selected).set('doc_entrega',result.entrega);
                                    ds.getById(selected).set('doc_apmarcacod',result.apmarcacod);
                                    ds.getById(selected).set('doc_adaptacaoa',result.adaptacaoa);
                                    ds.getById(selected).set('doc_adaptacaob',result.adaptacaob);
                                    ds.getById(selected).set('doc_terapiac',result.terapiac);
                                    ds.getById(selected).set('doc_terapiad',result.terapiad);
                                   
				//ds.commitChanges();
				//grid.getView().refresh(true);
			},
			errorHandler:function(errorString, exception) {
				Ext.MessageBox.show({title: 'Erro...',msg:errorString,width:240,progress:false,closable:true,shadow:false,proxyDrag:true,modal:true});
			},
			timeout:5000,async:false
		});
	} catch (e) {
		Ext.MessageBox.show({
			title: 'Aguarde...',msg: "selecione um registro " + e.message,
			width:240,progress:false,closable:true,shadow:false,proxyDrag:true,	modal:true
		});
	}
};

var remover = function() {
	try {
		var deleted = grid.getSelectionModel().getSelected().get('id');
			/*  */
		Ext.MessageBox.confirm('Confirm', 'Deseja excluir o(s) registro(s) selecionado(s)?', 
			function(btn){
				if(btn == 'yes'){
					var selecteds = grid.getSelectionModel().getSelections();
					var ds = grid.getDataSource();
					list = new JAVAMAGAZINE.Collection();
					for(var i = 0; i < selecteds.length; i++){
						var selected = selecteds[i];
						var temporario = {id:selected.get('id')};
						list.add(temporario);
					}
					AjaxFacadePaciente.removePaciente(list.list(), {
						callback:function(e){
							if(e) {
								for(var i = 0; i < selecteds.length; i++){
									ds.remove(selecteds[i]);
								}
							} else {
								Ext.MessageBox.show({
									title: 'Aguarde...',msg: "Erro na remo&ccedil;&atilde;o: ",
									width:240,progress:false,closable:true,shadow:false,
									proxyDrag:true,modal:true
								});
							}
						},
						errorHandler:function(errorString, exception) {
							Ext.MessageBox.show({
								title: 'Aguarde...',msg: "Erro na remo&ccedil;&atilde;o: " + errorString,
								width:240,progress:false,closable:true,shadow:false,proxyDrag:true,modal:true
							});
						},
						timeout:1000,
						async:false
					});
				}
			}
		);
	} catch (e) {
		Ext.MessageBox.show({
			title: 'Aguarde...',msg: "selecione um item para excluir",
			width:240,progress:false,closable:true,shadow:false,proxyDrag:true,	modal:true
		});
	}
};

var limpar = function() {
	dwr.util.byId('pacienteform').reset();
};


return {
	init:function(){
		var innerLayout = JAVAMAGAZINE.Control.getInnerLayout();
		innerLayout.beginUpdate();
		var tb = innerLayout.getRegion("south").getPanel("doc-preview").getToolbar();
		tb.add(
		{
			text: 'Pesquisar',
			enableToggle: true,
			toggleHandler:pesquisar,
			pressed: true
		},
		{
			text: 'Limpar',
			enableToggle: true,
			toggleHandler:limpar,
			pressed: true
		},
		{
			text: 'Cadastrar',
			enableToggle: true,
			toggleHandler:cadastrar,
			pressed: true
		}
		);
        tb.addSeparator();
        tb.add(
		{
			text: 'Alterar',
			enableToggle: true,
			toggleHandler:salvar,
			pressed: true
		},
		{
			text: 'Excluir',
			enableToggle: true,
			toggleHandler:remover,
			pressed: true
		}
		);
		innerLayout.getRegion("south").getPanel("doc-preview").refresh();
		innerLayout.restoreState();
        innerLayout.endUpdate(true);

	}
};

}();

JAVAMAGAZINE.Paciente.json = function(){this.obj;};

JAVAMAGAZINE.Paciente.json.prototype.setObj = function(obj){this.obj = obj;};

JAVAMAGAZINE.Paciente.json.prototype.open = function(start, limit){

var dto = {total:0,results:[]};

AjaxFacadePaciente.openPaciente(this.obj, start, limit, JAVAMAGAZINE.Paciente.CACHE, {

callback:function(result){dto = result; },

errorHandler:function(errorString, exception) {

Ext.MessageBox.show({title: Aguarde…’,msg:errorString,width:240,progress:false,closable:true,shadow:false,proxyDrag:true,modal:true});

},

timeout:1000,async:false

});

return dto;

};

por favor se alguem pode me ajudar muito obrigado que seja até um tutorial de erros de paginação ta incomodado muito eu e meu cliente.
valeu

Criado 27 de abril de 2008
Respostas 0
Participantes 1