J'ai une base de données oracle que je ne peux pas changer. Dans cette base de données, j'ai une table utilisateur avec des champs d'autorité.éviter de nombreuses instructions if, amélioration du code
CREATE TABLE USER (
ID NUMBER(38,0),
LOGIN VARCHAR2(6 BYTE) NOT NULL ENABLE,
PASSWORD VARCHAR2(200 BYTE) NOT NULL ENABLE,
BOOK_READ NUMBER(1,0),
BOOK_UPD NUMBER(1,0),
R_READ NUMBER(1,0),
R_UPD NUMBER(1,0),
...
...
)
Par exemple:
book_read = 1; - means that user has authority
book_upd = 0; - means that user he does not
report_read = 1;
En ce moment, je vérifie comme ceci:
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
if (user.getBook_read() == 1) {
authorities.add(new SimpleGrantedAuthority("ROLE_BOOK_READ"));
}
if (user.getBook_upd() == 1) {
authorities.add(new SimpleGrantedAuthority("ROLE_BOOK_UPD"));
}
if (user.getReport_read() == 1) {
authorities.add(new SimpleGrantedAuthority("ROLE_REPORT_READ"));
}
J'ai beaucoup d'autorités (environ 20, ils ont tous une colonne séparée dans la table). Est-ce que quelqu'un suggère comment je peux améliorer le code?
Je pense que cela appartient à la révision de code, mais assurez-vous de vérifier la [liste de contrôle de migration] (https://codereview.meta.stackexchange.com/a/1689/150216) –
try switch statement – imk
Que fait * "I avoir beaucoup d'Autorités "* signifie? Combien? Comment sont-ils stockés? Sont-ils tous des colonnes individuelles dans une table 'USER'? Si vous voulez de l'aide pour améliorer le code, vous devez au moins nous donner des informations plus pertinentes. – Andreas