public object Ejecutar(Ambito ambito)
        {
            try
            {
                this.numero = Estatico.numPregunta;
                Estatico.numPregunta++;
                DamePregunta dame = new DamePregunta(identificador, parametros, clase, linea, columna, estilo.tipo, "", this.numero);
                Pregunta     p    = dame.getPregunta(ambito);
                if (p != null)
                {
                    object l = estilo.parametros.ElementAt(0).getValor(ambito);
                    if (l is Objeto)
                    {
                        Objeto o = (Objeto)l;
                        if (o.idClase.ToLower().Equals("opciones"))
                        {
                            Objeto ob       = dame.ob;
                            Ambito auxiliar = dame.ambPregu;

                            Opciones listado = dameOpciones(o.ambito);

                            int tipo = 0;

                            if (estilo.tipo.Equals("seleccionar"))
                            {
                                tipo = 0;
                            }
                            else
                            {
                                tipo = 1;
                            }

                            /*MUESTRA EL FORM*/
MuestraForm:
                            Seleccionar s = new Seleccionar(p, tipo, listado, linea, columna, clase, ambito.archivo);
                            s.ShowDialog();
                            String respuesta = s.respuesta;
                            if (respuesta.Equals(""))
                            {
                                this.valorResp = Estatico.respuestaPorDefecto(this.casteo);
                            }
                            else
                            {
                                this.valorResp = Estatico.casteaRespuestaA(respuesta, valorResp, this.casteo);
                            }
                            if (valorResp is null)
                            {
                                TError error = new TError("Semantico", "No se logro Castear la respuesta a tipo: " + this.casteo.ToString() + " | Clase: " + clase + " | Archivo: " + ambito.archivo, linea, columna, false);
                                Estatico.errores.Add(error);
                                Estatico.ColocaError(error);
                                goto MuestraForm;
                            }
                            if (!llamaARespuesta(auxiliar, valorResp))
                            {
                                goto MuestraForm;
                            }
                            PreguntaAlmacenada nueva = new PreguntaAlmacenada(this.identificador, p.etiqueta, this.numero);
                            nueva.addAnswer(this.valorResp.ToString());
                            Estatico.resps.Add(nueva);

                            ob.ambito = dame.ambPregu;

                            if (s.salir != null)
                            {
                                return(s.salir);
                            }
                        }
                        else
                        {
                            TError error = new TError("Semantico", "El parametro recibido para la pregunta: " + estilo.tipo + " requiere un objeto de tipo Opciones | Clase: " + clase + " | Archivo: " + ambito.archivo, linea, columna, false);
                            Estatico.errores.Add(error);
                            Estatico.ColocaError(error);
                        }
                    }
                    else
                    {
                        TError error = new TError("Semantico", "El parametro recibido para la pregunta: " + estilo.tipo + " requiere un objeto de tipo Opciones | Clase: " + clase + " | Archivo: " + ambito.archivo, linea, columna, false);
                        Estatico.errores.Add(error);
                        Estatico.ColocaError(error);
                    }
                }
            }
            catch (Exception e)
            {
                TError error = new TError("Ejecucion", "Error al ejecutar pregunta:" + this.identificador + " de tipo: " + estilo.tipo + " | Clase: " + clase + " | Archivo: " + ambito.archivo + " | Mensaje: " + e.Message, linea, columna, false);
                Estatico.ColocaError(error);
                Estatico.errores.Add(error);
            }
            return(new Nulo());
        }
Beispiel #2
0
        public object Ejecutar(Ambito ambito)
        {
            try
            {
                if (estilo.parametros.Count == 3)
                {
                    Expresion p1 = estilo.parametros.ElementAt(0);
                    Expresion p2 = estilo.parametros.ElementAt(1);
                    Expresion p3 = estilo.parametros.ElementAt(2);

                    Object min = p1.getValor(ambito);
                    Object max = p2.getValor(ambito);
                    Object fil = p3.getValor(ambito);

                    if (min is int && max is int && fil is int)
                    {
                        int cad_min = (int)min;
                        int cad_max = (int)max;
                        int cad_fil = (int)fil;

                        if (cad_max <= cad_min)
                        {
                            cad_max = cad_min + 2;
                        }
                        this.numero = Estatico.numPregunta;
                        Estatico.numPregunta++;
                        DamePregunta dame = new DamePregunta(identificador, parametros, clase, linea, columna, "Texto/Cadena", "(min, max, fil)", this.numero);

                        Pregunta p = dame.getPregunta(ambito);

                        if (p != null)
                        {
                            Objeto ob = dame.ob;

                            Ambito auxiliar = dame.ambPregu;


MuestraForm:
                            /*AQUI YA CREO EL FORMULARIO*/
                            Cadenas c = new Cadenas(p, linea, columna, clase, ambito.archivo, cad_max, cad_min, cad_fil, true);
                            c.ShowDialog();

                            String resp = c.respuesta;

                            if (resp.Equals(""))
                            {
                                this.valorResp = Estatico.respuestaPorDefecto(this.casteo);
                            }
                            else
                            {
                                this.valorResp = Estatico.casteaRespuestaA(resp, valorResp, this.casteo);
                            }
                            if (valorResp is null)
                            {
                                TError error = new TError("Semantico", "No se logro Castear la respuesta a tipo: " + this.casteo.ToString() + " | Clase: " + clase + " | Archivo: " + ambito.archivo, linea, columna, false);
                                Estatico.errores.Add(error);
                                Estatico.ColocaError(error);
                                goto MuestraForm;
                            }

                            // LLAMO A RESPUESTA
                            if (!llamaARespuesta(auxiliar, valorResp))
                            {
                                goto MuestraForm;
                            }

                            PreguntaAlmacenada pr = new PreguntaAlmacenada(this.identificador, p.etiqueta, this.numero);
                            pr.addAnswer(this.valorResp.ToString());
                            Estatico.resps.Add(pr);

                            ob.ambito = dame.ambPregu;

                            if (c.salir != null)
                            {
                                return(c.salir);
                            }
                        }
                    }
                    else
                    {
                        TError error = new TError("Semantico", "Error Al Mostrar Pregunta: \"" + this.identificador + "\" ya que se espera que sus parametros sean enteros: (min, max, fila) | Clase: " + clase + " | Archivo: " + ambito.archivo, linea, columna, false);
                        Estatico.errores.Add(error);
                        Estatico.ColocaError(error);
                    }
                }
                else
                {
                    this.numero = Estatico.numPregunta;
                    Estatico.numPregunta++;
                    DamePregunta dame = new DamePregunta(identificador, parametros, clase, linea, columna, "Texto/Cadena", "()", this.numero);

                    Pregunta p = dame.getPregunta(ambito);

                    if (p != null)
                    {
                        Objeto ob = dame.ob;

                        Ambito auxiliar = dame.ambPregu;

MuestraForm1:
                        /*AQUI YA CREO EL FORMULARIO*/
                        Cadenas c = new Cadenas(p, linea, columna, clase, ambito.archivo, -1, -2, -1, false);
                        c.ShowDialog();

                        String resp = c.respuesta;
                        if (resp.Equals(""))
                        {
                            this.valorResp = Estatico.respuestaPorDefecto(this.casteo);
                        }
                        else
                        {
                            this.valorResp = Estatico.casteaRespuestaA(resp, valorResp, this.casteo);
                        }
                        if (valorResp is null)
                        {
                            TError error = new TError("Semantico", "No se logro Castear la respuesta a tipo: " + this.casteo.ToString() + " que es lo que se espera! | Clase: " + clase + " | Archivo: " + ambito.archivo, linea, columna, false);
                            Estatico.errores.Add(error);
                            Estatico.ColocaError(error);
                            goto MuestraForm1;
                        }

                        // LLAMO A RESPUESTA
                        if (!llamaARespuesta(auxiliar, valorResp))
                        {
                            goto MuestraForm1;
                        }

                        PreguntaAlmacenada pr = new PreguntaAlmacenada(this.identificador, p.etiqueta, this.numero);
                        pr.addAnswer(this.valorResp.ToString());
                        Estatico.resps.Add(pr);

                        ob.ambito = dame.ambPregu;

                        if (c.salir != null)
                        {
                            return(c.salir);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                TError error = new TError("Ejecucion", "Error al ejecutar Pregunta: " + this.identificador + " | Clase: " + clase + " | Archivo: " + ambito.archivo + " | Mensaje: " + e.Message, linea, columna, false);
                Estatico.ColocaError(error);
                Estatico.errores.Add(error);
            }
            return(new Nulo());
        }
Beispiel #3
0
        public object Ejecutar(Ambito ambito)
        {
            try
            {
                this.numero = Estatico.numPregunta;
                Estatico.numPregunta++;
                DamePregunta dame = new DamePregunta(identificador, parametros, clase, linea, columna, estilo.tipo, "", this.numero);
                Pregunta     p    = dame.getPregunta(ambito);
                if (p != null)
                {
                    Expresion p1 = estilo.parametros.ElementAt(0);
                    Expresion p2 = estilo.parametros.ElementAt(1);

                    Object val1 = p1.getValor(ambito);
                    Object val2 = p2.getValor(ambito);

                    Objeto ob       = dame.ob;
                    Ambito auxiliar = dame.ambPregu;

                    String etiquetaV = "Verdadero";
                    String etiquetaF = "Falso";

                    if (val1 is String && val2 is String)
                    {
                        etiquetaV = (String)val1;
                        etiquetaF = (String)val2;
                    }

MuestraForm:
                    Condicional c = new Condicional(p, etiquetaV, etiquetaF, linea, columna, clase, ambito.archivo);
                    c.ShowDialog();
                    String respuesta = c.respuesta;
                    if (respuesta.Equals(""))
                    {
                        this.valorResp = Estatico.respuestaPorDefecto(this.casteo);
                    }
                    else
                    {
                        this.valorResp = Estatico.casteaRespuestaA(respuesta, valorResp, this.casteo);
                    }
                    if (valorResp is null)
                    {
                        TError error = new TError("Semantico", "No se logro Castear la respuesta a tipo: " + this.casteo.ToString() + " | Clase: " + clase + " | Archivo: " + ambito.archivo, linea, columna, false);
                        Estatico.errores.Add(error);
                        Estatico.ColocaError(error);
                        goto MuestraForm;
                    }
                    if (!llamaARespuesta(auxiliar, valorResp))
                    {
                        goto MuestraForm;
                    }
                    PreguntaAlmacenada nueva = new PreguntaAlmacenada(this.identificador, p.etiqueta, this.numero);
                    nueva.addAnswer(this.valorResp.ToString());
                    Estatico.resps.Add(nueva);

                    ob.ambito = dame.ambPregu;

                    if (c.salir != null)
                    {
                        return(c.salir);
                    }
                }
            }
            catch (Exception e)
            {
                TError error = new TError("Ejecucion", "Se produjo un error de Ejecucion en la ejecucion de Pregunta De tipo: " + estilo.tipo + " | Clase: " + clase + " | Archivo: " + ambito.archivo + " | Mensaje: " + e.Message, linea, columna, false);
                Estatico.errores.Add(error);
                Estatico.ColocaError(error);
            }
            return(new Nulo());
        }
Beispiel #4
0
        public object Ejecutar(Ambito ambito)
        {
            try
            {
                this.numero = Estatico.numPregunta;
                Estatico.numPregunta++;
                DamePregunta dame = new DamePregunta(identificador, parametros, clase, linea, columna, estilo.tipo, "", this.numero);
                Pregunta     p    = dame.getPregunta(ambito);
                if (p != null)
                {
                    Objeto ob       = dame.ob;
                    Ambito auxiliar = dame.ambPregu;
                    int    tipo     = 0;
                    if (estilo.tipo.Equals("fechahora"))
                    {
                        tipo = 0;
                    }
                    else if (estilo.tipo.Equals("hora"))
                    {
                        tipo = 2;
                    }
                    else if (estilo.tipo.Equals("fecha"))
                    {
                        tipo = 1;
                    }

MuestraForm1:
                    FechasHoras f = new FechasHoras(p, tipo);
                    f.ShowDialog();
                    String respuesta = f.respuesta;
                    if (respuesta.Equals(""))
                    {
                        this.valorResp = Estatico.respuestaPorDefecto(this.casteo);
                    }
                    else
                    {
                        this.valorResp = Estatico.casteaRespuestaA(respuesta, valorResp, this.casteo);
                    }
                    if (valorResp is null)
                    {
                        TError error = new TError("Semantico", "No se logro Castear la respuesta a tipo: " + this.casteo.ToString() + " | Clase: " + clase + " | Archivo: " + ambito.archivo, linea, columna, false);
                        Estatico.errores.Add(error);
                        Estatico.ColocaError(error);
                        goto MuestraForm1;
                    }
                    if (!llamaARespuesta(auxiliar, valorResp))
                    {
                        goto MuestraForm1;
                    }
                    PreguntaAlmacenada nueva = new PreguntaAlmacenada(this.identificador, p.etiqueta, this.numero);
                    nueva.addAnswer(this.valorResp.ToString());
                    Estatico.resps.Add(nueva);

                    ob.ambito = dame.ambPregu;

                    if (f.salir != null)
                    {
                        return(f.salir);
                    }
                }
            }
            catch (Exception e)
            {
                TError error = new TError("Ejecucion", "Se produjo un error de Ejecucion en la ejecucion de Pregunta De tipo: " + estilo.tipo + " | Clase: " + clase + " | Archivo: " + ambito.archivo + " | Mensaje: " + e.Message, linea, columna, false);
                Estatico.errores.Add(error);
                Estatico.ColocaError(error);
            }
            return(new Nulo());
        }
        public object Ejecutar(Ambito ambito)
        {
            try
            {
                this.numero = Estatico.numPregunta;
                Estatico.numPregunta++;
                DamePregunta pr = new DamePregunta(this.identificador, parametros, clase, linea, columna, "Entero, Rango, Decimal", "", this.numero);
                Pregunta     p  = pr.getPregunta(ambito);
                if (p != null)
                {
                    Objeto ob       = pr.ob;
                    Ambito auxiliar = pr.ambPregu;
                    if (estilo.tipo.ToLower().Equals("entero") || estilo.tipo.ToLower().Equals("decimal"))
                    {
MuestraForm1:
                        Numerico n = new Numerico(p, linea, columna, 0, 0, false, estilo.tipo.Equals("decimal") ? true : false);
                        n.ShowDialog();
                        String respuesta = n.respuesta;
                        if (respuesta.Equals(""))
                        {
                            this.valorResp = Estatico.respuestaPorDefecto(this.casteo);
                        }
                        else
                        {
                            this.valorResp = Estatico.casteaRespuestaA(respuesta, valorResp, this.casteo);
                        }
                        if (valorResp is null)
                        {
                            TError error = new TError("Semantico", "No se logro Castear la respuesta a tipo: " + this.casteo.ToString() + " | Clase: " + clase + " | Archivo: " + ambito.archivo, linea, columna, false);
                            Estatico.errores.Add(error);
                            Estatico.ColocaError(error);
                            goto MuestraForm1;
                        }

                        if (!llamaARespuesta(auxiliar, valorResp))
                        {
                            goto MuestraForm1;
                        }

                        PreguntaAlmacenada nueva = new PreguntaAlmacenada(this.identificador, p.etiqueta, this.numero);
                        nueva.addAnswer(this.valorResp.ToString());
                        Estatico.resps.Add(nueva);

                        ob.ambito = pr.ambPregu;

                        if (n.salir != null)
                        {
                            return(n.salir);
                        }
                    }
                    else if (estilo.tipo.ToLower().Equals("rango"))
                    {
                        Expresion p1  = this.estilo.parametros.ElementAt(0); //INFERIOR
                        Expresion p2  = this.estilo.parametros.ElementAt(1); //SUPERIOR
                        Object    inf = p1.getValor(ambito);
                        Object    sup = p2.getValor(ambito);
                        if (inf is int && sup is int)
                        {
                            int superior = (int)sup;
                            int inferior = (int)inf;
MuestraForm2:
                            Numerico n = new Numerico(p, linea, columna, inferior, superior, true, false);
                            n.ShowDialog();
                            String respuesta = n.respuesta;
                            if (respuesta.Equals(""))
                            {
                                this.valorResp = Estatico.respuestaPorDefecto(this.casteo);
                            }
                            else
                            {
                                this.valorResp = Estatico.casteaRespuestaA(respuesta, valorResp, this.casteo);
                            }
                            if (valorResp is null)
                            {
                                TError error = new TError("Semantico", "No se logro Castear la respuesta a tipo: " + this.casteo.ToString() + " | Clase: " + clase + " | Archivo: " + ambito.archivo, linea, columna, false);
                                Estatico.errores.Add(error);
                                Estatico.ColocaError(error);
                                goto MuestraForm2;
                            }

                            if (!llamaARespuesta(auxiliar, valorResp))
                            {
                                goto MuestraForm2;
                            }

                            PreguntaAlmacenada nueva = new PreguntaAlmacenada(this.identificador, p.etiqueta, this.numero);
                            nueva.addAnswer(this.valorResp.ToString());
                            Estatico.resps.Add(nueva);

                            ob.ambito = pr.ambPregu;

                            if (n.salir != null)
                            {
                                return(n.salir);
                            }
                        }
                        else
                        {
                            TError error = new TError("Semantico", "Para la visualizacion de pregunta de Rango recibe parametros: Rango(entero, entero) | Clase: " + clase + " | Archivo: " + ambito.archivo, linea, columna, false);
                            Estatico.errores.Add(error);
                            Estatico.ColocaError(error);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                TError error = new TError("Ejecucion", "Se produjo un error de Ejecucion en la ejecucion de Pregunta numerica | Clase: " + clase + " | Archivo: " + ambito.archivo + " | Mensaje: " + e.Message, linea, columna, false);
                Estatico.errores.Add(error);
                Estatico.ColocaError(error);
            }
            return(new Nulo());
        }