/* * Metodo que ejecutara las acciones * @ts tabla de simbolos * @user usuario que ejecuta la accion * return Mensaje LUP de Correcta accion o Incorrecta */ public object ejecutar(TablaDeSimbolos ts, Ambito ambito, TablaDeSimbolos tsT) { Mensaje mensa = new Mensaje(); BaseDeDatos db = TablaBaseDeDatos.getBase(bd); if (db == null) { ambito.mensajes.AddLast(mensa.error("La base de datos: " + bd + " no existe ", linea, columna, "Semantico")); ambito.listadoExcepciones.AddLast(new Excepcion("bddontexists", "La base de datos: " + bd + " no existe ")); return(null); } if (TablaBaseDeDatos.getEnUso(bd, ambito.usuario)) { ambito.mensajes.AddLast(mensa.error("La base de datos: " + bd + " esta siendo utilizada por otro usuario ", linea, columna, "Semantico")); return(null); } Usuario usu = TablaBaseDeDatos.getUsuario(ambito.usuario); if (usu == null && !ambito.usuario.Equals("admin")) { ambito.mensajes.AddLast(mensa.error("El usuario: " + ambito.usuario + " no existe ", linea, columna, "Semantico")); return(null); } ambito.baseD = bd; USO newU = new USO(ambito.baseD, ambito.usuario); TablaBaseDeDatos.deleteMine(ambito.usuario); TablaBaseDeDatos.listaEnUso.AddLast(newU); ambito.mensajes.AddLast(mensa.message("Se esta utilizando la base " + ambito.baseD + " exitosamente")); return(""); }
/* * Constructor de la clase padre * @ts tabla de simbolos padre * @user usuario que esta ejecutando las acciones * @baseD string por referencia de que base de datos estamos trabajando * @mensajes el output de la ejecucion */ public object ejecutar(TablaDeSimbolos ts, Ambito ambito, TablaDeSimbolos tsT) { Mensaje mensa = new Mensaje(); string baseD = ambito.baseD; string user = ambito.usuario; LinkedList <string> mensajes = ambito.mensajes; BaseDeDatos db = TablaBaseDeDatos.getBase(baseD); Usuario us = TablaBaseDeDatos.getUsuario(user); if (db != null) { if (user.Equals("admin")) { Tabla tabla = TablaBaseDeDatos.getTabla(db, id); if (tabla != null) { object res; if (operacion.Equals("NORMAL")) { res = guardarNormal(tabla, ts, db, ambito, tsT); } else { res = guardadoEspecial(tabla, ts, db, ambito, tsT); } if (res != null) { return(res); } } else { ambito.listadoExcepciones.AddLast(new Excepcion("tabledontexists", "La tabla: " + id + " no existe en la DB: " + ambito.baseD)); ambito.mensajes.AddLast(mensa.error("La tabla: " + id + " no existe en la DB: " + ambito.baseD, l, c, "Semantico")); } } else { if (us != null) { Boolean permiso = TablaBaseDeDatos.getPermiso(us, baseD); if (permiso) { Boolean enUso = TablaBaseDeDatos.getEnUso(baseD, user); if (!enUso) { Tabla tabla = TablaBaseDeDatos.getTabla(db, id); if (tabla != null) { object res; if (operacion.Equals("NORMAL")) { res = guardarNormal(tabla, ts, db, ambito, tsT); } else { res = guardadoEspecial(tabla, ts, db, ambito, tsT); } if (res != null) { return(res); } } else { ambito.listadoExcepciones.AddLast(new Excepcion("tabledontexists", "La tabla: " + id + " no existe en la DB: " + ambito.baseD)); ambito.mensajes.AddLast(mensa.error("La tabla: " + id + " no existe en la DB: " + ambito.baseD, l, c, "Semantico")); } } else { mensajes.AddLast(mensa.error("La DB: " + baseD + " ya esta siendo utilizada por alguien mas", l, c, "Semantico")); } } else { mensajes.AddLast(mensa.error("El usuario " + user + " no tiene permisos sobre esta base de datos", l, c, "Semantico")); } } else { mensajes.AddLast(mensa.error("El usuario " + user + " no existe", l, c, "Semantico")); } } } else { ambito.listadoExcepciones.AddLast(new Excepcion("usedbexception", "No existe la base de datos: " + ambito.baseD + " o no se ha usado el comando use")); ambito.mensajes.AddLast(mensa.error("La base de datos ha usar: " + ambito.baseD + " no existe", l, c, "Semantico")); } return(null); }
/* * Constructor de la clase padre * @ts tabla de simbolos padre * @user usuario que esta ejecutando las acciones * @baseD string por referencia de que base de datos estamos trabajando * @mensajes el output de la ejecucion */ public object ejecutar(TablaDeSimbolos ts, Ambito ambito, TablaDeSimbolos tsT) { Mensaje mensa = new Mensaje(); string user = ambito.usuario; string baseD = ambito.baseD; LinkedList <string> mensajes = ambito.mensajes; BaseDeDatos db = TablaBaseDeDatos.getBase(baseD); if (db != null) { if (user.Equals("admin")) { Tabla tabla = TablaBaseDeDatos.getTabla(db, id); if (tabla != null) { db.objetos.tablas.Remove(tabla); mensajes.AddLast(mensa.message("La tabla: " + id + " fue eliminada con exito")); return(""); } else { ambito.listadoExcepciones.AddLast(new Excepcion("tabledontexists", "La tabla: " + id + " no existe en la DB: " + ambito.baseD)); ambito.mensajes.AddLast(mensa.error("La tabla: " + id + " no existe en la DB: " + ambito.baseD, l, c, "Semantico")); } } else { Usuario usuario = TablaBaseDeDatos.getUsuario(user); if (usuario != null) { Boolean permiso = TablaBaseDeDatos.getPermiso(usuario, baseD); if (permiso) { Boolean enUso = TablaBaseDeDatos.getEnUso(baseD, user); if (!enUso) { Tabla tabla = TablaBaseDeDatos.getTabla(db, id); if (tabla != null) { db.objetos.tablas.Remove(tabla); mensajes.AddLast(mensa.message("La tabla: " + id + " fue eliminada con exito")); return(""); } else { ambito.listadoExcepciones.AddLast(new Excepcion("tabledontexists", "La tabla: " + id + " no existe en la DB: " + ambito.baseD)); ambito.mensajes.AddLast(mensa.error("La tabla: " + id + " no existe en la DB: " + ambito.baseD, l, c, "Semantico")); } } else { mensajes.AddLast(mensa.error("La DB: " + baseD + " esta siendo utilizada por otro usuario", l, c, "Semantico")); } } else { mensajes.AddLast(mensa.error("El usuario " + user + " no tiene permisos en la DB: " + baseD, l, c, "Semantico")); } } else { mensajes.AddLast(mensa.error("No existe el usuario: " + user, l, c, "Semantico")); } } } else { ambito.listadoExcepciones.AddLast(new Excepcion("usedbexception", "No existe la base de datos: " + ambito.baseD + " o no se ha usado el comando use")); ambito.mensajes.AddLast(mensa.error("La base de datos ha usar: " + ambito.baseD + " no existe", l, c, "Semantico")); } return(null); }
/* * Metodo de la implementacion * @ts tabla de simbolos global * @user usuario que ejecuta la accion * @baseD base de datos donde estamos ejecutando todo * @mensajes linkedlist con la salida deseada */ public object ejecutar(TablaDeSimbolos ts, Ambito ambito, TablaDeSimbolos tsT) { Mensaje ms = new Mensaje(); BaseDeDatos db = TablaBaseDeDatos.getBase(ambito.baseD); if (db != null) { if (ambito.usuario.Equals("admin")) { if (db.buscarProcedure(identificador) == null) { db.objetos.procedures.AddLast(new Procedures(id, codigo, identificador, parametros, identificadorOut, retornos, cuerpo)); return(""); } else { ambito.mensajes.AddLast(ms.error("El procedure: " + id + " ya existe en esta DB: " + ambito.baseD, l, c, "Semantico")); } } else { Usuario us = TablaBaseDeDatos.getUsuario(ambito.usuario); if (us != null) { if (TablaBaseDeDatos.getPermiso(us, ambito.baseD)) { if (!TablaBaseDeDatos.getEnUso(ambito.baseD, ambito.usuario)) { if (db.buscarProcedure(identificador) == null) { db.objetos.procedures.AddLast(new Procedures(id, codigo, identificador, parametros, identificadorOut, retornos, cuerpo)); return(""); } else { ambito.mensajes.AddLast(ms.error("El procedure: " + id + " ya existe en esta DB: " + ambito.baseD, l, c, "Semantico")); } } else { ambito.mensajes.AddLast(ms.error("La base de datos: " + ambito.baseD + " esta siendo utilizada por otro usuario", l, c, "Semantico")); } } else { ambito.mensajes.AddLast(ms.error("El usuario: " + ambito.usuario + " no tiene permisos sobre la DB: " + ambito.baseD, l, c, "Semantico")); } } else { ambito.mensajes.AddLast(ms.error("No se encuentra el usuario: " + ambito.usuario, l, c, "Semantico")); } } } else { ambito.listadoExcepciones.AddLast(new Excepcion("usedbexception", "No existe la base de datos: " + ambito.baseD + " o no se ha usado el comando use")); ambito.mensajes.AddLast(ms.error("La base de datos ha usar: " + id + " no existe", l, c, "Semantico")); } return(null); }
/* * Metodo de la implementacion * @ts tabla de simbolos global * @user usuario que ejecuta la accion * @baseD base de datos donde estamos ejecutando todo * @mensajes linkedlist con la salida deseada */ public object ejecutar(TablaDeSimbolos ts, Ambito ambito, TablaDeSimbolos tsT) { Mensaje mensa = new Mensaje(); BaseDeDatos db = TablaBaseDeDatos.getBase(id); Usuario us = TablaBaseDeDatos.getUsuario(ambito.usuario); string user = ambito.usuario; string baseD = ambito.baseD; LinkedList <string> mensajes = ambito.mensajes; if (db != null) { if (ambito.usuario.Equals("admin")) { TablaBaseDeDatos.global.Remove(db); ambito.mensajes.AddLast(mensa.message("La base de datos: " + id + " ha sido eliminada con exito")); return(""); } else { if (us != null) { Boolean permiso = TablaBaseDeDatos.getPermiso(us, id); if (permiso) { Boolean enUso = TablaBaseDeDatos.getEnUso(id, user); if (!enUso) { TablaBaseDeDatos.global.Remove(db); mensajes.AddLast(mensa.message("La base de datos: " + id + " ha sido eliminada con exito")); return(""); } else { mensajes.AddLast(mensa.error("La base de datos: " + id + "esta siendo utilizada por otro usuario", l, c, "Semantico")); } } else { mensajes.AddLast(mensa.error("El usuario " + user + " no tiene permisos sobre esta base de datos", l, c, "Semantico")); } } else { if (!flag) { mensajes.AddLast(mensa.error("El usuario " + user + " no existe", l, c, "Semantico")); } else { return(""); } } } } else { ambito.listadoExcepciones.AddLast(new Excepcion("bddontexists", "La base de datos ha eliminar: " + id + " no existe")); mensajes.AddLast(mensa.error("La base de datos ha eliminar: " + id + " no existe", l, c, "Semantico")); } return(null); }
/* * Constructor de la clase padre * @ts tabla de simbolos padre * @user usuario que esta ejecutando las acciones * @baseD string por referencia de que base de datos estamos trabajando * @mensajes el output de la ejecucion */ public object ejecutar(TablaDeSimbolos ts, Ambito ambito, TablaDeSimbolos tsT) { Mensaje mensa = new Mensaje(); string user = ambito.usuario; string baseD = ambito.baseD; LinkedList <string> mensajes = ambito.mensajes; BaseDeDatos db = TablaBaseDeDatos.getBase(baseD); Usuario us = TablaBaseDeDatos.getUsuario(user); if (db != null) { if (user.Equals("admin")) { Tabla tabla = TablaBaseDeDatos.getTabla(db, id); if (tabla != null) { LinkedList <Columna> cabecera = new LinkedList <Columna>(); if (campos == null) { cabecera = new LinkedList <Columna>(cabecera.Union(tabla.columnas)); } else { cabecera = getColumnas(tabla, ts, ambito); } if (cabecera != null) { LinkedList <Data> datos = new LinkedList <Data>(); if (campos == null) { datos = getAllData(tabla, ts, ambito, cabecera); } else { datos = getData(tabla, ts, ambito, cabecera); } if (datos != null) { TablaSelect tablaSelect = new TablaSelect(cabecera, datos); System.Diagnostics.Debug.WriteLine(operacion); if (operacion.Equals("none")) { } else { if (operacion.Contains("b")) { if (checkOrder(tablaSelect.columnas, mensajes)) { LinkedList <int> pos = posicionesColumnas(tablaSelect.columnas); try { if (pos.Count() > 0) { tablaSelect.datos = new LinkedList <Data>(sort(tablaSelect.datos, pos, 0)); } } catch (Exception) { mensajes.AddLast(mensa.error("Esta intentando ordenar por un dato no primitivo", l, c, "Semantico")); } } else { return(null); } } if (operacion.Contains("c")) { tablaSelect.datos = limitar(tablaSelect.datos, ts, ambito, tsT); if (datos == null) { return(null); } } } mensajes.AddLast(mensa.consulta(tablaSelect)); return(tablaSelect); } } } else { ambito.listadoExcepciones.AddLast(new Excepcion("tabledontexists", "La tabla: " + id + " no existe en la DB: " + ambito.baseD)); ambito.mensajes.AddLast(mensa.error("La tabla: " + id + " no existe en la DB: " + ambito.baseD, l, c, "Semantico")); } } else { if (us != null) { Boolean permiso = TablaBaseDeDatos.getPermiso(us, baseD); if (permiso) { Boolean enUso = TablaBaseDeDatos.getEnUso(baseD, user); if (!enUso) { Tabla tabla = TablaBaseDeDatos.getTabla(db, id); if (tabla != null) { LinkedList <Columna> cabecera = new LinkedList <Columna>(); if (campos == null) { cabecera = new LinkedList <Columna>(cabecera.Union(tabla.columnas)); } else { cabecera = getColumnas(tabla, ts, ambito); } if (cabecera != null) { LinkedList <Data> datos = new LinkedList <Data>(); if (campos == null) { datos = getAllData(tabla, ts, ambito, cabecera); } else { datos = getData(tabla, ts, ambito, cabecera); } if (datos != null) { TablaSelect tablaSelect = new TablaSelect(cabecera, datos); System.Diagnostics.Debug.WriteLine(operacion); if (operacion.Equals("none")) { } else { if (operacion.Contains("b")) { if (checkOrder(tablaSelect.columnas, mensajes)) { LinkedList <int> pos = posicionesColumnas(tablaSelect.columnas); try { if (pos.Count() > 0) { tablaSelect.datos = new LinkedList <Data>(sort(tablaSelect.datos, pos, 0)); } } catch (Exception) { mensajes.AddLast(mensa.error("Esta intentando ordenar por un dato no primitivo", l, c, "Semantico")); } } else { return(null); } } if (operacion.Contains("c")) { tablaSelect.datos = limitar(tablaSelect.datos, ts, ambito, tsT); if (datos == null) { return(null); } } } mensajes.AddLast(mensa.consulta(tablaSelect)); return(tablaSelect); } } } else { ambito.listadoExcepciones.AddLast(new Excepcion("tabledontexists", "La tabla: " + id + " no existe en la DB: " + ambito.baseD)); ambito.mensajes.AddLast(mensa.error("La tabla: " + id + " no existe en la DB: " + ambito.baseD, l, c, "Semantico")); } } else { mensajes.AddLast(mensa.error("La DB: " + baseD + " ya esta siendo utilizada por alguien mas", l, c, "Semantico")); } } else { mensajes.AddLast(mensa.error("El usuario " + user + " no tiene permisos sobre esta base de datos", l, c, "Semantico")); } } else { mensajes.AddLast(mensa.error("El usuario " + user + " no existe", l, c, "Semantico")); } } } else { ambito.listadoExcepciones.AddLast(new Excepcion("usedbexception", "No existe la base de datos: " + ambito.baseD + " o no se ha usado el comando use")); ambito.mensajes.AddLast(mensa.error("La base de datos ha usar: " + ambito.baseD + " no existe", l, c, "Semantico")); } return(null); }
/* * Metodo de la implementacion * @ts tabla de simbolos global * @user usuario que ejecuta la accion * @baseD base de datos donde estamos ejecutando todo * @mensajes linkedlist con la salida deseada */ public object ejecutar(TablaDeSimbolos ts, Ambito ambito, TablaDeSimbolos tsT) { Mensaje mensa = new Mensaje(); BaseDeDatos db = TablaBaseDeDatos.getBase(ambito.baseD); Usuario usuario = TablaBaseDeDatos.getUsuario(ambito.usuario); if (db != null) { if (ambito.usuario.Equals("admin")) { //------------------------------------ SOLO HAY UNA PRIMARIA ------------------------------------------------------------ if (primarias == null) { if (!(cantidadDePrimarias(lista) > 1)) { if (!columnasRepetidas(lista, lista, ambito.mensajes)) { Tabla old = TablaBaseDeDatos.getTabla(db, nombre); if (old == null) { if (searchTipo(lista, ambito.mensajes, db)) { Tabla nueva = new Tabla(nombre, lista, new LinkedList <Data>()); db.objetos.tablas.AddLast(nueva); ambito.mensajes.AddLast(mensa.message("Se creo exitosamente la tabla: " + nombre)); return(""); } } else { if (flag) { return(""); } ambito.listadoExcepciones.AddLast(new Excepcion("tablealreadyexists", "La tabla: " + nombre + " ya existe en la DB: " + ambito.baseD)); ambito.mensajes.AddLast(mensa.error("La tabla: " + nombre + " ya existe en la DB: " + ambito.baseD, l, c, "Semantico")); return(null); } } } else { ambito.mensajes.AddLast(mensa.error("La tabla: " + nombre + " solo puede tener una clave primaria o use llaves compuestas", l, c, "Semantico")); } } //-------------------------------------- LLAVE PRIMARIA COMPUESTA ------------------------------------------------------- else { if (!(cantidadDePrimarias(lista) > 0)) { if (!(columnasRepetidas(lista, lista, ambito.mensajes))) { if (!hayCounter(primarias, lista, ambito.mensajes)) { if (existenColumnas(primarias, lista, ambito.mensajes)) { Tabla temp = TablaBaseDeDatos.getTabla(db, nombre); if (temp == null) { if (searchTipo(lista, ambito.mensajes, db)) { temp = new Tabla(nombre, lista, new LinkedList <Data>()); db.objetos.tablas.AddLast(temp); ambito.mensajes.AddLast(mensa.message("Se creo exitosamente la tabla: " + nombre)); return(""); } } else { if (flag) { return(""); } ambito.mensajes.AddLast(mensa.error("La tabla: " + nombre + " ya existe en la DB: " + ambito.baseD, l, c, "Semantico")); } } } } } else { ambito.mensajes.AddLast(mensa.error("La tabla: " + nombre + " solo puede tener primarias compuestas", l, c, "Semantico")); } } } else { if (usuario != null) { Boolean permiso = TablaBaseDeDatos.getPermiso(usuario, ambito.baseD); if (permiso) { Boolean enUso = TablaBaseDeDatos.getEnUso(ambito.baseD, ambito.usuario); if (!enUso) { //------------------------------------ SOLO HAY UNA PRIMARIA ------------------------------------------------------------ if (primarias == null) { if (!(cantidadDePrimarias(lista) > 1)) { if (!columnasRepetidas(lista, lista, ambito.mensajes)) { Tabla old = TablaBaseDeDatos.getTabla(db, nombre); if (old == null) { if (searchTipo(lista, ambito.mensajes, db)) { Tabla nueva = new Tabla(nombre, lista, new LinkedList <Data>()); db.objetos.tablas.AddLast(nueva); ambito.mensajes.AddLast(mensa.message("Se creo exitosamente la tabla: " + nombre)); return(""); } } else { if (flag) { return(""); } ambito.listadoExcepciones.AddLast(new Excepcion("tablealreadyexists", "La tabla: " + nombre + " ya existe en la DB: " + ambito.baseD)); ambito.mensajes.AddLast(mensa.error("La tabla: " + nombre + " ya existe en la DB: " + ambito.baseD, l, c, "Semantico")); return(null); } } } else { ambito.mensajes.AddLast(mensa.error("La tabla: " + nombre + " solo puede tener una clave primaria o use llaves compuestas", l, c, "Semantico")); } } //-------------------------------------- LLAVE PRIMARIA COMPUESTA ------------------------------------------------------- else { if (!(cantidadDePrimarias(lista) > 0)) { if (!(columnasRepetidas(lista, lista, ambito.mensajes))) { if (!hayCounter(primarias, lista, ambito.mensajes)) { if (existenColumnas(primarias, lista, ambito.mensajes)) { Tabla temp = TablaBaseDeDatos.getTabla(db, nombre); if (temp == null) { if (searchTipo(lista, ambito.mensajes, db)) { temp = new Tabla(nombre, lista, new LinkedList <Data>()); db.objetos.tablas.AddLast(temp); ambito.mensajes.AddLast(mensa.message("Se creo exitosamente la tabla: " + nombre)); return(""); } } else { if (flag) { return(""); } ambito.mensajes.AddLast(mensa.error("La tabla: " + nombre + " ya existe en la DB: " + ambito.baseD, l, c, "Semantico")); } } } } } else { ambito.mensajes.AddLast(mensa.error("La tabla: " + nombre + " solo puede tener primarias compuestas", l, c, "Semantico")); } } } else { ambito.mensajes.AddLast(mensa.error("La base de datos: " + ambito.baseD + "esta siendo usada por otro usuario", l, c, "Semantico")); } } else { ambito.mensajes.AddLast(mensa.error("El usuario: " + ambito.usuario + " no tiene permisos en la base de datos: " + ambito.baseD, l, c, "Semantico")); } } else { ambito.mensajes.AddLast(mensa.error("No existe el usuario: " + ambito.usuario, l, c, "Semantico")); } } } else { ambito.listadoExcepciones.AddLast(new Excepcion("usedbexception", "No existe la base de datos: " + ambito.baseD + " o no se ha usado el comando use")); ambito.mensajes.AddLast(mensa.error("No se encuentra la base de datos: " + ambito.baseD + " o no se ha usado el comando USE", l, c, "Semantico")); } return(null); }