diff options
Diffstat (limited to 'EjercitarServer/ejbModule/beans/AdministracionBean.java')
-rw-r--r-- | EjercitarServer/ejbModule/beans/AdministracionBean.java | 306 |
1 files changed, 145 insertions, 161 deletions
diff --git a/EjercitarServer/ejbModule/beans/AdministracionBean.java b/EjercitarServer/ejbModule/beans/AdministracionBean.java index 8368297..a47f7a6 100644 --- a/EjercitarServer/ejbModule/beans/AdministracionBean.java +++ b/EjercitarServer/ejbModule/beans/AdministracionBean.java @@ -9,6 +9,7 @@ import javax.ejb.LocalBean; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; +import javax.persistence.Query; import javax.servlet.http.Part; import smile.Network; @@ -59,18 +60,20 @@ public class AdministracionBean implements AdministracionBeanRemote{ //em.getTransaction().commit(); } - private double [] calcularProbabilidadesCCI(Ejercicio ejercicio) { + public double [] calcularProbabilidadesCCI(Ejercicio ejercicio) { // TODO Auto-generated method stub - int dimension = (int) Math.pow(2, ejercicio.getConceptoList().size()); - double [] ejercicioDef = new double[dimension * 2]; + Double dimension = Math.pow(2, ejercicio.getConceptoList().size()); + double [] ejercicioDef = new double[dimension.intValue() * 2]; int j = 0; int contador = 0; double x = calcularXasterisco(ejercicio); for(int i = 0; i < dimension; i++) { - double multiplicador = 0 / (dimension - 1); + double multiplicador = i / (dimension - 1); + System.out.println("i: " + i + " /dimension: "+ dimension); System.out.println("mult " + multiplicador); - ejercicioDef[j] = funcionGx((multiplicador * x), dimension, ejercicio); + ejercicioDef[j] = funcionGx((multiplicador * x), dimension.intValue(), ejercicio); + System.out.println("funcionGx: " + ejercicioDef[j]); j++; ejercicioDef[j] = 1 - ejercicioDef[j-1]; j++; @@ -158,11 +161,11 @@ public class AdministracionBean implements AdministracionBeanRemote{ // TODO Auto-generated method stub String nombreRed = "red_asignatura_" + tema.getAsignatura().getIdAsignatura() + ".xdsl"; Network net = new Network(); - net.readFile("redes/" + nombreRed); + net.readFile("/home/redes/" + nombreRed); //cambiar formato nombre String nom = sp.convertirEspacioToGuion(tema.getNombre()); net.deleteNode(nom); - net.writeFile("redes/" + nombreRed); + net.writeFile("/home/redes/" + nombreRed); } public void agregarConcepto(Concepto concepto) { @@ -199,7 +202,7 @@ public class AdministracionBean implements AdministracionBeanRemote{ // = em.find(Ejercicio.class,idEjercicio); } - calcuarlarProbalidadesEval(ejercicios, idAsignatura); + calcularProbabilidadesCCI(ejercicios, idAsignatura); } @@ -220,7 +223,7 @@ public class AdministracionBean implements AdministracionBeanRemote{ ejercicios.add(em.find(Ejercicio.class,idEjercicio)); } - calcuarlarProbalidadesEval(ejercicios, concepto.getTema().getAsignatura().getIdAsignatura().toString()); + calcularProbabilidadesCCI(ejercicios, concepto.getTema().getAsignatura().getIdAsignatura().toString()); em.remove(concepto); @@ -234,12 +237,12 @@ public class AdministracionBean implements AdministracionBeanRemote{ String nombreRed = "red_asignatura_" + concepto.getTema().getAsignatura().getIdAsignatura() + ".xdsl"; Network net = new Network(); - net.readFile("redes/" + nombreRed); + net.readFile("/home/redes/" + nombreRed); //cambiar formato nodo String nom = sp.convertirEspacioToGuion(concepto.getNombre()); net.deleteNode(nom); - net.writeFile("redes/" + nombreRed); + net.writeFile("/home/redes/" + nombreRed); } @@ -252,7 +255,7 @@ public class AdministracionBean implements AdministracionBeanRemote{ em.persist(asignatura); Network net = new Network(); String nombreRed = "red_asignatura_" + asignatura.getIdAsignatura() + ".xdsl"; - net.writeFile("redes/" + nombreRed); + net.writeFile("/home/redes/" + nombreRed); }*/ @@ -268,14 +271,14 @@ public class AdministracionBean implements AdministracionBeanRemote{ // Calculo de las probabilidades condicionales de las relaciones de agregacion String nombreRed = "red_asignatura_" + idAsignatura + ".xdsl"; - System.out.println("redes/" + nombreRed); + System.out.println("/home/redes/" + nombreRed); Network net = new Network(); - net.readFile("redes/" + nombreRed); + net.readFile("/home/redes/" + nombreRed); String nomTem; Asignatura asignatura = em.find(Asignatura.class, idAsignatura); - List<Tema> temaList = (List<Tema>) em.createQuery("Select e from Tema e where e.profesor = :profesor and e.asignatura=:asignatura" ) - .setParameter("profesor", asignatura.getProfesor()).setParameter("asignatura", asignatura).getResultList(); + List<Tema> temaList = (List<Tema>) em.createQuery("Select e from Tema e where e.profesor = :profesor and e.asignatura=:asignatura order by e.idTema" ) + .setParameter("profesor", asignatura.getProfesor()).setParameter("asignatura", asignatura).getResultList() ; for(Tema tema : temaList) { double[] temaDef = calcularProbabilidadesTema(tema); @@ -292,16 +295,18 @@ public class AdministracionBean implements AdministracionBeanRemote{ net.setNodeDefinition(nomTem, asignaturaDef); - net.writeFile("redes/" + nombreRed); + net.writeFile("/home/redes/" + nombreRed); } private double[] calcularProbabilidadesAsignatura(Asignatura asignatura) { int dimension = (int) Math.pow(2, asignatura.getTemaList().size()); double [] asignaturaDef = new double[dimension * 2]; + System.out.println("DimensionAsignatura "+ dimension ); + int j = 0; for(int i = 0; i < dimension; i++) { - asignaturaDef[j] = cpAsignatura(asignatura, i); + asignaturaDef[j] = 1 - cpAsignatura(asignatura, i); j++; asignaturaDef[j] = 1 - asignaturaDef[j-1]; j++; @@ -320,102 +325,37 @@ public class AdministracionBean implements AdministracionBeanRemote{ while(comb.length() != dimension){ comb = "0" + comb; } - int k = dimension - 1; + double valTemp = 0; List<Tema> temaList = em.createQuery("Select e from Tema e where e.asignatura = :asignatura") .setParameter("asignatura", asignatura).getResultList(); System.out.println(temaList); for (int j = 0; j < temaList.size(); j++) { - if(comb.charAt(k) == '1') { + if(comb.charAt(j) == '1') { valTemp = valTemp + temaList.get(j).getPeso(); } - k--; - } + } return valTemp; } - private double [] calcularProbabilidadesEval(Ejercicio ejercicio) { - //Calculo de las probabilidades condicionales - int dimension = (int) Math.pow(2, ejercicio.getConceptoList().size()); - double [] ejercicioDef = new double[dimension * 2]; - - int j = 0; - for(int i = 0; i < dimension; i++) { - ejercicioDef[j] = cp(ejercicio, i); - j++; - ejercicioDef[j] = 1 - ejercicioDef[j-1]; - j++; - - } - - return ejercicioDef; - } - - private double cpTest(Ejercicio ejercicio, int i) { - - //ejercicio.getConceptoList().size() - - String comb = Integer.toBinaryString(i); - while(comb.length() < ejercicio.getConceptoList().size()){ - comb = "0" + comb; - System.out.println(comb); - } - int k = ejercicio.getConceptoList().size() - 1; - double valTemp = 1; - for (int j = 0; j < ejercicio.getConceptoList().size(); j++) { - if(comb.charAt(k) == '0') { - valTemp = valTemp * ejercicio.getConceptoList().get(j).getAdivinanza(); - } else { - valTemp = valTemp * (1 - - ejercicio.getConceptoList().get(j).getDescuido()); - } - - k--; - } - - return valTemp; - - } - - - private double cp(Ejercicio ejercicio, int i) { - - String comb = Integer.toBinaryString(i); - while(comb.length() < ejercicio.getConceptoList().size()){ - comb = "0" + comb; - System.out.println(comb); - } - int k = ejercicio.getConceptoList().size() - 1; - double valTemp = 1; - for (int j = 0; j < ejercicio.getConceptoList().size(); j++) { - if(comb.charAt(k) == '0') { - valTemp = valTemp * ejercicio.getConceptoList().get(j).getAdivinanza(); - } else { - valTemp = valTemp * (1 - - ejercicio.getConceptoList().get(j).getDescuido()); - } - - k--; - } - - return valTemp; - - } - + private double [] calcularProbabilidadesTema(Tema tema) { //Calculo de las probabilidades condicionales int dimension = (int) Math.pow(2, tema.getConceptoList().size()); + System.out.println("dimension " + dimension); double [] temaDef = new double[dimension * 2]; - + System.out.println("**************************************************************"); int j = 0; for(int i = 0; i < dimension; i++) { - temaDef[j] = cpTema(tema, i); + temaDef[j] = 1- cpTema(tema, i); j++; temaDef[j] = 1 - temaDef[j-1]; j++; } + System.out.println("**************************************************************"); + return temaDef; } @@ -426,13 +366,22 @@ public class AdministracionBean implements AdministracionBeanRemote{ while(comb.length() < tema.getConceptoList().size()){ comb = "0" + comb; } - int k = tema.getConceptoList().size() - 1; + + double valTemp = 0; for (int j = 0; j < tema.getConceptoList().size(); j++) { - if(comb.charAt(k) == '1') { + System.out.println("--------------------------------------------------------"); + System.out.println("j: " + j); + + System.out.println("comb: " + comb); + if(comb.charAt(j) == '1') { + + System.out.println("concepto: " + tema.getConceptoList().get(j)); + System.out.println("peso: " + tema.getConceptoList().get(j).getPeso()); + System.out.println("--------------------------------------------------------"); + valTemp = valTemp + tema.getConceptoList().get(j).getPeso(); } - k--; } return valTemp; @@ -442,9 +391,9 @@ public class AdministracionBean implements AdministracionBeanRemote{ private void agregarEjercicioRed(Ejercicio ejercicio, int idAsignatura) { //operaciones sobre la red bayesiana con smile String nombreRed = "red_asignatura_" + idAsignatura + ".xdsl"; - System.out.println("redes/" + nombreRed); + System.out.println("/home/redes/" + nombreRed); Network net = new Network(); - net.readFile("redes/" + nombreRed); + net.readFile("/home/redes/" + nombreRed); //agregar nodo ejercicio String titulo = "E" + Integer.toString(ejercicio.getIdEjercicio()); @@ -464,15 +413,15 @@ public class AdministracionBean implements AdministracionBeanRemote{ double[] ejercicioDef = calcularProbabilidadesCCI(ejercicio); net.setNodeDefinition(titulo, ejercicioDef); - net.writeFile("redes/" + nombreRed); + net.writeFile("/home/redes/" + nombreRed); } private void agregarTemaRed(Tema tema) { //operaciones sobre la red bayesiana con smile String nombreRed = "red_asignatura_" + tema.getAsignatura().getIdAsignatura() + ".xdsl"; - System.out.println("redes/" + nombreRed); + System.out.println("/home/redes/" + nombreRed); Network net = new Network(); - net.readFile("redes/" + nombreRed); + net.readFile("/home/redes/" + nombreRed); //agregar nodo ejercicio @@ -488,16 +437,16 @@ public class AdministracionBean implements AdministracionBeanRemote{ net.addArc(titulo, sp.convertirEspacioToGuion(tema.getAsignatura().getNombre())); - net.writeFile("redes/" + nombreRed); + net.writeFile("/home/redes/" + nombreRed); } private void agregarConceptoRed(Concepto concepto) { //operaciones sobre la red bayesiana con smile String nombreRed = "red_asignatura_" + concepto.getTema().getAsignatura().getIdAsignatura() + ".xdsl"; String titulo; - System.out.println("redes/" + nombreRed); + System.out.println("/home/redes/" + nombreRed); Network net = new Network(); - net.readFile("redes/" + nombreRed); + net.readFile("/home/redes/" + nombreRed); //agregar nodo concepto //cambiar formato nodo @@ -518,7 +467,7 @@ public class AdministracionBean implements AdministracionBeanRemote{ conceptoDef[0] = 1 - conceptoDef[1]; //cambiar formato nodo net.setNodeDefinition(titulo, conceptoDef); - net.writeFile("redes/" + nombreRed); + net.writeFile("/home/redes/" + nombreRed); } @Override @@ -536,21 +485,23 @@ public class AdministracionBean implements AdministracionBeanRemote{ } @Override - public void agregarAsignatura(Asignatura asignatura) { - em.persist(asignatura); + public Asignatura agregarAsignatura(Asignatura asignatura) { + Network net = new Network(); String titulo = sp.convertirEspacioToGuion(asignatura.getNombre()); - + em.persist(asignatura); ////cambiar formato nodo net.addNode(Network.NodeType.Cpt, titulo); net.setOutcomeId(titulo, 0, "No_conoce"); net.setOutcomeId(titulo, 1, "Conoce"); String nombreRed = "red_asignatura_" + asignatura.getIdAsignatura() + ".xdsl"; - net.writeFile("redes/" + nombreRed); + System.out.println("/home/redes/" + nombreRed); + net.writeFile("/home/redes/" + nombreRed); + System.out.println("iiiiid asignaturaaaaa " + asignatura.getIdAsignatura()); // TODO Auto-generated method stub - - + + return asignatura; } @Override @@ -559,7 +510,7 @@ public class AdministracionBean implements AdministracionBeanRemote{ String nombreRed = "red_alumno_" + idAlumno + "_asignatura_" + idAsignatura + ".xdsl"; Network net = new Network(); - net.readFile("redes/" + nombreRed); + net.readFile("/home/redes/" + nombreRed); net.updateBeliefs(); //cambiar formato nodo @@ -586,13 +537,13 @@ public class AdministracionBean implements AdministracionBeanRemote{ String nombreRed = "red_asignatura_" + idAsignatura + ".xdsl"; Network net = new Network(); - net.readFile("redes/" + nombreRed); + net.readFile("/home/redes/" + nombreRed); for (Alumno alumno : alumnoList) { String nombreRedAlumno = "red_alumno_" + alumno.getIdAlumno() + "_asignatura_" + idAsignatura + ".xdsl"; - net.writeFile("redes/" + nombreRedAlumno); + net.writeFile("/home/redes/" + nombreRedAlumno); } @@ -609,7 +560,7 @@ public class AdministracionBean implements AdministracionBeanRemote{ String nombreRed = "red_asignatura_" + tema.getAsignatura().getIdAsignatura() + ".xdsl"; Network net = new Network(); - net.readFile("redes/" + nombreRed); + net.readFile("/home/redes/" + nombreRed); String tituloNuevo = sp.convertirEspacioToGuion(tema.getNombre()); @@ -622,24 +573,24 @@ public class AdministracionBean implements AdministracionBeanRemote{ net.setNodeName(tituloNuevo, tituloNuevo); - net.writeFile("redes/" + nombreRed); + net.writeFile("/home/redes/" + nombreRed); } - private void calcuarlarProbalidadesEval(List <Ejercicio>ejercicios, String idAsignatura){ + private void calcularProbabilidadesCCI(List <Ejercicio>ejercicios, String idAsignatura){ String nombreRed = "red_asignatura_" + idAsignatura + ".xdsl"; - System.out.println("redes/" + nombreRed); + System.out.println("/home/redes/" + nombreRed); Network net = new Network(); - net.readFile("redes/" + nombreRed); + net.readFile("/home/redes/" + nombreRed); for(Ejercicio ejercicio : ejercicios){ - double[] ejercicioDef = calcularProbabilidadesEval(ejercicio); + double[] ejercicioDef = calcularProbabilidadesCCI(ejercicio); net.setNodeDefinition("E"+ejercicio.getIdEjercicio(), ejercicioDef); } - net.writeFile("redes/" + nombreRed); + net.writeFile("/home/redes/" + nombreRed); } @@ -648,9 +599,9 @@ public class AdministracionBean implements AdministracionBeanRemote{ //operaciones sobre la red bayesiana con smile String nombreRed = "red_asignatura_" + concepto.getTema().getAsignatura().getIdAsignatura() + ".xdsl"; - System.out.println("redes/" + nombreRed); + System.out.println("/home/redes/" + nombreRed); Network net = new Network(); - net.readFile("redes/" + nombreRed); + net.readFile("/home/redes/" + nombreRed); //se modifica el nombre del concepto String titulo = sp.convertirEspacioToGuion(concepto.getNombre()); @@ -673,7 +624,7 @@ public class AdministracionBean implements AdministracionBeanRemote{ conceptoDef[0] = 1 - conceptoDef[1]; net.setNodeDefinition(titulo, conceptoDef); - net.writeFile("redes/" + nombreRed); + net.writeFile("/home/redes/" + nombreRed); } @@ -681,6 +632,8 @@ public class AdministracionBean implements AdministracionBeanRemote{ Asignatura asignaturaPlantilla = em.find( Asignatura.class, idAsignaturaPlanitilla); + + em.persist(asignatura); Profesor profesor = asignatura.getProfesor(); //Asignatura asignatura = new Asignatura(); Concepto concepto; @@ -688,7 +641,7 @@ public class AdministracionBean implements AdministracionBeanRemote{ Ejercicio ejercicio; Respuesta respuesta; ArrayList <Respuesta> respuestaList = new ArrayList(); - + ArrayList <Concepto> conceptosList = new ArrayList(); //Cargar los temas a una asignatura for(Tema temaPlantilla: asignaturaPlantilla.getTemaList()){ @@ -702,11 +655,11 @@ public class AdministracionBean implements AdministracionBeanRemote{ System.out.print("asignaturaaaaa " + asignatura.getIdAsignatura()); //persiste el tema y agrega a la red - agregarTema(tema); + em.persist(tema); System.out.println("tema: " + temaPlantilla.getNombre()); //crear conceptos - for(Concepto conceptoPlantilla : tema.getConceptoList()){ + for(Concepto conceptoPlantilla : temaPlantilla.getConceptoList()){ System.out.println("concepto " + conceptoPlantilla.getNombre()); concepto = new Concepto(); concepto.setAdivinanza(conceptoPlantilla.getAdivinanza()); @@ -717,41 +670,10 @@ public class AdministracionBean implements AdministracionBeanRemote{ concepto.setPeso(conceptoPlantilla.getPeso()); concepto.setProfesor(profesor); concepto.setTema(tema); - - //persistir el concepto y agregar a la red - agregarConcepto(concepto); - - - //crear ejercicios - - for(Ejercicio ejercicioPlantilla : concepto.getEjercicioList()){ - - ejercicio = new Ejercicio(); - ejercicio.setAdivinanza(ejercicioPlantilla.getAdivinanza()); - ejercicio.setEnunciado(ejercicioPlantilla.getEnunciado()); - ejercicio.setImagen(ejercicioPlantilla.getImagen()); - ejercicio.setNivelDificultad(ejercicioPlantilla.getNivelDificultad()); - ejercicio.setProfesor(profesor); - ejercicio.setRespuesta(ejercicioPlantilla.getRespuesta()); - - - //crear Respuestas para ejercicios - for(Respuesta respuestaPlantilla : ejercicio.getRespuestaList()){ - - respuesta = new Respuesta(); - respuesta.setDescripcion(respuestaPlantilla.getDescripcion()); - respuestaList.add(respuesta); - - } - - ejercicio.setRespuestaList(respuestaList); - - //agregar ejercicio a la red - - agregarEjercicio(ejercicioPlantilla, asignatura.getIdAsignatura()); - ; - } + //persistir el concepto y agregar a la red + em.persist(concepto); + @@ -759,10 +681,72 @@ public class AdministracionBean implements AdministracionBeanRemote{ + } + +/* List<Concepto> conceptoList = new ArrayList(); + String queryConceptosPlantillas = "select c from Concepto c join c.tema t where t.asignatura = :asignatura"; + String queryEjercicios = "select e from Ejercicio e join e.conceptoList c where c in (:conceptos)"; + + String queryConceptos = "Select c from Concepto c where c.nombre = :nombre and c.descripcion = :descripcion and c.profesor = :profe order by c.idConcepto asc"; + List<Concepto> conceptos = em.createQuery(queryConceptosPlantillas) + .setParameter("asignatura", asignaturaPlantilla).getResultList(); + + System.out.println("tamanooooo conceptos " + conceptos.size()); + + List<Ejercicio> ejercicios = em.createQuery(queryEjercicios) + .setParameter("conceptos", conceptos).getResultList(); + + System.out.println("tamanooooo " + ejercicios.size()); + + for (Ejercicio ejercicioPlantilla : ejercicios) { + + ejercicio = new Ejercicio(); + ejercicio.setAdivinanza(ejercicioPlantilla.getAdivinanza()); + ejercicio.setEnunciado(ejercicioPlantilla.getEnunciado()); + ejercicio.setImagen(ejercicioPlantilla.getImagen()); + ejercicio.setNivelDificultad(ejercicioPlantilla + .getNivelDificultad()); + ejercicio.setProfesor(profesor); + ejercicio.setRespuesta(ejercicioPlantilla.getRespuesta()); + + // ejercicio.setConceptoList(ejercicioPlantilla.getConceptoList()); + // crear Respuestas para ejercicios + for (Concepto conceptoP : ejercicioPlantilla.getConceptoList()) { + + Concepto nuev = (Concepto) em + .createQuery(queryConceptos) + .setParameter("nombre", conceptoP.getNombre()) + .setParameter("descripcion", conceptoP.getDescripcion()) + .setParameter("profe", profesor).setMaxResults(1) + .getSingleResult(); + + conceptoList.add(nuev); + + } + for (Respuesta respuestaPlantilla : ejercicioPlantilla + .getRespuestaList()) { + + respuesta = new Respuesta(); + respuesta.setDescripcion(respuestaPlantilla.getDescripcion()); + + respuestaList.add(respuesta); + + } + ejercicio.setConceptoList(conceptoList); + ejercicio.setRespuestaList(respuestaList); + + // agregar ejercicio a la red + + em.persist(ejercicio); + ; + + } + */ } - } + + |