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)}
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")