Witam. Zastanawiam się jak w najlepszy sposób zwrócić informację o wyniku operacji (sukces, błąd itd.) w programie. Mam klasę dodającą użytkownika:
@Override
public UserOperationState create(User user) {
if ((user.getEmail() != null) && (findEmailExist(user.getEmail()))) {
return UserOperationState.EMAIL_EXIST;
} else if ((user.getPersonalId() != null) && (findPersonalIdExist(user.getPersonalId()))) {
return UserOperationState.PERSONALID_EXIST;
} else if ((user.getPhone() != null) && (findPhoneExist(user.getPhone()))) {
return UserOperationState.PHONE_EXIST;
} else {
try {
userDao.create(user);
return UserOperationState.CREATE_SUCCESS;
} catch (EJBException e) {
return UserOperationState.CREATE_ERROR;
}
}
}
Wcześniej zwracałem Stringi zamiast tak jak tutaj stanu obiektu. Poniżej fragment enuma state:
public enum UserOperationState {
CREATE_SUCCESS {
@Override
public String getMessage() {
return "Konto stworzone";
}
}, EDIT_SUCCESS {
@Override
public String getMessage() {
return "Konto zedytowane";
}
};
public abstract String getMessage();
}
Następnie w metodzie wywołującej powyższą metodę create mam coś takiego:
public String createUser() {
user.setRole(requestParameterMap.get("userRole").toString());
user.setActive(Boolean.parseBoolean(requestParameterMap.get("active").toString()));
UserOperationState result = userService.create(user);
if (result == UserOperationState.CREATE_SUCCESS) {
sendInfoMessageToUser(result.getMessage());
return user.getRole() + "List";
} else {
sendErrorMessageToUser(result.getMessage());
return null;
}
}
Wcześniej kiedy były tutaj stringi tych ifów było więcej bo może zostać zwrócona informacja: success, emailexist, phoneexist itd. Zastanawiam się jednak czy moje rozwiązanie jest dobre i czy może istnieje jakieś lepsze? Może ktoś bardziej doświadczony zna jakiś lepszy sposób.