Services

Se utiliza para implementar métodos avanzados de búsquedas tales como usados por autocompletes.

Crear LookupServices para los atributos.

Debemos crear AutoincrementableServices para los autoincrementable.

Implementar

  • Inyectar Repository

  • Crear los métodos para autocomplete de los atributos que considere el desarrollador.

  • if (query.length() < 1){ se puede indicar el tamaño de atributos a considerar para la busqueda

  • Si se usa un autocomplete en un formulario se puede indicar en el componente la cantidad de caracteres a partir de los cuales realizar la búsqueda.

  • Se debe definir un parametro llamado field en el componente <p:autocomplete> que se pasara el nombre del atributo del entity que se realizara la busqueda del autocomplete.

String field = (String) UIComponent.getCurrentComponent(FacesContext.getCurrentInstance()).getAttributes().get("field");

AutoincrementableServices.java

@Stateless
public class AutoincrementableServices {

    @Inject
    AutoincrementableRepository autoincrementableRepository;

    public Integer getContador(String coleccion) {
        Integer id = 0;
        try {
            Optional<Autoincrementable> autoincrementableOptional = autoincrementableRepository.find(new Document("documento", coleccion));
            if (!autoincrementableOptional.isPresent()) {

                Autoincrementable autoincrementable = new Autoincrementable(coleccion, 0);
                if (autoincrementableRepository.save(autoincrementable)) {
                }
            }

            Autoincrementable autoincrementable = new Autoincrementable();
            autoincrementable = autoincrementableRepository.findOneAndUpdate("documento", coleccion, "contador");

            id = autoincrementable.getContador();
        } catch (Exception e) {
            JsfUtil.errorMessage("complete() " + e.getLocalizedMessage());
        }
        return id;
    }

}

BodegaServices.java

import com.avbravo.ejbspard.repository.BodegaRepository;
import com.avbravo.avbravoutils.JsfUtil;
import com.avbravo.ejbspard.entity.*;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import org.bson.Document;

/**
 *
 * @authoravbravo
 */
@Stateless
public class BodegaServices {

    @Inject
    BodegaRepository bodegaRepository;

    public List<Bodega> complete(String query) {
        List<Bodega> suggestions = new ArrayList<>();
           try {
               query = query.trim();
               if (query.length() < 1) {
                   return suggestions;
               }   
               String field = (String) UIComponent.getCurrentComponent(FacesContext.getCurrentInstance()).getAttributes().get("field");               
               suggestions=  bodegaRepository.findRegex(field,query,true,new Document(field,1));

           } catch (Exception e) {
                    JsfUtil.errorMessage("complete() " + e.getLocalizedMessage());
           }
           return suggestions;
    }    

}

RolServices.java

import com.avbravo.ejbspard.repository.RolRepository;
import com.avbravo.avbravoutils.JsfUtil;
import com.avbravo.ejbspard.entity.*;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import org.bson.Document;

/**
 *
 * @authoravbravo
 */
@Stateless
public class RolServices {

    @Inject
    RolRepository rolRepository;

    public List<Rol> complete(String query) {
        List<Rol> suggestions = new ArrayList<>();
           try {
               query = query.trim();
               if (query.length() < 1) {
                   return suggestions;
               }   
               String field = (String) UIComponent.getCurrentComponent(FacesContext.getCurrentInstance()).getAttributes().get("field");               
               suggestions=  rolRepository.findRegex(field,query,true,new Document(field,1));

           } catch (Exception e) {
                    JsfUtil.errorMessage("complete() " + e.getLocalizedMessage());
           }
           return suggestions;
    }

}

Last updated

Was this helpful?