Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcecigg <caggsld@gmail.com>2014-10-11 18:29:03 (GMT)
committer cecigg <caggsld@gmail.com>2014-10-11 18:29:03 (GMT)
commitbda837bc523b5f65641454533c679e73e8446eca (patch)
tree53cd660a37e151bc63722547f1f422ba7c11f51f
parent01978a03944af99ba09600c6ebbf5b8703069d35 (diff)
parentde8434c76fcef2c174147d452ea03f7af2033b95 (diff)
Merge remote-tracking branch 'remotes/origin/samurey' into Cecilia
Conflicts: EjercitarJPA/build/classes/model/Alumno.class EjercitarJPA/build/classes/model/Profesor.class
-rw-r--r--EjercitarJPA/src/model/Ejercicio.java5
-rw-r--r--EjercitarJPA/src/model/Sesion.java17
-rw-r--r--EjercitarServer/ejbModule/beans/AdministracionBean.java37
-rw-r--r--EjercitarServer/ejbModule/beans/AdministracionBeanRemote.java6
-rw-r--r--EjercitarServer/ejbModule/beans/EjercitarWSBean.java39
-rw-r--r--EjercitarServer/ejbModule/beans/SimulacionBean.java (renamed from EjercitarServer/ejbModule/beans/Simulacion.java)71
-rw-r--r--EjercitarServer/ejbModule/beans/SimulacionBeanRemote.java8
7 files changed, 168 insertions, 15 deletions
diff --git a/EjercitarJPA/src/model/Ejercicio.java b/EjercitarJPA/src/model/Ejercicio.java
index 28b98b2..bee8957 100644
--- a/EjercitarJPA/src/model/Ejercicio.java
+++ b/EjercitarJPA/src/model/Ejercicio.java
@@ -7,10 +7,12 @@ package model;
import java.io.Serializable;
import java.sql.Array;
import java.util.List;
+
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
+import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@@ -74,6 +76,9 @@ public class Ejercicio implements Serializable {
@OneToMany(mappedBy = "ejercicio")
private List<EjercicioResueltoAlumno> ejercicioResueltoAlumnoList;
+ @ManyToMany(mappedBy = "ejercicioList", fetch=FetchType.EAGER)
+ private List<Sesion> sesionList;
+
private byte [] imagen;
public void setImagen(byte[] imagen) {
diff --git a/EjercitarJPA/src/model/Sesion.java b/EjercitarJPA/src/model/Sesion.java
index 0719205..c5906cf 100644
--- a/EjercitarJPA/src/model/Sesion.java
+++ b/EjercitarJPA/src/model/Sesion.java
@@ -7,6 +7,8 @@ package model;
import java.io.Serializable;
import java.util.Date;
+import java.util.List;
+
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -14,6 +16,7 @@ import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
+import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
@@ -72,8 +75,12 @@ public class Sesion implements Serializable {
private Alumno alumno;
@Column(name = "cantidad_ejercicios_resueltos")
private Integer cantidadEjerciciosResueltos;
+
+ @ManyToMany
+ private List<Ejercicio> ejercicioList;
+
- public Sesion() {
+ public Sesion() {
}
public Sesion(Integer idSesion) {
@@ -164,6 +171,14 @@ public class Sesion implements Serializable {
public void setAlumno(Alumno alumno) {
this.alumno = alumno;
}
+
+ public List<Ejercicio> getEjercicioList() {
+ return ejercicioList;
+ }
+
+ public void setEjercicioList(List<Ejercicio> ejercicioList) {
+ this.ejercicioList = ejercicioList;
+ }
@Override
public int hashCode() {
diff --git a/EjercitarServer/ejbModule/beans/AdministracionBean.java b/EjercitarServer/ejbModule/beans/AdministracionBean.java
index 6532b43..f1f22c2 100644
--- a/EjercitarServer/ejbModule/beans/AdministracionBean.java
+++ b/EjercitarServer/ejbModule/beans/AdministracionBean.java
@@ -786,6 +786,43 @@ public class AdministracionBean implements AdministracionBeanRemote{
return parteEntera;
}
+ public ArrayList <Object> registrarEjercicio(Asignatura asignatura, Integer idAlumno, Integer idEjercicio, Boolean respuesta){
+
+ ArrayList<Object> datosFila = new ArrayList();
+
+ String queryConceptos = "select c from Concepto c join c.tema t where t.asignatura = :asignatura";
+ Query query = em.createQuery(queryConceptos);
+ query.setParameter("asignatura", asignatura);
+ List <Concepto>conceptos = query.getResultList();
+ List<Tema> temas= asignatura.getTemaList();
+ datosFila.add(idAlumno);
+ for(Tema tema : temas){
+ String porcentajeTema = getValorNodoRed(tema.getNombre(), asignatura.getIdAsignatura(), idAlumno);
+ datosFila.add(porcentajeTema);
+ }
+
+ for(Concepto concepto : conceptos){
+ String porcentajeTema = getValorNodoRed(concepto.getNombre(), asignatura.getIdAsignatura(), idAlumno);
+ datosFila.add(porcentajeTema);
+ }
+ datosFila.add(idEjercicio);
+ datosFila.add((respuesta)?"SI":"NO");
+
+ return datosFila;
+
+ }
+
+ public Tarea obtenerTarea(Integer idTarea){
+
+ Tarea tarea = em.find(Tarea.class, idTarea);
+ return tarea;
+ }
+
+ public Asignatura obtenerAsignatura (Integer idAsignatura){
+
+ return em.find(Asignatura.class, idAsignatura);
+
+ }
diff --git a/EjercitarServer/ejbModule/beans/AdministracionBeanRemote.java b/EjercitarServer/ejbModule/beans/AdministracionBeanRemote.java
index 908ad14..d873653 100644
--- a/EjercitarServer/ejbModule/beans/AdministracionBeanRemote.java
+++ b/EjercitarServer/ejbModule/beans/AdministracionBeanRemote.java
@@ -6,6 +6,7 @@ import java.util.List;
import javax.ejb.Remote;
import javax.servlet.http.Part;
+import model.Alumno;
import model.Asignatura;
import model.Concepto;
import model.Ejercicio;
@@ -43,5 +44,10 @@ public interface AdministracionBeanRemote {
public int aPorcentaje (String valor);
public int aPorcentaje (Double valor);
+ public Tarea obtenerTarea(Integer idTarea);
+ public Asignatura obtenerAsignatura (Integer idAsignatura);
+ public ArrayList <Object> registrarEjercicio(Asignatura asignatura, Integer idAlumno, Integer idEjercicio, Boolean respuesta);
+ public Integer obtenerIdAlumno();
+ public void agregarAlumno(Alumno alumno);
}
diff --git a/EjercitarServer/ejbModule/beans/EjercitarWSBean.java b/EjercitarServer/ejbModule/beans/EjercitarWSBean.java
index 1bd9f69..0ba5911 100644
--- a/EjercitarServer/ejbModule/beans/EjercitarWSBean.java
+++ b/EjercitarServer/ejbModule/beans/EjercitarWSBean.java
@@ -125,7 +125,7 @@ public class EjercitarWSBean implements EjercitarWSRemote {
Alumno alumno = em.find(Alumno.class, idAlumno);
//
if(idEjercicio != 0)
- responderEjercicio(idEjercicio, respuesta, alumno, tarea.getAsignatura().getIdAsignatura());
+ responderEjercicio(idEjercicio, respuesta, alumno, tarea.getAsignatura().getIdAsignatura(), tarea);
//
@@ -137,7 +137,7 @@ public class EjercitarWSBean implements EjercitarWSRemote {
return ejercicioElement;
}
- private void responderEjercicio(int idEjercicio, String respuesta, Alumno alumno, int idAsignatura) {
+ private void responderEjercicio(int idEjercicio, String respuesta, Alumno alumno, int idAsignatura, Tarea tarea) {
Ejercicio ejercicio = em.find(Ejercicio.class, idEjercicio);
Network net1 = new Network();
@@ -165,6 +165,21 @@ public class EjercitarWSBean implements EjercitarWSRemote {
net1.clearEvidence(nombreEjercicio);
net1.updateBeliefs();
net1.writeFile("/home/redes/" + nombreRed);
+
+
+ //asociar ejercicio con sesion
+ //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<Ejercicio> respondidos = sesionAnterior.getEjercicioList();
+ respondidos.add(ejercicio);
+ sesionAnterior.setEjercicioList(respondidos);
+ em.persist(sesionAnterior);
+
}
@WebMethod
@@ -271,14 +286,28 @@ public class EjercitarWSBean implements EjercitarWSRemote {
//System.out.println(hUtilidades);
TreeMap<Double, Ejercicio> tUtilidades = new TreeMap<Double, Ejercicio>(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;
+ valor = tUtilidades.pollLastEntry();
+ primerValor = valor;
while(true) {
- valor = tUtilidades.pollLastEntry();
- if( valor.getValue().getIdEjercicio()!= idEjercicioAnterior) {
- return valor.getValue();
+ if (valor == null) return primerValor.getValue();
+ Ejercicio e = valor.getValue();
+ if(!sesionAnterior.getEjercicioList().contains(e)) {
+ return e;
}
+ valor = tUtilidades.pollLastEntry();
}
//return ejercicio;
diff --git a/EjercitarServer/ejbModule/beans/Simulacion.java b/EjercitarServer/ejbModule/beans/SimulacionBean.java
index 69b38a8..59d5064 100644
--- a/EjercitarServer/ejbModule/beans/Simulacion.java
+++ b/EjercitarServer/ejbModule/beans/SimulacionBean.java
@@ -1,26 +1,41 @@
package beans;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.ejb.EJB;
+import javax.ejb.LocalBean;
+import javax.ejb.Remote;
+import javax.ejb.Stateless;
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
import model.Alumno;
import model.Asignatura;
+import model.Concepto;
import model.Curso;
import model.Ejercicio;
-import model.Sesion;
import model.Tarea;
+import model.Tema;
-public class Simulacion {
+@Stateless
+@LocalBean
+@WebService
+@SOAPBinding(style = SOAPBinding.Style.RPC)
+@Remote(SimulacionBeanRemote.class)
+public class SimulacionBean {
@EJB
- AdministracionBean admin;
+ AdministracionBeanRemote admin;
@EJB
- EjercitarWSBean ws;
+ EjercitarWSRemote ws;
public Alumno crearAlumno(Curso curso, Double tipo){
@@ -82,10 +97,17 @@ public class Simulacion {
return alumnos;
}
-
- public void simular(Asignatura asignatura, Tarea tarea) {
+ @WebMethod
+ public void simular() {
+
+ Asignatura asignatura = admin.obtenerAsignatura(3);
+ Tarea tarea = admin.obtenerTarea(3);
+ File tmpFile = new File ("prueba.xlsx");
+ ArrayList<ArrayList<Object>> datos = new ArrayList();
+
+ //getValorNodoRed
List<Alumno> alumnos = generacionAlumnos(asignatura);
for(Alumno alumno : alumnos) {
@@ -101,16 +123,18 @@ public class Simulacion {
for (int i = 0; i < tarea.getCantidadEjercicioParada(); i++) {
String [] ejercicioString = siguienteEjercicio.split("#");
- int idEjercicio = Integer.valueOf(ejercicioString[0]);
+ Integer idEjercicio = Integer.valueOf(ejercicioString[0]);
Ejercicio ejercicio = null;//admin.getEjercicio(idEjercicio);
int decision = rnd.nextInt(100);
String respuesta = null;
int idRespuesta;
+ Boolean respuestaCorrecta = false;
if(decision <= (alumno.getTipoAlumno()*100)) {
respuesta = ejercicio.getRespuesta().getDescripcion();
idRespuesta = ejercicio.getRespuesta().getIdRespuesta();
+ respuestaCorrecta = true;
} else {
respuesta = ejercicio.getRespuestaList().get(0).equals(ejercicio.getRespuesta()) ?
ejercicio.getRespuestaList().get(1).getDescripcion() : ejercicio.getRespuestaList().get(0).getDescripcion();
@@ -119,18 +143,47 @@ public class Simulacion {
}
siguienteEjercicio = ws.getSiguienteEjercicio(tarea.getIdTarea(), alumno.getIdAlumno(), idRespuesta, respuesta);
+ //Asignatura asignatura, Integer idAlumno, Integer idEjercicio, Boolean respuesta
+ ArrayList <Object> fila = admin.registrarEjercicio(asignatura, alumno.getIdAlumno(), idEjercicio, respuestaCorrecta);
+ datos.add(fila);
}
+
ws.terminarTarea(idSesion);
}
+
+ crearArchivo(datos);
}
- public static class TipoAlumno {
+ private void crearArchivo(ArrayList<ArrayList<Object>> datos) {
+
+ File archivo = new File("prueba_tarea.csv");
+ FileWriter escribir;
+ try {
+ escribir = new FileWriter(archivo,true);
+ for(ArrayList<Object> fila : datos){
+ String idList = fila.toString();
+ String csv = idList.substring(1, idList.length() - 1).replace(", ", ",");
+ escribir.write(csv);
+ }
+
+ escribir.close();
+
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+
+ public static class TipoAlumno {
public static final Double NIVEL_CONOCIMIENTO_BAJO = 0.1;
public static final Double NIVEL_CONOCIMIENTO_MEDIO = 0.5;
public static final Double NIVEL_CONOCIMIENTO_ALTO = 0.9;
}
-
+
+
+
}
diff --git a/EjercitarServer/ejbModule/beans/SimulacionBeanRemote.java b/EjercitarServer/ejbModule/beans/SimulacionBeanRemote.java
new file mode 100644
index 0000000..5293b3b
--- /dev/null
+++ b/EjercitarServer/ejbModule/beans/SimulacionBeanRemote.java
@@ -0,0 +1,8 @@
+package beans;
+
+import javax.ejb.Remote;
+
+@Remote
+public interface SimulacionBeanRemote {
+ public void simular();
+}