Tengo tres clases: User
, UserCategory
, y PatientCase
.
Ahora, en algunos métodos que necesito para comprobar si la categoría o el caso pertenecen al usuario que ha iniciado la sesión.
Usuario:
private Long id;
private String firstName;
private String lastName;
private String emailAddress;
private String password;
private Set<UserCategory> userCategories;
UserCategory:
private Long id;
private String name;
private User user;
private Set<PatientCase> cases;
PatientCase:
private Long id;
private String caseTitle;
private LocalDate caseDate;
private Set<UserCategory> userCategories;
Ahora un usuario determinado y una categoría, puedo comprobar si la categoría hace o no pertenece al usuario al hacer esto (en este caso yo estoy haciendo no pertenece al usuario):
private boolean checkIfCategoryDoesNotBelongToUser(UserCategory category, User user) {
return !category.getUser().getId().equals(user.getId());
}
El problema es cómo puedo saber si la PatientCase
tiene o no pertenecen al usuario. Y no se me permite añadir en cualquier otro campo a las clases. Yo estaba pensando en hacer algo como:
private boolean checkIfCaseDoesNotBelongToUser(PatientCase patientCase, User user) {
return !patientCase.getUserCategories()
.stream()
.filter(c -> c.getUser().getId().equals(user.getId()))
.
También soy consciente de que el filtro en realidad no devuelve un valor booleano así que tal vez, noneMatch
. Pero no muy seguro.
Básicamente, un caso de paciente puede pertenecer a varias categorías. Y un usuario puede tener varias categorías. Para sugerir algo.
Efectivamente, puedes utilizar noneMatch
:
private boolean checkIfCaseDoesNotBelongToUser(PatientCase patientCase, User user) {
return patientCase.getUserCategories()
.stream()
.noneMatch(c -> c.getUser().getId().equals(user.getId()));
}
noneMatch
es un cortocircuito, por lo que volverá false
tan pronto como se encuentre una coincidencia.
Asimismo, le sugiero que no nombra a sus métodos con un negativo, así que prefiero escribir un checkIfCaseBelongToUser
(uso anyMatch
!) Y dejar que las personas que llaman usan !
para negar la misma.