public override object Ejecutar(Entorno e, bool funcion, bool ciclo, bool sw, bool tc, LinkedList <Salida> log, LinkedList <Error> errores) { BD actual = e.Master.Actual; if (actual != null) { if (actual.GetUserType(Id) == null) { actual.Add(new Simbolo(Rol.USERTYPE, Id.ToLower(), new Entorno(null, Atributos))); } else { if (!IfNotExist) { return(new Throw("TypeAlreadyExists", Linea, Columna)); } //errores.AddLast(new Error("Semántico", "Ya existe un User Type con el id: " + Id + " en la base de datos.", Linea, Columna)); } } else { return(new Throw("UseBDException", Linea, Columna)); } //errores.AddLast(new Error("Semántico", "No se ha seleccionado una base de datos, no se pudo guardar el User Type.", Linea, Columna)); return(null); }
public override object Ejecutar(Entorno e, bool funcion, bool ciclo, bool sw, bool tc, LinkedList <Salida> log, LinkedList <Error> errores) { BD actual = e.Master.Actual; if (actual != null) { string firma = Id; if (Parametro != null) { foreach (Identificador id in Parametro) { firma += "-" + id.Tipo.Type.ToString(); } } Simbolo sim = actual.GetProcedimiento(firma); if (sim == null) { Procedimiento proc = new Procedimiento(Parametro, Retorno, Bloque); sim = new Simbolo(new Tipo(Type.VOID), Rol.PROCEDIMIENTO, firma.ToLower(), proc); actual.Add(sim); } else { return(new Throw("ProcedureAlreadyExists", Linea, Columna)); } //errores.AddLast(new Error("Semántico", "Ya se ha declarado un Procedimiento con la misma firma: " + firma.ToLower() + " en la base de datos.", Linea, Columna)); } else { errores.AddLast(new Error("Semántico", "No se ha seleccionado una base de datos, no se pudo guardar el Procedimiento.", Linea, Columna)); } return(null); }
public override object Ejecutar(Entorno e, bool funcion, bool ciclo, bool sw, bool tc, LinkedList <Salida> log, LinkedList <Error> errores) { BD actual = e.Master.Actual; if (actual != null) { if (e.Master.UsuarioActual != null) { if (e.Master.UsuarioActual.GetPermiso(actual.Id)) { if (actual.GetTabla(Id) == null) { if (Primary != null) { foreach (string primary in Primary) { bool band = false; foreach (Simbolo sim in Simbolos) { if (primary.Equals(sim.Id)) { sim.Rol = Rol.PRIMARY; band = true; break; } } if (!band) { errores.AddLast(new Error("Semántico", "No existe una Columna con el id: " + primary + " en la tabla.", Linea, Columna)); } } } Tabla tabla = new Tabla(); /*Validacion Counter*/ bool counter = false; bool another = false; foreach (Simbolo sim in Simbolos) { if (sim.Rol == Rol.PRIMARY) { if (sim.Tipo.IsCounter()) { counter = true; } else { another = true; } } if (tabla.Cabecera.GetCualquiera(sim.Id) != null) { errores.AddLast(new Error("Semántico", "Ya existe una columna con el id: " + sim.Id + " en la Tabla.", Linea, Columna)); continue; } tabla.Cabecera.Add(sim); } if (counter) { if (another) { errores.AddLast(new Error("Semántico", "Todos las columnas primary key deben ser tipo counter.", Linea, Columna)); return(null); } } if (tabla.Cabecera.Simbolos.Count() > 0) { actual.Add(new Simbolo(Rol.TABLA, Id.ToLower(), tabla)); } else { errores.AddLast(new Error("Semántico", "No puede crear una Tabla sin Columnas.", Linea, Columna)); } return(null); } else { if (!IfNotExist) { return(new Throw("TableAlreadyExists", Linea, Columna)); } //errores.AddLast(new Error("Semántico", "Ya existe una Tabla con el id: " + Id + " en la base de datos.", Linea, Columna)); } } else { errores.AddLast(new Error("Semántico", "El Usuario no tiene permisos sobre: " + actual.Id + ".", Linea, Columna)); } } else { errores.AddLast(new Error("Semántico", "No hay un Usuario logeado.", Linea, Columna)); } } else { return(new Throw("UseBDException", Linea, Columna)); } //errores.AddLast(new Error("Semántico", "No se ha seleccionado una base de datos, no se pudo guardar la Tabla.", Linea, Columna)); return(null); }