Criar Classe Generica

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;