@Named
@ViewScoped
public class SolicitudController implements Serializable, IController {
// <editor-fold defaultstate="collapsed" desc="fields">
private static final long serialVersionUID = 1L;
List<Facultad> suggestionsFacultad = new ArrayList<>();
List<Carrera> suggestionsCarrera = new ArrayList<>();
List<Unidad> suggestionsUnidad = new ArrayList<>();
```java
// <editor-fold defaultstate="collapsed" desc="completeFiltradoFacultad(String query)">
public List<Facultad> completeFiltradoFacultad(String query) {
suggestionsFacultad = new ArrayList<>();
List<Facultad> temp = new ArrayList<>();
try {
Boolean found = false;
query = query.trim();
if (query.length() < 1) {
return suggestionsFacultad;
}
String field = (String) UIComponent.getCurrentComponent(FacesContext.getCurrentInstance()).getAttributes().get("field");
temp = facultadRepository.findRegexInText(field, query, true, new Document(field, 1));
if (facultadList == null || facultadList.isEmpty()) {
if (!temp.isEmpty()) {
suggestionsFacultad = temp;
}
} else {
if (!temp.isEmpty()) {
temp.stream().forEach(f -> addFacultad(f));
}
}
} catch (Exception e) {
JsfUtil.errorMessage("completeFiltradoFacultad() " + e.getLocalizedMessage());
}
return suggestionsFacultad;
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="completeFiltradoCarrera(String query)">
public List<Carrera> completeFiltradoCarrera(String query) {
suggestionsCarrera = new ArrayList<>();
List<Carrera> temp = new ArrayList<>();
try {
Boolean found = false;
query = query.trim();
if (query.length() < 1) {
return suggestionsCarrera;
}
String field = (String) UIComponent.getCurrentComponent(FacesContext.getCurrentInstance()).getAttributes().get("field");
temp = carreraRepository.findRegexInText(field, query, true, new Document(field, 1));
temp = removeByNotFoundFacultad(temp);
if (carreraList == null || carreraList.isEmpty()) {
if (!temp.isEmpty()) {
suggestionsCarrera = temp;
}
} else {
if (!temp.isEmpty()) {
temp.stream().forEach(c -> addCarrera(c));
}
}
} catch (Exception e) {
JsfUtil.errorMessage("completeFiltradoCarrera() " + e.getLocalizedMessage());
}
return suggestionsCarrera;
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="removeByNotFoundFacultad(List<Carrera> carreraList)">
private List<Carrera> removeByNotFoundFacultad(List<Carrera> carreraList) {
List<Carrera> list = new ArrayList<>();
try {
//1.recorre las facultades
//2.filtra las carreras de esa facultad
//3.crea una lista
//4. luego va agregando esa lista a la otra por cada facultad
if (facultadList == null || facultadList.isEmpty()) {
return list;
}
facultadList.forEach((f) -> {
List<Carrera> temp = carreraList.stream()
.parallel()
.filter(p -> p.getFacultad().getIdfacultad().equals(f.getIdfacultad()))
.collect(Collectors.toCollection(ArrayList::new));
temp.forEach((c) -> {
list.add(c);
});
});
} catch (Exception e) {
JsfUtil.errorMessage("removeByNotFoundFacultad() " + e.getLocalizedMessage());
}
return list;
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="itemUnselect">
public void itemUnselect(UnselectEvent event) {
try {
if (carreraList != null && !carreraList.isEmpty()) {
carreraList = removeByNotFoundFacultad(carreraList);
}
} catch (Exception ex) {
JsfUtil.errorMessage("itemUnselec() " + ex.getLocalizedMessage());
}
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="foundFacultad(Integer idfacultad)">
private Boolean foundFacultad(Integer idfacultad) {
Boolean _found = true;
try {
Facultad facultad = facultadList.stream() // Convert to steam
.filter(x -> x.getIdfacultad() == idfacultad) // we want "jack" only
.findAny() // If 'findAny' then return found
.orElse(null);
if (facultad == null) {
_found = false;
}
} catch (Exception e) {
JsfUtil.errorMessage("foundFacultad() " + e.getLocalizedMessage());
}
return _found;
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="foundCarrera(Integer idcarrera)">
private Boolean foundCarrera(Integer idcarrera) {
Boolean _found = true;
try {
Carrera carrera = carreraList.stream()
.filter(x -> x.getIdcarrera() == idcarrera)
.findAny()
.orElse(null);
if (carrera == null) {
_found = false;
}
} catch (Exception e) {
JsfUtil.errorMessage("foundCarrera() " + e.getLocalizedMessage());
}
return _found;
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="addFacultad(Facultad facultad)">
private Boolean addFacultad(Facultad facultad) {
try {
if (!foundFacultad(facultad.getIdfacultad())) {
suggestionsFacultad.add(facultad);
}
} catch (Exception e) {
JsfUtil.errorMessage("addFacultad()" + e.getLocalizedMessage());
}
return false;
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="addCarrera(Carrera carrera)">
private Boolean addCarrera(Carrera carrera) {
try {
if (!foundCarrera(carrera.getIdcarrera())) {
suggestionsCarrera.add(carrera);
}
} catch (Exception e) {
JsfUtil.errorMessage("addCarrera()" + e.getLocalizedMessage());
}
return false;
}
// </editor-fold>