Método que devuelva nombre enumerado
Publicado por Eva (2 intervenciones) el 10/04/2020 14:47:37
Hola,
estoy aprendiendo a programar en Java. Tengo que crear un método estático y público que se llame isRoleActive, que reciba como parámetros un rol y una fecha, y devuelva true si el rol se encuentra activo para la fecha dada. En caso contrario tiene que devolver false. Es decir, yo introduzco un rol y una fecha, y debe comprobar que el rol que introduzco se corresponde con alguno de los que existen en el enumerado y, además, la fecha introducida esté dentro de las fechas que hay definidas para cada valor del enumerado. Por ejemplo, si introduzco como rol GUESS y la fecha (2021, 9, 12), el método debe devolver true. Pero no sé cómo implementar este método (en concreto, no sé cómo definir los parámetros que debe recibir el método, y cómo comprobar que el rol recibido por parámetro se corresponda con alguno de los valores del enumerado). Lo tengo a medio definir:
¿Alguien podría echarme una mano?
Muchas gracias.
estoy aprendiendo a programar en Java. Tengo que crear un método estático y público que se llame isRoleActive, que reciba como parámetros un rol y una fecha, y devuelva true si el rol se encuentra activo para la fecha dada. En caso contrario tiene que devolver false. Es decir, yo introduzco un rol y una fecha, y debe comprobar que el rol que introduzco se corresponde con alguno de los que existen en el enumerado y, además, la fecha introducida esté dentro de las fechas que hay definidas para cada valor del enumerado. Por ejemplo, si introduzco como rol GUESS y la fecha (2021, 9, 12), el método debe devolver true. Pero no sé cómo implementar este método (en concreto, no sé cómo definir los parámetros que debe recibir el método, y cómo comprobar que el rol recibido por parámetro se corresponda con alguno de los valores del enumerado). Lo tengo a medio definir:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.time.LocalDate;
public enum Role {
GUESS(LocalDate.of(2008, 3, 21),LocalDate.of(2022, 4, 19),Permission.READ),
AUTHOR(LocalDate.of(2012, 4, 20),LocalDate.of(2023, 5, 20),Permission.READ_WRITE),
EDITOR(LocalDate.of(2019, 5, 21),LocalDate.of(2021, 6, 20),Permission.READ_WRITE_UPDATE),
EDITOR_BOSS(LocalDate.of(2000, 6, 21),LocalDate.of(2002, 7, 22),Permission.READ_WRITE_UPDATE),
ADMIN(LocalDate.of(2008, 7, 23),LocalDate.of(2019, 8, 22),Permission.ALL);
private LocalDate start, end;
private Permission permission;
private Role(LocalDate start, LocalDate end, Permission permission) {
this.start = start;
this.end = end;
this.permission = permission;
}
public static boolean isRoleActive(Role role, LocalDate date) throws Exception {
LocalDate date1 = LocalDate.of(1999, 12, 31);
if(date.isBefore(date1) || date.isEqual(date1)) {
throw new Exception("It has been impossible to obtain the information about the role "+date);
} else {
for(Role rol : values()) {
if ((rol.start.isBefore(date) || rol.start.isEqual(date))
&& (rol.end.isAfter(date) || rol.end.isEqual(date))
&& (rol.name == role)) {
return true;
} else {
return false;
}
}
}
throw new Exception("The format of the date is incorrect.");
}
¿Alguien podría echarme una mano?
Muchas gracias.
Valora esta pregunta


0