Algunas ocasiones tenemos que contar una cantidad valores en los atributos, generalmente tendríamos que hacerlo propiedad por propiedad.
Contamos con un Entity
necesitaríamos implementar un código donde veríamos múltiples condiciones y tenemos que usar cada atributo mediante el método get, en este ejemplo serian 31 campos. Imaginemos el escenario que sea una cantidad mayor, tendríamos un segmento de código mas o menos como el que mostramos aquí.
for (Agente a : agenteList) {
t1 = 0;
t2 = 0;
t3 = 0;
t4 = 0;
for (Reservadoagente r : reservadoagenteList) {
if(r.getTurno1() == 1 || r.getTurno2() == 1 || r.getTurno3() == 1 || r.getTurno4() ==1 ,,, r.getTurno31()==1 ){
t1++;
}
else{
if(r.getTurno1() == 2 || r.getTurno2() == 2 || r.getTurno3() == 2 || r.getTurno4() ==2 ,,,
r.getTurno31()==2 ){
t2++;
}
else{
if(r.getTurno1() == 3 || r.getTurno2() == 3 || r.getTurno3() == 3 || r.getTurno4() ==3 ,,,
r.getTurno31()==3){
t3++;
}else{
if(r.getTurno1() == 4 || r.getTurno2() == 4 || r.getTurno3() == 4 || r.getTurno4() ==4 ,,,
r.getTurno31()==4){
t2++;
}
}
}
...
Para evitar todo esto podemos usar el API reflexión.
Simplemente invocamos los métodos get de los atributos Turnodia, y comparamos el resultado para determinar si es un 1, 2, 3, 4. Y con esto tendremos un contador de cada valor,.
Class noparams[] = {};
for (Reservadoagente r : reservadoagenteList) {
Class cls = r.getClass();
Object obj = r;
for (Method method : Reservadoagente.class.getDeclaredMethods()) {
if (method.getName().contains("getTurnodia")) {
String name = method.getName();
Method methodrun = cls.getDeclaredMethod(name, noparams);
Object result = methodrun.invoke(obj, null);
switch (Integer.parseInt(result.toString().trim())) {
case 0:
break;
case 1:
t1++;
break;
case 2:
t2++;
break;
case 3:
t3++;
break;
case 4:
t4++;
break;
default:
}
}
}
}
}
Tendríamos una representación gráfica de la siguiente manera.
Contamos con un Entity
necesitaríamos implementar un código donde veríamos múltiples condiciones y tenemos que usar cada atributo mediante el método get, en este ejemplo serian 31 campos. Imaginemos el escenario que sea una cantidad mayor, tendríamos un segmento de código mas o menos como el que mostramos aquí.
for (Agente a : agenteList) {
t1 = 0;
t2 = 0;
t3 = 0;
t4 = 0;
for (Reservadoagente r : reservadoagenteList) {
if(r.getTurno1() == 1 || r.getTurno2() == 1 || r.getTurno3() == 1 || r.getTurno4() ==1 ,,, r.getTurno31()==1 ){
t1++;
}
else{
if(r.getTurno1() == 2 || r.getTurno2() == 2 || r.getTurno3() == 2 || r.getTurno4() ==2 ,,,
r.getTurno31()==2 ){
t2++;
}
else{
if(r.getTurno1() == 3 || r.getTurno2() == 3 || r.getTurno3() == 3 || r.getTurno4() ==3 ,,,
r.getTurno31()==3){
t3++;
}else{
if(r.getTurno1() == 4 || r.getTurno2() == 4 || r.getTurno3() == 4 || r.getTurno4() ==4 ,,,
r.getTurno31()==4){
t2++;
}
}
}
...
Para evitar todo esto podemos usar el API reflexión.
Simplemente invocamos los métodos get de los atributos Turnodia, y comparamos el resultado para determinar si es un 1, 2, 3, 4. Y con esto tendremos un contador de cada valor,.
Class noparams[] = {};
for (Reservadoagente r : reservadoagenteList) {
Class cls = r.getClass();
Object obj = r;
for (Method method : Reservadoagente.class.getDeclaredMethods()) {
if (method.getName().contains("getTurnodia")) {
String name = method.getName();
Method methodrun = cls.getDeclaredMethod(name, noparams);
Object result = methodrun.invoke(obj, null);
switch (Integer.parseInt(result.toString().trim())) {
case 0:
break;
case 1:
t1++;
break;
case 2:
t2++;
break;
case 3:
t3++;
break;
case 4:
t4++;
break;
default:
}
}
}
}
}
Tendríamos una representación gráfica de la siguiente manera.
Comments
its really really good paragraph on building up new weblog.