Filtrar por un entity Referenciado

  • Contamos un entity @Referenced() Conductor dentro de un entity Viajes

  • Deseamos filtarlo mediante un autocomplete.

Entity

public class Viaje {

    @Id
    private Integer idviaje;
    @Referenced(documment = "Vehiculo",
            field = "idvehiculo", javatype = "Integer", lazy = false,
            repository = "com.avbravo.transporteejb.repository.VehiculoRepository")
    private Vehiculo vehiculo;
    @Referenced(documment = "Conductor",
            field = "idconductor", javatype = "Integer", lazy = false,
            repository = "com.avbravo.transporteejb.repository.ConductorRepository")
    private Conductor conductor;

    private String comentarios;

    private Double kmestimados;
    private Double costocombustible;

    private Date fechahorainicioreserva;
    private Date fechahorafinreserva;
    private String activo;

    private String lugarpartida;
    private String lugardestino;
    private String realizado;

    @Embedded
    List<UserInfo> userInfo;
    //set/get
    }

Formulario

Seleccionar un conductor del autocomplete

En el formulario list.xhtml

  • Agregar el componente <e:autocompleteconductor>

 <b:row>

 <b:column medium-screen="6">
      <p:outputLabel value="#{msg['field.conductor']}"/>
       <e:autocompleteconductor listener="#{viajeController.searchBy('conductor')}"
                                value="#{viajeController.lookupServices.conductor}"
                                itemLabel=" #{p.nombre}"
                                dropdown="true"
                                minQueryLength="0"
                                field="nombre"
                               update=" :form:dataTable"/>


  </b:column>
</b:row>

LokupServices

  • Agregar un objeto de tipo Conductor

 private Conductor conductor;
 //set/get

Controller

searchBy()

@Override
    public String searchBy(String string) {
        try {

            loginController.put("searchviaje", string);

            writable = true;
            move();

        } catch (Exception e) {
            errorServices.errorMessage(nameOfClass(), nameOfMethod(), e.getLocalizedMessage());
        }
        return "";
    }// </editor-fold>

move()

  • Agregar el case para conductor

case "conductor":
if (lookupServices.getConductor().getIdconductor()!= null) {
viajeList = viajeRepository.findPagination(new Document("conductor.idconductor", lookupServices.getConductor().getIdconductor()), page, rowPage, new Document("idviaje", -1));
} else {
viajeList = viajeRepository.findPagination(page, rowPage, sort);
}

break;
  • Segmento de código

@Override
    public void move() {

        try {

            Document doc;
            Document sort = new Document("idviaje", -1);

            switch (loginController.get("searchviaje")) {
                case "_init":
                case "_autocomplete":
                    viajeList = viajeRepository.findPagination(page, rowPage, sort);

                    break;
                case "_betweendates":
                    viajeList = viajeRepository.filterBetweenDatePaginationWithoutHours("activo", "si", "fechahorainicioreserva", lookupServices.getFechaDesde(), "fechahorafinreserva", lookupServices.getFechaHasta(), page, rowPage, new Document("idviaje", -1));

                    break;

                case "conductor":
                    if (lookupServices.getConductor().getIdconductor()!= null) {
                        viajeList = viajeRepository.findPagination(new Document("conductor.idconductor", lookupServices.getConductor().getIdconductor()),  page, rowPage, new Document("idviaje", -1));
                    } else {
                        viajeList = viajeRepository.findPagination(page, rowPage, sort);
                    }

                    break;
                case "idviaje":
                    if (lookupServices.getIdviaje() != null) {
                        viajeList = viajeRepository.findPagination(new Document("idviaje", lookupServices.getIdviaje()), page, rowPage, new Document("idviaje", -1));
                    } else {
                        viajeList = viajeRepository.findPagination(page, rowPage, sort);
                    }

                    break;


                default:

                    viajeList = viajeRepository.findPagination(page, rowPage, sort);
                    break;
            }

            viajeFiltered = viajeList;

            viajeDataModel = new ViajeDataModel(viajeList);

        } catch (Exception e) {
            errorServices.errorDialog(nameOfClass(),nameOfMethod(), nameOfMethod(), e.getLocalizedMessage());
        }
    }// </editor-fold>

Last updated