Plantillas Primefaces JSF
  • Introduction
  • Proyecto JEE
    • Introduccion
    • POSEIDON
    • Descomprimir template
    • Proyecto JEE
    • Dependencias
    • Sources
    • Ejecutar proyecto
    • TEMPLATE RESPONSIVE
    • Plantilla Bootfaces
      • Introduction
      • Plantilla
        • Clonar Template
        • Proyecto EJB
        • Proyecto Web
        • template base
        • top
        • footer.xhtml
        • Properties
        • Roles
        • Util
        • template base
        • page
  • Capitulo II. Crear EJB
    • MongoDB
    • Proyecto EJB
    • Dependencias
    • Paquetes
    • Provider
    • Entity
    • Repository
    • Converter
    • Services
    • Datamodel
  • Capitulo III. Configuracion
    • Paquetes
    • Util
    • Properties
    • Template
    • Footer
    • Logo
    • Componentes
  • Capitulo IV. Login
    • Dependencias ejb
    • Roles
    • ApplicationMenu
    • RolAdministrador
    • ValidadorRoles
    • LoginController
    • Login.xhtml
  • Capitulo V. Menu
    • Menu
  • Capitulo VI Controller
    • Controller Simple
    • Implementar IController
    • Colapsar Codigo
    • Atributos
    • GetPages
    • Init
    • Reset
    • Prepare
    • ShowAll
    • IsNew
    • Save
    • Edit
    • Delete
    • Print
    • handleSelected
    • Paginacion
    • Codigo Completo
  • Capitulo VII Formularios
    • Carpetas
    • list.xhtml
    • new
    • view
  • Capitulo X Referenciados y Embebidos
    • Referenciados
  • Plantilla Bootfaces
    • Untitled
Powered by GitBook
On this page
  • AutoincrementableServices.java
  • BodegaServices.java
  • RolServices.java

Was this helpful?

  1. Capitulo II. Crear EJB

Services

PreviousConverterNextDatamodel

Last updated 6 years ago

Was this helpful?

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;
    }

}