diff options
author | cecigg <caggsld@gmail.com> | 2014-10-11 18:29:03 (GMT) |
---|---|---|
committer | cecigg <caggsld@gmail.com> | 2014-10-11 18:29:03 (GMT) |
commit | bda837bc523b5f65641454533c679e73e8446eca (patch) | |
tree | 53cd660a37e151bc63722547f1f422ba7c11f51f | |
parent | 01978a03944af99ba09600c6ebbf5b8703069d35 (diff) | |
parent | de8434c76fcef2c174147d452ea03f7af2033b95 (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.java | 5 | ||||
-rw-r--r-- | EjercitarJPA/src/model/Sesion.java | 17 | ||||
-rw-r--r-- | EjercitarServer/ejbModule/beans/AdministracionBean.java | 37 | ||||
-rw-r--r-- | EjercitarServer/ejbModule/beans/AdministracionBeanRemote.java | 6 | ||||
-rw-r--r-- | EjercitarServer/ejbModule/beans/EjercitarWSBean.java | 39 | ||||
-rw-r--r-- | EjercitarServer/ejbModule/beans/SimulacionBean.java (renamed from EjercitarServer/ejbModule/beans/Simulacion.java) | 71 | ||||
-rw-r--r-- | EjercitarServer/ejbModule/beans/SimulacionBeanRemote.java | 8 |
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(); +} |