Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/EjercitarServer/ejbModule/beans/AdministracionBean.java
diff options
context:
space:
mode:
Diffstat (limited to 'EjercitarServer/ejbModule/beans/AdministracionBean.java')
-rw-r--r--EjercitarServer/ejbModule/beans/AdministracionBean.java306
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);
+ ;
+
+ }
+ */
}
- }
+
+