def massageOutputFileName(self, opFileName): try: fn, *rest = opFileName.split('.') return GenUtils.spinal(fn) + "." + (".").join(rest) except: print(sys.exc_info()[1]) return None
def temlateToFile(self, t, entity, pck, typename='entity', filterPacks=[]): lname = GenUtils.toFirstLower(entity.name) filename: str = t.parts[len(t.parts) - 1].replace('.jinja2', '') # print('trying to load template ' + str(t)) filename = filename.replace(typename + '$', entity.name) fldr = self.getGeneratedFileName(entity, filename, lname, pck, t, typename) if not filename.startswith(typename) and '$' in filename: print("ret " + filename + " " + typename) return stemPackName = fldr.split('/')[len(fldr.split('/')) - 1] #TODO : wont work on windows #print(stemPackName) if (len(filterPacks) == 0 or stemPackName in filterPacks): #print('trying to load template ' + str(t)) template = self.jinja_env.get_template(str(t)) packageName = f'{utils.getTopLevelPackage()}.{pck.name}.{stemPackName}' def createFqn(extension, fileExtension=None): fileExtension = f'{GenUtils.toFirstUpper(extension)}' if not fileExtension else fileExtension return f'{utils.getTopLevelPackage()}.{pck.name}.{extension}.{entity.name}{fileExtension}' out = template.render(mdl=pck.parent, pck=packageName, entity=entity, fqn=createFqn('model', ' '), fqnRepo=createFqn('repository'), fqnService=createFqn('service'), name=entity.name, lname=lname, genUtils=GenUtils()) opFileName = self.massageOutputFileName(filename) if (opFileName): opfldr = stringcase.spinalcase(fldr) writeToFile(f'srcgen/{opfldr}', opFileName, out)
""" An example how to generate java code from textX model using jinja2 template engine (http://jinja.pocoo.org/docs/dev/) """ from commons.GenUtils import GenUtils from commons.helpers import * modelFile = '../model/users.ent' from commons.BaseGen import BaseGen utils = GenUtils() import os class JavaGen(BaseGen): types = { 'integer': 'Integer', 'int' : 'int', 'string': 'String', 'date' : 'Date', 'bool' : 'boolean', 'text' : 'String', 'currency': 'BigDecimal' }
from commons.GenUtils import GenUtils from commons.helpers import * import shutil from pathlib import Path import sys utils = GenUtils() topLevelPackage = 'com.bfwg' import jinja2 import os from commons.GenUtils import GenUtils from commons.helpers import * from abc import ABC, abstractmethod from os import mkdir import shutil import stringcase this_folder = dirname(__file__) metaModel = '../metamodel/entity.tx' #TODO: pass into functions #topLevelPackage = 'com.bfwg' import jinja2 utils = GenUtils()
def massageOutputFileName(self, opFileName): return GenUtils.toFirstLower(opFileName)