A veces necesitamos hacer filtros complejos sobre un List<>, continuamos con el blog anterior .
Buscar elemento en un List<> Embebido/Referenciado/MongoDB + ejbjmooordb
donde definĆamos los entitys, controller y paginas java server faces. Ahora implementaremos los filtros para buscar un determinado usuario que puede estar en la posicion 1 o 2 del List,
Deseamos filtrar en List<Usuario>, el encargado de tienda si observamos para algunas condiciones del subtipoorden, este estarĆ” en la posiciĆ³n 2 y para otras condiciones del subtipo de orden lo encontraremos en la posiciĆ³n 1.
Buscar elemento en un List<> Embebido/Referenciado/MongoDB + ejbjmooordb
donde definĆamos los entitys, controller y paginas java server faces. Ahora implementaremos los filtros para buscar un determinado usuario que puede estar en la posicion 1 o 2 del List,
Deseamos filtrar en List<Usuario>, el encargado de tienda si observamos para algunas condiciones del subtipoorden, este estarĆ” en la posiciĆ³n 2 y para otras condiciones del subtipo de orden lo encontraremos en la posiciĆ³n 1.
Tendremos que crear un filtro complejo en el cual para obtener el usuario.#.username puede ser 1 o 2 dependiendo de las condiciones :;
posiciĆ³n | subtipoorden |
2 | tiendaabodega |
2 | bodegaatienda |
2 | bodegaainterno |
2 | internoabodega |
1 | tiendaainterno |
1 | iternoatienda |
En este caso lo encontramos en la posiciĆ³n 1 al encargado de tienda ya que subtipoorden="tiendaainterno"
En el caso que el sutipoorden=""tiendaabodega" el encargado de tienda estara en la posiciĆ²n 2:
Creamos los filtros para que busque en la posiciĆ³n 2 o 1 en base al valor de subtipoorden.,
Imaginemos que usamos un <p:autocomplete> para hacer el filtro
Bson filter_1 =Filters.and(Filters.eq("usuario.2.username",encargadotienda.getUsername()),
Filters.or(Filters.eq("subtipoorden","tiendaabodega"),
Filters.eq("subtipoorden","bodegaatienda"),
Filters.eq("subtipoorden","bodegaainterno"),
Filters.eq("subtipoorden","internoabodega")));
Bson filter_2 =Filters.and(Filters.eq("usuario.1.username",encargadotienda.getUsername()),
Filters.or(Filters.eq("subtipoorden","tiendaainterno"),
Filters.eq("subtipoorden","iternoatienda")));
Bson filter =Filters.or(filter_1, filter_2);
ordenList = ordenRepository.filtersPagination(filter, page, rowPage, new Document("idorden", -1));
Comments