Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/EjercitarServer/ejbModule/beans/EjercitarWSBean.java
diff options
context:
space:
mode:
Diffstat (limited to 'EjercitarServer/ejbModule/beans/EjercitarWSBean.java')
-rw-r--r--EjercitarServer/ejbModule/beans/EjercitarWSBean.java210
1 files changed, 83 insertions, 127 deletions
diff --git a/EjercitarServer/ejbModule/beans/EjercitarWSBean.java b/EjercitarServer/ejbModule/beans/EjercitarWSBean.java
index adbc968..1ddec16 100644
--- a/EjercitarServer/ejbModule/beans/EjercitarWSBean.java
+++ b/EjercitarServer/ejbModule/beans/EjercitarWSBean.java
@@ -37,8 +37,24 @@ import model.Tema;
@Remote(EjercitarWSRemote.class)
@Stateless
public class EjercitarWSBean implements EjercitarWSRemote {
+ @PersistenceContext
+
+ EntityManager em;
+
+ /**
+
+ * Default constructor.
+
+ */
+
+ public EjercitarWSBean() {
+
+
+
+ }
+
@WebMethod
public String getDatosAlumno(int idAlumno) {
// TODO Auto-generated method stub
@@ -61,14 +77,18 @@ public class EjercitarWSBean implements EjercitarWSRemote {
System.out.println("cant tareas:" + listaTareas.size());
- Query query = em.createQuery("SELECT DISTINCT t from Tarea t join t.sesionList s where s.alumno = :alumno and s.estadoTerminado = false and s.tarea in (:tareas)");
+ Query query = em.createQuery("SELECT DISTINCT t from Tarea t left outer join t.sesionList s where s.alumno = :alumno and s.estadoTerminado = false and s.tarea in (:tareas)");
query.setParameter("alumno", alumno);
query.setParameter("tareas", listaTareas);
List<Tarea> listaTareasDisponibles = query.getResultList();
//return (List<Tarea>) listaTareas;
-
+ System.out.println(listaTareasDisponibles.size());
+ if(listaTareasDisponibles.size() == 0){
+
+ listaTareasDisponibles = listaTareas;
+ }
String [] arrayTareas = new String [listaTareasDisponibles.size()];
int c = 0;
for (Tarea tarea : listaTareasDisponibles) {
@@ -146,8 +166,7 @@ public class EjercitarWSBean implements EjercitarWSRemote {
// Tema tema = tarea.getTema();
// List<Concepto> = tema.getIdConcepto()
- List<Ejercicio> ejercicios = em
- .createQuery("SELECT e FROM Ejercicio e").getResultList();
+ List<Ejercicio> ejercicios = em.createQuery("SELECT e FROM Ejercicio e").getResultList();
System.out.println(ejercicios.size());
Random rnd = new Random();
int siguienteID = rnd.nextInt(ejercicios.size());
@@ -158,91 +177,77 @@ public class EjercitarWSBean implements EjercitarWSRemote {
}
private Ejercicio seleccionUtilidadMax(Tarea tarea, Alumno alumno) {
- // Tema tema = tarea.getTema();
- // List<Concepto> conceptoList = new ArrayList();
- //List<Concepto> conceptoList = tarea.getConceptoList();
+
+
+ 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;
- Ejercicio ejercicio = null;
- List<Concepto> conceptoList = em.createQuery("Select c from Concepto c inner join c.tareaList t where t = :tarea").setParameter("tarea", tarea).getResultList();
+ Ejercicio ejercicio = null;
for (Concepto concepto : conceptoList) {
-
- // red
Network net1 = new Network();
-
String nombreRed = "red_alumno_" + alumno.getIdAlumno() + "_asignatura_" + tarea.getAsignatura().getIdAsignatura() +".xdsl";
System.out.println("redes/" + nombreRed);
net1.readFile("redes/" + nombreRed);
net1.updateBeliefs();
- // Network net2 = new Network();
- // net2.readFile("redes/" + nombreRed);
- // red
-
-
String nombreConcepto = concepto.getNombre();
+ double [] values = net1.getNodeValue(nombreConcepto);
- double[] values = net1.getNodeValue(nombreConcepto);
System.out.println("values");
+
System.out.println(values.toString());
+
double pC1 = values[0]; // P(C=1)
+
double pC0 = values[1]; // P(C=0)
- List<Ejercicio> ejercicios = concepto.getEjercicioList();
+
- for (Ejercicio ejercicioConcepto : ejercicios) {
- String nombreEjercicio = "E"
- + ejercicioConcepto.getIdEjercicio();
+ List<Ejercicio> ejercicios = concepto.getEjercicioList();
+ for(Ejercicio ejercicioConcepto : ejercicios){
+ String nombreEjercicio = "E" + ejercicioConcepto.getIdEjercicio();
net1.setEvidence(nombreConcepto, "Conoce");
net1.updateBeliefs();
values = net1.getNodeValue(nombreEjercicio);
double pE1C1 = values[0]; // P(E=1/C=1)
-
+ double utilidadParcial1 = pE1C1 * pC1;
net1.clearEvidence(nombreConcepto);
net1.updateBeliefs();
net1.setEvidence(nombreConcepto, "No_conoce");
net1.updateBeliefs();
double pE0C0 = values[1]; // P(E=0/C=0)
-
- double utilidadParcial2 = pE0C0 * pC0;
-
- double utilidadMaxParcial = utilidadParcial1 + utilidadParcial2;
-
- if (utilidadMaxParcial > utilidadMax) {
+ double utilidadParcial2 = pE0C0 * pC0;
+ double utilidadMaxParcial = utilidadParcial1 + utilidadParcial2;
+ if(utilidadMaxParcial > utilidadMax) {
utilidadMax = utilidadMaxParcial;
ejercicio = ejercicioConcepto;
}
- }
-
+ }
}
return ejercicio;
}
@WebMethod
- public void registrarSesion(int idAlumno, int idTarea, Boolean ayudaPadres,
+ public Integer registrarSesion(int idAlumno, int idTarea, Boolean ayudaPadres,
Boolean desdeHogar, String estadoAnimo) {
Sesion sesion = new Sesion();
-
+
sesion.setEntrada(new Date(System.currentTimeMillis()));
sesion.setAyudaPadres(ayudaPadres);
sesion.setDesdeHogar(desdeHogar);
sesion.setEstadoAnimo(estadoAnimo);
- System.out.println("#########Estado" + estadoAnimo
- + estadoAnimo.length());
+ sesion.setEstadoTerminado(false);
+ sesion.setCantidadEjerciciosResueltos(0);
Alumno alumno = em.find(Alumno.class, idAlumno);
- System.out.println("#########" + alumno.getApellido());
-
- Tarea tarea = em.find(Tarea.class, idTarea);
-
- System.out.println("#########" + tarea.getDescripcion());
-
+ Tarea tarea = em.find(Tarea.class, idTarea);
sesion.setAlumno(alumno);
sesion.setTarea(tarea);
-
+
em.persist(sesion);
-
+ return sesion.getIdSesion();
}
@WebMethod
@@ -278,37 +283,23 @@ public class EjercitarWSBean implements EjercitarWSRemote {
}//remove1
+
@WebMethod
- public Boolean getCriterioParada(Integer idAlumno, Integer idTarea) {
-
- Tarea tarea = em.find(Tarea.class, idTarea);
- Alumno alumno = em.find(Alumno.class, idAlumno);
+ public Boolean getCriterioParada(Integer idAlumno, Integer idSesion, Integer cantResuelto) {
- System.out.println("tareaa "+tarea.getDescripcion());
- System.out.println("alumno " + alumno.getIdAlumno() + alumno.getNombre());
+ Sesion sesion = em.find(Sesion.class, idSesion);
+ System.out.println(cantResuelto);
- Query query = em.createQuery("Select s from Sesion s where s.alumno.idAlumno = :alumno and s.tarea.idTarea = :tarea order by s.salida desc");
- query.setParameter("alumno", alumno.getIdAlumno());
-
- query.setParameter("tarea", tarea.getIdTarea());
- query.setMaxResults(1);
-
- Sesion sesion = (Sesion) query.getSingleResult();
-
- System.out.println("sesion cantidad EjercicioResuelto " + sesion.getcantidadEjerciciosResueltos());
+ //obtener cantidad de ejercicios maximos a resolver
+ Integer cantMaxEjercicio = sesion.getTarea().getCantidadEjercicioParada();
+ System.out.println(cantMaxEjercicio + " canti");
- Integer cantEjercicioResuelto = sesion.getcantidadEjerciciosResueltos() + 1;
- Integer cantMaxEjercicio = sesion.getTarea()
- .getCantidadEjercicioParada();
-
- System.out.println("sesion cantidad cantMaxEjercicio " + cantMaxEjercicio);
- sesion.setCantidadEjerciciosResuetos(cantEjercicioResuelto);
- try{
- em.persist(sesion);
- }catch(Exception e){
- System.out.println(e.getLocalizedMessage());
- }
- if (cantEjercicioResuelto.equals(cantMaxEjercicio)) {
+ //persistir la cantidad de ejercicios resueltos
+ sesion.setCantidadEjerciciosResueltos(cantResuelto);
+ em.persist(sesion);
+
+ //compara el maximo con la cantidad actual resuelta.
+ if (cantResuelto.compareTo(cantMaxEjercicio) == 0) {
System.out.println("true");
return true;
} else{
@@ -324,18 +315,18 @@ public class EjercitarWSBean implements EjercitarWSRemote {
Tarea tarea = em.find(Tarea.class, idTarea);
Alumno alumno = em.find(Alumno.class, idAlumno);
- System.out.println("tareaa "+tarea.getDescripcion());
- System.out.println("alumno " + alumno.getIdAlumno() + alumno.getNombre());
- Query query = em.createQuery("Select s from Sesion s where s.alumno.idAlumno = :alumno and s.tarea.idTarea = :tarea and s.salida is not null order by s.salida desc");
+ //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 sesion = (Sesion) query.getSingleResult();
+ Sesion sesionAnterior = (Sesion) query.getSingleResult();
- Integer cantEjerResueltos = (sesion!=null)? sesion.getcantidadEjerciciosResueltos() : 1;
+ // obtener la cantidad de ejercicios resueltos
+ //Si no existe sesion anterior agregar uno.
+ Integer cantEjerResueltos = (sesionAnterior!=null)? sesionAnterior.getcantidadEjerciciosResueltos() : 1;
Integer topeEjercicio = tarea.getCantidadEjercicioParada();
System.out.println(cantEjerResueltos.toString() +"#"+topeEjercicio.toString());
@@ -343,71 +334,36 @@ public class EjercitarWSBean implements EjercitarWSRemote {
return cantEjerResueltos.toString() +"#"+topeEjercicio.toString();
}
-
+
@WebMethod
- public Boolean getCriterioParada(Integer idAlumno, Integer idTarea) {
-
- Tarea tarea = em.find(Tarea.class, idTarea);
- Alumno alumno = em.find(Alumno.class, idAlumno);
-
- System.out.println("tareaa "+tarea.getDescripcion());
- System.out.println("alumno " + alumno.getIdAlumno() + alumno.getNombre());
-
- Query query = em.createQuery("Select s from Sesion s where s.alumno.idAlumno = :alumno and s.tarea.idTarea = :tarea order by s.salida desc");
- query.setParameter("alumno", alumno.getIdAlumno());
-
- query.setParameter("tarea", tarea.getIdTarea());
- query.setMaxResults(1);
- Sesion sesion = (Sesion) query.getSingleResult();
+ public String [] getRespuestas (int idEjercicio) {
- System.out.println("sesion cantidad EjercicioResuelto " + sesion.getcantidadEjerciciosResueltos());
+ Ejercicio ejercicio = em.find(Ejercicio.class, idEjercicio);
+ String [] arrayRespuestas = new String [4];
+ int c = 0;
- Integer cantEjercicioResuelto = sesion.getcantidadEjerciciosResueltos() + 1;
- Integer cantMaxEjercicio = sesion.getTarea()
- .getCantidadEjercicioParada();
+ for (Respuesta respuesta : ejercicio.getRespuestaList()) {
+ String respuestaElement = respuesta.getDescripcion();
+ arrayRespuestas[c] = respuestaElement;
+ c++;
- System.out.println("sesion cantidad cantMaxEjercicio " + cantMaxEjercicio);
- sesion.setCantidadEjerciciosResuetos(cantEjercicioResuelto);
- try{
- em.persist(sesion);
- }catch(Exception e){
- System.out.println(e.getLocalizedMessage());
- }
- if (cantEjercicioResuelto.equals(cantMaxEjercicio)) {
- System.out.println("true");
- return true;
- } else{
- System.out.println("false");
- return false;
}
+ System.out.println(arrayRespuestas.toString());
+ return arrayRespuestas;
}
@WebMethod
- public String obtenerCantidadEjercicioTarea(Integer idAlumno, Integer idTarea){
+ public void terminarTarea(Integer idSesion){
- Tarea tarea = em.find(Tarea.class, idTarea);
- Alumno alumno = em.find(Alumno.class, idAlumno);
+ Sesion sesion = em.find(Sesion.class, idSesion);
- System.out.println("tareaa "+tarea.getDescripcion());
- System.out.println("alumno " + alumno.getIdAlumno() + alumno.getNombre());
-
- Query query = em.createQuery("Select s from Sesion s where s.alumno.idAlumno = :alumno and s.tarea.idTarea = :tarea and s.salida is not null order by s.salida desc");
- query.setParameter("alumno", alumno.getIdAlumno());
-
- query.setParameter("tarea", tarea.getIdTarea());
- query.setMaxResults(1);
-
- Sesion sesion = (Sesion) query.getSingleResult();
-
- Integer cantEjerResueltos = (sesion!=null)? sesion.getcantidadEjerciciosResueltos() : 1;
- Integer topeEjercicio = tarea.getCantidadEjercicioParada();
+ sesion.setEstadoTerminado(true);
- System.out.println(cantEjerResueltos.toString() +"#"+topeEjercicio.toString());
+ em.persist(sesion);
- return cantEjerResueltos.toString() +"#"+topeEjercicio.toString();
-
}
+
}