Acceso objeto a través de otro objeto

levivah940:

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 PatientCasetiene 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.

barredora:

Efectivamente, puedes utilizar noneMatch:

private boolean checkIfCaseDoesNotBelongToUser(PatientCase patientCase, User user) {
    return patientCase.getUserCategories()
        .stream()
        .noneMatch(c -> c.getUser().getId().equals(user.getId()));
}

noneMatches un cortocircuito, por lo que volverá falsetan 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.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=372886&siteId=1
Recomendado
Clasificación