Pessoal,
Alguem pode me ajudar a criar uma classe generica da rotina abaixo :
usuariosList = new LazyDataModel<Cadusu>() {
@Override
public List<Cadusu> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) {
int paginacao;
paginacao = 0;
for(Iterator<String> it = filters.keySet().iterator(); it.hasNext();) {
String filterProperty = it.next(); // table column name = field name
System.out.println("filterProperty is: " + filterProperty);
String filterValue = filters.get(filterProperty);
System.out.println("filterValue is: " + filterValue);
String Clausula = "and u."+filterProperty+" like'%"+filterValue+"%'";
System.out.println("filterValue is: " + Clausula);
paginacao=1;
cadusu = cadususervico.buscafindCadusu(first, pageSize,Clausula);
}
if (paginacao==0){
cadusu = cadususervico.buscafindCadusu(first, pageSize,"");
}
return cadusu;
}
};
usuariosList.setRowCount(cadususervico.buscacountCadusuTotal());
Pois, vao ter varios formularios que vao usar essa mesmo rotina, mudando apenas a entidade
Cria uma classe que extenda LazyDataModel.
Exemplo:
usuariosList = new [b]MeuLazyDataModel/b.load(first, pageSize, sortField, sortOrder, filters);
public class MeuLazyDataModel extends LazyDataModel {
@Override
public List<Cadusu> load(int i, int i1, String string, SortOrder so, Map<String, String> map) {
//Seu Código Aqui.
}
}
Algo neste sentido.
mas teria que passar a minha entidade na classe MeuLazyDataModel nao é ???
public class MeuLazyDataModel extends LazyDataModel<(nome da classe)>
Isso … troca pelo nome da sua entidade
Exemplo
entao cara, acho que nao tao esclarecedor , (nome da classe) teria que ser uma declaracao generica tb, pois vou usar isso em varios formularios.
public class MeuLazyDataModel extends LazyDataModel<T> {
@Override
public List<T> load(int i, int i1, String string, SortOrder so, Map<String, String> map) {
//Seu Código Aqui.
}
}
Exatamento como ele falou, so passar um Objeto qualquer, no caso ali em cima falei que é T.
coloquei exatamente assim :
*/
public class DataTablelLazy extends LazyDataModel<T> implements Serializable {
@Override
public List<T> load(int i, int i1, String string, SortOrder so, Map<String, String> map) {
System.out.print("teste");
return null;
}
}
mas esta dando o erro abaixo :
cannot find symbol
symbol: class T
[quote=evandro_araujo]coloquei exatamente assim :
*/
public class DataTablelLazy extends LazyDataModel<T> implements Serializable {
@Override
public List<T> load(int i, int i1, String string, SortOrder so, Map<String, String> map) {
System.out.print("teste");
return null;
}
}
mas esta dando o erro abaixo :
cannot find symbol
symbol: class T[/quote]
você deve declarar o tipo genérico na sua classe antes de repassá-lo para a classe-pai
public class DataTablelLazy<T> extends LazyDataModel<T> implements Serializable {
...
}
blz…o netbean sugeriu para fazer com classe abstrata conforme abaixo :
public abstract class DataTablelLazy<T> extends LazyDataModel<T> implements Serializable {
@Override
public List<T> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) {
return null;
}
}
nao entendi muito bem a chamada que o fabricio colocou :
usuariosList = new MeuLazyDataModel().load(first, pageSize, sortField, sortOrder, filters);
pelo que entendi, todo o bloco abaixo vai para o meu generico certo :
int paginacao;
paginacao = 0;
for(Iterator<String> it = filters.keySet().iterator(); it.hasNext();) {
String filterProperty = it.next(); // table column name = field name
System.out.println("filterProperty is: " + filterProperty);
String filterValue = filters.get(filterProperty);
System.out.println("filterValue is: " + filterValue);
String Clausula = "and u."+filterProperty+" like'%"+filterValue+"%'";
System.out.println("filterValue is: " + Clausula);
paginacao=1;
cadusu = cadususervico.buscafindCadusu(first, pageSize,Clausula);
}
if (paginacao==0){
cadusu = cadususervico.buscafindCadusu(first, pageSize,"");
}
return cadusu;