def __init__(self, objects): AutoGen.__init__(self, objects) for obj in self.objects.values(): obj.__class__ = XMLObject for property in obj.properties: property.__class__ = XMLProperty for choice in obj.choices: choice.__class__ = XMLChoice for property in choice.properties: property.__class__ = XMLProperty
def reset(self, spaces = XML_SPACES): AutoGen.reset(self, spaces)
def main(argv=None): options = {} objects = None optionsUsage = {'a': ('generate all database information (-p -s -x)', False), 'b:': ('base directory', False, 'dir'), 'd:': ('versions directory', False, 'dir'), 'p': ('generate python domain classes', False), 's': ('generate sql schema and persistence classes', False), 'x': ('generate xml schema and persistence classes', False), 'v:': ('vistrail version tag', True, 'version'), 'm': ('make all directories', False), 'n': ('do not change current version', False)} optStr = ''.join(optionsUsage.keys()) optKeys = optStr.replace(':','') for idx in xrange(len(optKeys)): options[optKeys[idx]] = False try: (optlist, args) = getopt.getopt(sys.argv[1:], optStr) for opt in optlist: if opt[1] is not None and opt[1] != '': options[opt[0][1:]] = opt[1] else: options[opt[0][1:]] = True except getopt.GetoptError: usage(optionsUsage) return if options['b']: baseDir = options['b'] else: baseDir = BASE_DIR baseDirs = dirStructure(baseDir) if not options['v']: usage(optionsUsage) return version = options['v'] versionName = 'v' + version.replace('.', '_') if options['d']: versionsDir = options['d'] else: versionsDir = os.path.join(baseDir, 'versions') versionDir = os.path.join(versionsDir, versionName) versionDirs = dirStructure(versionDir) print baseDirs print versionDirs if options['m']: makeAllDirs(baseDirs) makeAllDirs(versionDirs) # copy specs to version for file in os.listdir(baseDirs['specs']): if file.endswith('.xml'): print 'copying %s' % file filename = os.path.join(baseDirs['specs'], file) toFile = os.path.join(versionDirs['specs'], file) shutil.copyfile(filename, toFile) if options['p'] or options['a']: # generate python domain objects print "generating python domain objects..." if objects is None: parser = AutoGenParser() objects = parser.parse(baseDirs['specs']) autoGen = AutoGen(objects) domainFile = os.path.join(versionDirs['domain'], 'auto_gen.py') f = open(domainFile, 'w') f.write(COPYRIGHT_NOTICE) f.write(autoGen.generatePythonCode()) f.close() if not options['n']: domainFile = os.path.join(baseDirs['domain'], '__init__.py') f = open(domainFile, 'w') f.write(COPYRIGHT_NOTICE) f.write('from db.versions.%s.domain import *\n' % \ versionName) f.close() if options['x'] or options['a']: # generate xml schema and dao objects print "generating xml schema and dao objects..." if objects is None: parser = AutoGenParser() objects = parser.parse(baseDirs['specs']) xmlAutoGen = XMLAutoGen(objects) # schemaFile = os.path.join(versionDirs['xmlSchema'], 'workflow.xsd') # f = open(schemaFile, 'w') # f.write(COPYRIGHT_NOTICE) # f.write(xmlAutoGen.generateSchema('workflow')) # f.close() schemaFile = os.path.join(versionDirs['xmlSchema'], 'vistrail.xsd') f = open(schemaFile, 'w') f.write(COPYRIGHT_NOTICE) f.write(xmlAutoGen.generateSchema('vistrail')) f.close() # schemaFile = os.path.join(versionDirs['xmlSchema'], 'log.xsd') # f = open(schemaFile, 'w') # f.write(COPYRIGHT_NOTICE) # f.write(xmlAutoGen.generateSchema('log')) # f.close() daoFile = os.path.join(versionDirs['xmlPersistence'], 'auto_gen.py') f = open(daoFile, 'w') f.write(COPYRIGHT_NOTICE) f.write(xmlAutoGen.generateDAO(versionName)) f.write(xmlAutoGen.generateDAOList()) f.close() # if not options['n']: # domainFile = os.path.join(baseDirs['xmlPersistence'], 'auto_gen.py') # f = open(domainFile, 'w') # f.write(COPYRIGHT_NOTICE) # f.write('from db.versions.%s.persistence.xml.auto_gen import *\n' % \ # versionName) # f.close() if options['s'] or options['a']: # generate sql schema and dao objects print "generating sql schema and dao objects..." if objects is None: parser = AutoGenParser() objects = parser.parse(baseDirs['specs']) sqlAutoGen = SQLAutoGen(objects) schemaFile = os.path.join(versionDirs['sqlSchema'], 'vistrails.sql') f = open(schemaFile, 'w') f.write(COPYRIGHT_NOTICE) f.write(sqlAutoGen.generateSchema()) f.close() schemaFile = os.path.join(versionDirs['sqlSchema'],'vistrails_drop.sql') f = open(schemaFile, 'w') f.write(COPYRIGHT_NOTICE) f.write(sqlAutoGen.generateDeleteSchema()) f.close() daoFile = os.path.join(versionDirs['sqlPersistence'], 'auto_gen.py') f = open(daoFile, 'w') f.write(COPYRIGHT_NOTICE) f.write(sqlAutoGen.generateDAO(versionName)) f.write(sqlAutoGen.generateDAOList()) f.close() # if not options['n']: # domainFile = os.path.join(baseDirs['sqlPersistence'], 'auto_gen.py') # f = open(domainFile, 'w') # f.write(COPYRIGHT_NOTICE) # f.write('from db.versions.%s.persistence.sql.auto_gen import *\n' % \ # versionName) # f.close() if not options['n']: domainFile = os.path.join(baseDirs['persistence'], '__init__.py') f = open(domainFile, 'w') f.write(COPYRIGHT_NOTICE) f.write('from db.versions.%s.persistence import *\n' % \ versionName) f.close()