Beispiel #1
0
def generarModelo(modelo , archivo):
    print("inicia GeneradorERScriptSql")
    try:
        fileName = ( "%s%s" % (modelo["nombre"],modelo["__generador"]["extension"]) )
        raiz = ModeladorDao.getRaizModelo(modelo["idModelo"])
        entidades = ModeladorDao.getObjetosModeloByPadre( raiz["idObjeto"] , "Entidades" )
        
        archivo.write("import xpdbdd\n")
        
        for entidad in entidades:
            atributosEntidad = ModeladorDao.getDiccionarioAtributosByObjetoModelo( entidad["idObjeto"] )
            namedQueries = ModeladorDao.getObjetosModeloByPadre(entidad["idObjeto"],"NamedQueries")
            campos =       ModeladorDao.getObjetosModeloByPadre(entidad["idObjeto"],"Campos")
            
            archivo.write("\nclass %sDao(xpdbdd.DaoBase):\n    def __init__(self):" % entidad["nombre"] )
            archivo.write("\n       metamodelo={\"nombreTabla\":\"%s\",\"propiedades\":[],\"namedQueries\":[]}" % atributosEntidad["nombreTabla"] )

            for campo in campos:
                atributosCampo = ModeladorDao. getDiccionarioAtributosByObjetoModelo( campo["idObjeto"] )
                tipo = getTipo(atributosCampo)
                tamano = getCantidad(atributosCampo,"tamano")
                opcional = "0"
                if parseBoolean(atributosCampo["obligatorio"]) == "0":
                    opcional = "1"
                archivo.write("\n       metamodelo[\"propiedades\"].append({\"nombre\":\"%s\",\"nombreCampo\":\"%s\",\"incremental\":%s,\"pk\":%s,\"tipo\":%s,\"tamano\":%s,\"insert\":%s,\"update\":%s,\"opcional\":%s})" % ( campo["nombre"], atributosCampo["nombreCampo"] , parseBoolean(atributosCampo["incremental"]) , parseBoolean(atributosCampo["pk"]) , tipo , tamano , parseBoolean(atributosCampo["insert"]) , parseBoolean(atributosCampo["update"]) , opcional ) )
            
            for namedQuery in namedQueries:
                camposWhere = ModeladorDao.getObjetosModeloByPadre(namedQuery["idObjeto"],"camposWhere")
                namedQuery["camposWhere"] = camposWhere
                camposOrderBy = ModeladorDao.getObjetosModeloByPadre(namedQuery["idObjeto"],"camposOrderBy")
                archivo.write("\n        metamodelo[\"namedQueries\"].append({\"nombre\":\"%s\",\"whereClause\":[%s],\"orderBy\":[%s]})" % ( namedQuery["nombre"] , getListaCampos(camposWhere) , getListaCampos(camposOrderBy) ))
            
            archivo.write( "\n        self.setMetamodelo (metamodelo)" )
            
            for namedQuery in namedQueries:
                camposWhere = namedQuery["camposWhere"]
                archivo.write("\n    \n    def %s (self, conexion" % namedQuery["nombre"] )
                for campoWhere in camposWhere:
                    archivo.write(", %s" % campoWhere["nombre"])
                archivo.write("):")
                archivo.write("\n        return self.getNamedQuery(conexion,\"%s\", {" % namedQuery["nombre"] )
                primercampo = True
                for campoWhere in camposWhere:
                    if not (primercampo):
                        archivo.write(",")
                    archivo.write("\"%s\":%s" % ( campoWhere["nombre"] , campoWhere["nombre"] ))
                    primercampo = False

                archivo.write("} ) ")
            
            archivo.write("\n")
            archivo.flush()
            
        resultado = {"fileName":fileName,"mimeType":modelo["__generador"]["mimeType"]}
        return resultado
    except (Exception) as ex:
        print(repr(ex))
        return {"error":repr(ex)}

            
Beispiel #2
0
 def testCrearObjetoHijoValido(self):
     modelos = ModeladorDao.getModelos()
     modelo = modelos[len(modelos) - 1]
     raizModelo = ModeladorDao.getRaizModelo(modelo["idModelo"])
     #print ("BUSCANDO JERARQUIAS PARA METAMODELO %s, tipo %s"%( modelo["idMetamodelo"], raizModelo["idTipoMetamodelo"] ))
     jerarquias = ModeladorDao.getJerarquiasByTipo(
         modelo["idMetamodelo"], raizModelo["idTipoMetamodelo"], "1")
     if len(jerarquias) == 0:
         self.fail("no existen jerarquias para tipo raiz")
     conteoAntes = len(
         ModeladorDao.getObjetosModeloByPadre(raizModelo["idObjeto"],
                                              jerarquias[0]["idJerarquia"]))
     objetosAnadir = 5
     while objetosAnadir > 0:
         objetosAnadir = objetosAnadir - 1
         objetoModelo = ModeladorDao.ModeloDao().nuevoDiccionario()
         objetoModelo["idModelo"] = modelo["idModelo"]
         objetoModelo["idTipoMetamodelo"] = jerarquias[0][
             "idTipoMetamodeloHijo"]
         objetoModelo["idObjetoPadre"] = raizModelo["idObjeto"]
         objetoModelo["idJerarquia"] = jerarquias[0]["idJerarquia"]
         objetoModelo["nombre"] = ("nuevo%s" %
                                   objetoModelo["idTipoMetamodelo"])
         objetoModelo["orden"] = 0
         objetoModelo["descripcion"] = ("")
         objetoModelo = ModeladorDao.crearObjetoHijo(objetoModelo)
         if objetoModelo is None or not ("idObjeto" in objetoModelo
                                         ) or objetoModelo["idObjeto"] == 0:
             self.fail("objeto modelo creado incorrectamente")
         objetoModelo = ModeladorDao.getAtributosByObjetoModelo(
             objetoModelo["idObjeto"])
         if objetoModelo is None or not (
                 "idObjeto" in objetoModelo) or not (
                     "_atributos"
                     in objetoModelo) or objetoModelo["idObjeto"] == 0:
             self.fail("objeto no puede recuperar atributos")
         diccionarioAtributos = ModeladorDao.getDiccionarioAtributosByObjetoModelo(
             objetoModelo["idObjeto"])
         if diccionarioAtributos is None or not ("nombreTabla"
                                                 in diccionarioAtributos):
             self.fail("objeto no puede recuperar atributos(1)")
         #print(str( diccionarioAtributos))
     listaAntesCambio = ModeladorDao.getObjetosModeloByPadre(
         raizModelo["idObjeto"], jerarquias[0]["idJerarquia"])
     conteoDespues = len(listaAntesCambio)
     if conteoDespues != (conteoAntes + 5):
         self.fail("creacion de hijos no consistente")
     if "1" != ModeladorDao.moverObjeto(listaAntesCambio[2]["idObjeto"], 1):
         self.fail("falla Cambio Orden")
     listaDespuesCambio = ModeladorDao.getObjetosModeloByPadre(
         raizModelo["idObjeto"], jerarquias[0]["idJerarquia"])
     if listaAntesCambio[2]["idObjeto"] != listaDespuesCambio[1]["idObjeto"]:
         self.fail("moverArriba no fue efectivo")
     if "1" != ModeladorDao.moverObjeto(listaAntesCambio[2]["idObjeto"], 0):
         self.fail("falla Cambio Orden 1")
     listaDespuesCambio = ModeladorDao.getObjetosModeloByPadre(
         raizModelo["idObjeto"], jerarquias[0]["idJerarquia"])
     if listaAntesCambio[2]["idObjeto"] != listaDespuesCambio[2]["idObjeto"]:
         self.fail("moverAbajo no fue efectivo")
     # verifica items del tipo creado
     listaDespuesCambio = ModeladorDao.getObjetosModeloByModeloTipo(
         modelo['idModelo'], jerarquias[0]["idTipoMetamodeloHijo"])
     if len(listaDespuesCambio) == 0:
         self.fail("fallo al obtener elementos por modelo y tipo")