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