Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsreyes <sreyes@dataworks.com.py>2014-10-19 14:13:32 (GMT)
committer sreyes <sreyes@dataworks.com.py>2014-10-19 14:13:32 (GMT)
commitcab10f4b2346c40676f3c92d4eb86c03a20e03bb (patch)
treea8ad5e80a624720ebc3d22ff84114669b46be686
parent4508276aef471d2555fadb729d098ab195d5c7d0 (diff)
mejora en seleccionUtilidadMax
-rw-r--r--EjercitarServer/ejbModule/beans/EjercitarWSBean.java60
1 files changed, 44 insertions, 16 deletions
diff --git a/EjercitarServer/ejbModule/beans/EjercitarWSBean.java b/EjercitarServer/ejbModule/beans/EjercitarWSBean.java
index 215916e..03f5e28 100644
--- a/EjercitarServer/ejbModule/beans/EjercitarWSBean.java
+++ b/EjercitarServer/ejbModule/beans/EjercitarWSBean.java
@@ -205,11 +205,19 @@ public class EjercitarWSBean implements EjercitarWSRemote {
private Ejercicio seleccionUtilidadMax(Tarea tarea, Alumno alumno, int idEjercicioAnterior) {
try{
+
+ //para obtener la sesion anterior.
+ Query query = em.createQuery("Select s from Sesion s where s.alumno.idAlumno = :alumno and s.tarea.idTarea = :tarea order by s.idSesion desc");
+ query.setParameter("alumno", alumno.getIdAlumno());
+ query.setParameter("tarea", tarea.getIdTarea());
+ query.setMaxResults(1);
+ Sesion sesionAnterior = (Sesion) query.getSingleResult();
+
List<Concepto> conceptoList = em.createQuery("Select c from Concepto c inner join c.tareaList t where t = :tarea").setParameter("tarea", tarea).getResultList();
// inicializacion
double utilidadMax = 0;
- Map<Double, Ejercicio> hUtilidades= new HashMap<Double, Ejercicio>();
+ Map<Double, List> hUtilidades= new HashMap<Double, List>();
Ejercicio ejercicio = null;
// System.out.println("cantidad concepto: " + conceptoList.size() + " de la tarea: " + tarea.getDescripcion());
for (Concepto concepto : conceptoList) {
@@ -268,6 +276,7 @@ public class EjercitarWSBean implements EjercitarWSRemote {
//System.out.println("utilidadParcial2: " + utilidadParcial2);
double utilidadMaxParcial = utilidadParcial1 + utilidadParcial2;
+ /*
if(utilidadMaxParcial > utilidadMax) {
utilidadMax = utilidadMaxParcial;
ejercicio = ejercicioConcepto;
@@ -278,40 +287,59 @@ public class EjercitarWSBean implements EjercitarWSRemote {
ejercicio = ejercicioConcepto;
}
}
+ */
+
+ List utilidades = hUtilidades.get(utilidadMaxParcial);
+ if (utilidades == null )
+ utilidades = new ArrayList();
+
+ if (!sesionAnterior.getEjercicioList().contains(ejercicioConcepto))
+ utilidades.add(ejercicioConcepto);
- hUtilidades.put(utilidadMaxParcial, ejercicioConcepto);
+ if (utilidades.size() > 0)
+ hUtilidades.put(utilidadMaxParcial, utilidades);
//System.out.println("utilidadMax: " + utilidadMax);
//System.out.println("cont" + cont++);
}
}
//System.out.println("obtener la sesion anterior ");
- TreeMap<Double, Ejercicio> tUtilidades = new TreeMap<Double, Ejercicio>(hUtilidades);
+ TreeMap<Double, List> tUtilidades = new TreeMap<Double, List>(hUtilidades);
///System.out.println(tUtilidades);
- //para obtener la sesion anterior.
- Query query = em.createQuery("Select s from Sesion s where s.alumno.idAlumno = :alumno and s.tarea.idTarea = :tarea order by s.idSesion desc");
- query.setParameter("alumno", alumno.getIdAlumno());
- query.setParameter("tarea", tarea.getIdTarea());
- query.setMaxResults(1);
- Sesion sesionAnterior = (Sesion) query.getSingleResult();
+
//int i = tUtilidades.size();
- Map.Entry<Double, Ejercicio> valor;
- Map.Entry<Double, Ejercicio> primerValor;
+ Map.Entry<Double, List> valor;
+ Map.Entry<Double, List> primerValor;
valor = tUtilidades.pollLastEntry();
- primerValor = valor;
+ //primerValor = valor;
//System.out.println("primerValor: " + primerValor);
-
+
+
+ List lista = valor.getValue();
+ Random rnd = new Random();
+ int eleccion = rnd.nextInt(lista.size());
+ return (Ejercicio) lista.get(eleccion);
+
+
+ /*
while(true) {
- if (valor == null) return primerValor.getValue();
- Ejercicio e = valor.getValue();
+ if (valor == null) {
+ List lista = primerValor.getValue();
+ Random rnd = new Random();
+ int eleccion = rnd.nextInt(lista.size());
+ return (Ejercicio) lista.get(eleccion);
+ }
+
+ List lista = valor.getValue();
+
if(sesionAnterior.getEjercicioList()== null || !sesionAnterior.getEjercicioList().contains(e)) {
return e;
}
valor = tUtilidades.pollLastEntry();
- }
+ }*/
//return ejercicio;
}catch(Exception e){