def process(self, generator): if generator is None: return self.generate(None); else: if self.MergeType == 'Append': return extends.Append(generator, self.process(None)); elif self.MergeType == 'Merge': return extends.Merge(generator, self.process(None)); else: return extends.Cross(generator, self.generate)
def EtlGE(etl, data): subetl = modules[etl.ETLSelector]; index = etl.Tool.AllETLTools.index(etl) def checkname(item, name): if hasattr(item, "Name") and item.Name == name: return True; return False; tools = extends.Append((r for r in etl.Tool.AllETLTools[:index] if checkname(r, etl.Insert)), (r for r in subetl.AllETLTools if not checkname(r, etl.Insert))) for r in subetl.__generate__(tools): yield r;
def __generate__(self, tools, generator=None, execute=False): for tool in tools: if tool.Group == 'Generator': if generator is None: generator = tool.Func(tool, None); else: if tool.MergeType == 'Append': generator = extends.Append(generator, tool.Func(tool, None)); elif tool.MergeType == 'Merge': generator = extends.MergeAll(generator, tool.Func(tool, None)); elif tool.MergeType == 'Cross': generator = extends.Cross(generator, tool.Func, tool) elif tool.Group == 'Transformer': generator = transform(tool, generator); elif tool.Group == 'Filter': generator = filter(tool, generator); elif tool.Group == 'Executor' and execute: generator = tool.Func(tool, generator); return generator;