def test_delete(self): inst = self.metamodel.select_any('S_DT', where(Name='void')) self.assertTrue(xtuml.navigate_one(inst).PE_PE[8001]()) xtuml.delete(inst) self.assertFalse(xtuml.navigate_one(inst).PE_PE[8001]()) inst = self.metamodel.select_any('S_DT', where(Name='void')) self.assertFalse(inst)
def test_clone(self): s_ee = self.metamodel.new('S_EE', Name='Test', Descrip='test', Key_Lett='TEST') pe_pe = self.metamodel.new('PE_PE') self.assertTrue(xtuml.relate(s_ee, pe_pe, 8001)) m = ooaofooa.empty_model() self.assertNotEqual(pe_pe, m.clone(pe_pe)) self.assertNotEqual(s_ee, m.clone(s_ee)) s_ee_clone = m.select_any('S_EE', where(Name='Test')) self.assertNotEqual(s_ee, s_ee_clone) self.assertEqual(s_ee_clone.EE_ID, s_ee.EE_ID) self.assertEqual(s_ee_clone.Name, s_ee.Name) self.assertEqual(s_ee_clone.Descrip, s_ee.Descrip) self.assertEqual(s_ee_clone.Key_Lett, s_ee.Key_Lett) pe_pe_clone = xtuml.navigate_one(s_ee_clone).PE_PE[8001]() self.assertTrue(pe_pe_clone) self.assertNotEqual(pe_pe, pe_pe_clone) self.assertEqual(pe_pe_clone.Element_ID, pe_pe.Element_ID) self.assertEqual(pe_pe_clone.Visibility, pe_pe.Visibility) self.assertEqual(pe_pe_clone.Package_ID, pe_pe.Package_ID) self.assertEqual(pe_pe_clone.Component_ID, pe_pe.Component_ID) self.assertEqual(pe_pe_clone.type, pe_pe.type)
def testConsistencyOfNonEmptyModel(self): m = self.metamodel s_dt = m.select_one('S_DT', where(Name='string')) s_bparm = m.new('S_BPARM', Name='My_Parameter') s_ee = m.new('S_EE', Name='My_External_Entity', Key_Lett='My_External_Entity') pe_pe = m.new('PE_PE', Visibility=True, type=5) s_brg = m.new('S_BRG', Name='My_Bridge_Operation') self.assertFalse(m.is_consistent(22)) self.assertTrue(xtuml.relate(s_bparm, s_dt, 22)) self.assertTrue(m.is_consistent(22)) self.assertFalse(m.is_consistent(21)) self.assertTrue(xtuml.relate(s_bparm, s_brg, 21)) self.assertTrue(m.is_consistent(21)) self.assertFalse(m.is_consistent(20)) self.assertTrue(xtuml.relate(s_brg, s_dt, 20)) self.assertTrue(m.is_consistent(20)) self.assertFalse(m.is_consistent(8001)) self.assertTrue(xtuml.relate(s_ee, pe_pe, 8001)) self.assertTrue(m.is_consistent(8001)) self.assertFalse(m.is_consistent(19)) self.assertTrue(xtuml.relate(s_brg, s_ee, 19)) self.assertTrue(m.is_consistent(19))
def parameters(self, function_name): s_sync = self.m.select_one('S_SYNC', where(Name=function_name)) first_filt = lambda sel: not one(sel).S_SPARM[54, 'precedes']() s_sparm = one(s_sync).S_SPARM[24](first_filt) while s_sparm: yield s_sparm.Name s_sparm = one(s_sparm).S_SPARM[54, 'succeeds']()
def test_select_many_filter_ordered_by(self): m = self.metamodel s_dt = m.select_one('S_DT', where(Name='void')) filt = lambda inst: inst.DT_ID > s_dt.DT_ID q = m.select_many('S_DT', filt, order_by('Name')) self.assertEqual(q.first.Name, 'boolean') self.assertEqual(q.last.Name, 'unique_id')
def setUp(self): PrebuildFunctionTestCase.setUp(self) sm_sm = self.metamodel.new('SM_SM') o_obj = self.metamodel.new('O_OBJ', Key_Lett='A') pe_pe = self.metamodel.new('PE_PE') relate(pe_pe, o_obj, 8001) self.metamodel.new('SM_EVT', SM_ID=sm_sm.SM_ID, SMspd_ID=self.metamodel.id_generator.next(), Numb=2, Drv_Lbl='A2', Mning='my_event') self.metamodel.new('SM_ASM', Obj_ID=o_obj.Obj_ID, SM_ID=sm_sm.SM_ID) sm_sm = self.metamodel.new('SM_SM') o_obj = self.metamodel.new('O_OBJ', Key_Lett='B') pe_pe = self.metamodel.new('PE_PE') relate(pe_pe, o_obj, 8001) self.metamodel.new('SM_EVT', SM_ID=sm_sm.SM_ID, SMspd_ID=self.metamodel.id_generator.next(), Numb=2, Drv_Lbl='B2', Mning='my_second_event') self.metamodel.new('SM_ISM', Obj_ID=o_obj.Obj_ID, SM_ID=sm_sm.SM_ID) sm_sm = self.metamodel.new('SM_SM') o_obj = self.metamodel.new('O_OBJ', Key_Lett='C') pe_pe = self.metamodel.new('PE_PE') relate(pe_pe, o_obj, 8001) sm_evt = self.metamodel.new('SM_EVT', SM_ID=sm_sm.SM_ID, SMspd_ID=self.metamodel.id_generator.next(), Numb=1, Drv_Lbl='C1', Mning='my_third_event') s_dt = self.metamodel.select_any('S_DT', where(Name='boolean')) self.metamodel.new('SM_EVTDI', SM_ID=sm_sm.SM_ID, SMevt_ID=sm_evt.SMevt_ID, DT_ID=s_dt.DT_ID, Name='di1') self.metamodel.new('SM_ISM', Obj_ID=o_obj.Obj_ID, SM_ID=sm_sm.SM_ID)
def testNavLimitedSubtype(self): m = self.metamodel s_dt = m.select_any('S_DT', where(Name='void')) s_cdt = xtuml.navigate_subtype(s_dt, 17, 'S_EDT', 'S_SDT') self.assertFalse(s_cdt) s_cdt = xtuml.navigate_subtype(s_dt, 17, 'S_EDT', 'S_CDT', 'S_SDT') self.assertTrue(s_cdt) self.assertEqual(s_cdt.__class__.__name__, 'S_CDT')
def test_invoke_with_parameter(self, m): '''.// .function f .param integer x .end function .invoke f(1) .//''' s_sync = m.select_any('S_SYNC', where(Name='test_invoke_with_parameter')) self.assertEqual(s_sync.Action_Semantics_internal, '::f(x: 1);')
def mk_function(ep_pkg, **kwargs): m = xtuml.get_metamodel(ep_pkg) s_dt = m.select_any('S_DT', where(Name='void')) pe_pe = m.new('PE_PE', Visibility=True, type=1) s_sync = m.new('S_SYNC', **kwargs) s_sync.Suc_Pars = 1 relate(pe_pe, s_sync, 8001) relate(pe_pe, ep_pkg, 8000) relate(s_dt, s_sync, 25) return s_sync
def test_parameter_order(self, m): '''.// .function f .param integer x .param boolean y .param string z .end function .invoke f(1, true, "s") .//''' s_sync = m.select_any('S_SYNC', where(Name='test_parameter_order')) self.assertEqual(s_sync.Action_Semantics_internal, '::f(x: 1, y: true, z: "s");')
def main(): ''' Parse command line options and launch the interpreter ''' parser = optparse.OptionParser( usage="%prog [options] <model_path> [another_model_path..]", version=xtuml.version.complete_string, formatter=optparse.TitledHelpFormatter()) parser.add_option("-v", "--verbosity", dest='verbosity', action="count", default=1, help="increase debug logging level") parser.add_option("-f", "--function", dest='function', action="store", help="invoke function named NAME", metavar='NAME') parser.add_option("-c", "--component", dest='component', action="store", help="look for the function in a component named NAME", metavar='NAME', default=None) (opts, args) = parser.parse_args() if len(args) == 0 or not opts.function: parser.print_help() sys.exit(1) levels = { 0: logging.ERROR, 1: logging.WARNING, 2: logging.INFO, 3: logging.DEBUG, } logging.basicConfig(level=levels.get(opts.verbosity, logging.DEBUG)) from bridgepoint import ooaofooa mm = ooaofooa.load_metamodel(args) c_c = mm.select_any('C_C', where(Name=opts.component)) domain = ooaofooa.mk_component(mm, c_c, derived_attributes=False) func = domain.find_symbol(opts.function) return func()
def main(): if len(sys.argv) < 2: logger.info('usage: %s <path to ooaofooa model folder>' % sys.argv[0]) sys.exit(1) loader = ooaofooa.Loader() for filename in sys.argv[1:]: loader.filename_input(filename) m = loader.build_metamodel() for r_rel in m.select_many('R_REL', description_filter): logger.info('Filtering R%d' % r_rel.Numb) xtuml.delete(r_rel) for o_obj in m.select_many('O_OBJ', description_filter): logger.info('Filtering %s' % o_obj.Key_Lett) for r_rel in many(o_obj).R_OIR[201].R_REL[201](): logger.info('Filtering R%d' % r_rel.Numb) for r_oir in many(r_rel).R_OIR[201](): xtuml.unrelate(r_rel, r_oir, 201) xtuml.delete(r_rel) xtuml.delete(o_obj) for o_attr in m.select_many('O_ATTR', where(Name='SMspd_ID')): if not one(o_attr).O_RATTR[106](): continue for o_oida in many(o_attr).O_OIDA[105](): for o_rtida in many(o_oida).O_RTIDA[110](): xtuml.delete(o_rtida) xtuml.delete(o_oida) for o_ref in many(o_attr).O_RATTR[106].O_REF[108](): xtuml.delete(o_ref) c = ooaofooa.mk_component(m, None, derived_attributes=True) metaclass = c.find_metaclass('ACT_ACT') metaclass.insert_attribute(index=5, name='return_value', type_name='INTEGER') for o_obj in m.select_many('O_OBJ'): for o_attr in many(o_obj).O_ATTR[102](description_filter): logger.info('Filtering %s.%s' % (o_obj.Key_Lett, o_attr.Name)) metaclass = c.find_metaclass(o_obj.Key_Lett) metaclass.delete_attribute(o_attr.Name) xtuml.persist_schema(c, '/dev/stdout')
def main(): ''' Parse argv for options and arguments, and start schema generation. ''' parser = optparse.OptionParser(usage="%prog [options] <model_path> [another_model_path...]", formatter=optparse.TitledHelpFormatter()) parser.set_description(__doc__.strip()) parser.add_option("-f", "--function", dest="function", metavar="NAME", help="append integrity checking actions to functions named NAME (required)", action="store", default=None) parser.add_option("-o", "--output", dest='output', metavar="PATH", help="save sql model instances to PATH (required)", action="store", default=None) parser.add_option("-v", "--verbosity", dest='verbosity', action="count", help="increase debug logging level", default=2) (opts, args) = parser.parse_args() if len(args) == 0 or None in [opts.output, opts.function]: parser.print_help() sys.exit(1) levels = { 0: logging.ERROR, 1: logging.WARNING, 2: logging.INFO, 3: logging.DEBUG, } logging.basicConfig(level=levels.get(opts.verbosity, logging.DEBUG)) m = ooaofooa.load_metamodel(args) for c_c in m.select_many('C_C'): filt = lambda sel: ooaofooa.is_contained_in(sel, c_c) and sel.Name == opts.function s_sync = m.select_any('S_SYNC', filt) if not s_sync: s_sync = m.new('S_SYNC', Name=opts.function) pe_pe = m.new('PE_PE') s_dt = m.select_any('S_DT', where(Name='boolean')) relate(pe_pe, s_sync, 8001) relate(s_dt, s_sync, 25) generate_actions(m, c_c, s_sync) xtuml.persist_instances(m, opts.output)
def setUp(self): PrebuildFunctionTestCase.setUp(self) sm_sm = self.metamodel.new('SM_SM') o_obj = self.metamodel.new('O_OBJ', Key_Lett='A') pe_pe = self.metamodel.new('PE_PE') relate(pe_pe, o_obj, 8001) self.metamodel.new('SM_EVT', SM_ID=sm_sm.SM_ID, SMspd_ID=self.metamodel.id_generator.next(), Numb=2, Drv_Lbl='A2', Mning='my_event') self.metamodel.new('SM_ASM', Obj_ID=o_obj.Obj_ID, SM_ID=sm_sm.SM_ID) sm_sm = self.metamodel.new('SM_SM') o_obj = self.metamodel.new('O_OBJ', Key_Lett='B') pe_pe = self.metamodel.new('PE_PE') relate(pe_pe, o_obj, 8001) self.metamodel.new('SM_EVT', SM_ID=sm_sm.SM_ID, SMspd_ID=self.metamodel.id_generator.next(), Numb=2, Drv_Lbl='B2', Mning='my_second_event') self.metamodel.new('SM_ISM', Obj_ID=o_obj.Obj_ID, SM_ID=sm_sm.SM_ID) sm_sm = self.metamodel.new('SM_SM') o_obj = self.metamodel.new('O_OBJ', Key_Lett='C') pe_pe = self.metamodel.new('PE_PE') relate(pe_pe, o_obj, 8001) sm_evt = self.metamodel.new( 'SM_EVT', SM_ID=sm_sm.SM_ID, SMspd_ID=self.metamodel.id_generator.next(), Numb=1, Drv_Lbl='C1', Mning='my_third_event') s_dt = self.metamodel.select_any('S_DT', where(Name='boolean')) self.metamodel.new('SM_EVTDI', SM_ID=sm_sm.SM_ID, SMevt_ID=sm_evt.SMevt_ID, DT_ID=s_dt.DT_ID, Name='di1') self.metamodel.new('SM_ISM', Obj_ID=o_obj.Obj_ID, SM_ID=sm_sm.SM_ID)
def testRelateBottomUp(self): m = self.metamodel s_dt = m.select_one('S_DT', where(Name='string')) s_bparm = m.new('S_BPARM', Name='My_Parameter') s_ee = m.new('S_EE', Name='My_External_Entity', Key_Lett='My_External_Entity') pe_pe = m.new('PE_PE', Visibility=True, type=5) s_brg = m.new('S_BRG', Name='My_Bridge_Operation') self.assertTrue(xtuml.relate(s_bparm, s_dt, 22)) self.assertTrue(xtuml.relate(s_bparm, s_brg, 21)) self.assertTrue(xtuml.relate(s_brg, s_dt, 20)) self.assertTrue(xtuml.relate(s_ee, pe_pe, 8001)) self.assertTrue(xtuml.relate(s_brg, s_ee, 19)) inst = xtuml.navigate_any(pe_pe).S_EE[8001].S_BRG[19].S_BPARM[21]() self.assertEqual(inst, s_bparm)
def build_component(self, name=None, derived_attributes=False): ''' Instantiate and build a component from ooaofooa named *name* as a pyxtuml model. Classes, associations, attributes and unique identifers, i.e. O_OBJ, R_REL, O_ATTR in ooaofooa, are defined in the resulting pyxtuml model. Optionally, control whether *derived attributes* shall be mapped into the resulting pyxtuml model as attributes or not. Futhermore, if no *name* is provided, the entire content of the ooaofooa model is instantiated into the pyxtuml model. ''' mm = self.build_metamodel() c_c = mm.select_any('C_C', where(Name=name)) if c_c: return mk_component(mm, c_c, derived_attributes) elif name: raise OoaOfOoaException('Unable to find the component %s' % name) else: return mk_component(mm, c_c, derived_attributes)
def accept_FunctionNode(self, node): pe_pe = self.m.new('PE_PE') s_sync = self.m.new('S_SYNC', Name=node.name.replace('.', '_')) relate(pe_pe, s_sync, 8001) prev = None for param in node.parameter_list.parameters: s_dt = self.m.select_one('S_DT', where(Name=param.type)) s_sparm = self.m.new('S_SPARM', Name=param.name) relate(s_sparm, s_sync, 24) relate(s_sparm, s_dt, 26) relate(s_sparm, prev, 54, 'succeeds') prev = s_sparm t = ActionTranslation(self.m) strings = t.accept(node.statement_list) s_sync.Action_Semantics_internal = ''.join(strings).strip('\n ') yield ''
def main(): ''' Parse command line options and launch the interpreter ''' parser = optparse.OptionParser(usage="%prog [options] <model_path> [another_model_path..]", version=xtuml.version.complete_string, formatter=optparse.TitledHelpFormatter()) parser.add_option("-v", "--verbosity", dest='verbosity', action="count", default=1, help="increase debug logging level") parser.add_option("-f", "--function", dest='function', action="store", help="invoke function named NAME", metavar='NAME') parser.add_option("-c", "--component", dest='component', action="store", help="look for the function in a component named NAME", metavar='NAME', default=None) (opts, args) = parser.parse_args() if len(args) == 0 or not opts.function: parser.print_help() sys.exit(1) levels = { 0: logging.ERROR, 1: logging.WARNING, 2: logging.INFO, 3: logging.DEBUG, } logging.basicConfig(level=levels.get(opts.verbosity, logging.DEBUG)) from bridgepoint import ooaofooa mm = ooaofooa.load_metamodel(args) c_c = mm.select_any('C_C', where(Name=opts.component)) domain = ooaofooa.mk_component(mm, c_c, derived_attributes=False) func = domain.find_symbol(opts.function) return func()
def test_not_first_in_loop(self): self.metamodel.define_class('A', [('Name', 'string')]) self.assertEqual(len(self.metamodel.select_many('A')), 0) self.eval_text('.create object instance a of A') self.assertEqual(len(self.metamodel.select_many('A')), 1) self.metamodel.new('A', Name='1') self.metamodel.new('A', Name='2') self.metamodel.new('A', Name='3') self.metamodel.new('A', Name='4') tmpl = ''' .select any a from instances of A where (selected.Name == "%s") .delete object instance a ''' self.eval_text(tmpl % '2') self.assertTrue(self.metamodel.select_any('A', where(Name='1'))) self.assertFalse(self.metamodel.select_any('A', where(Name='2'))) self.assertTrue(self.metamodel.select_any('A', where(Name='3'))) self.assertTrue(self.metamodel.select_any('A', where(Name='4'))) self.eval_text(tmpl % '4') self.assertTrue(self.metamodel.select_any('A', where(Name='1'))) self.assertFalse(self.metamodel.select_any('A', where(Name='2'))) self.assertTrue(self.metamodel.select_any('A', where(Name='3'))) self.assertFalse(self.metamodel.select_any('A', where(Name='4'))) self.eval_text(tmpl % '1') self.assertFalse(self.metamodel.select_any('A', where(Name='1'))) self.assertFalse(self.metamodel.select_any('A', where(Name='2'))) self.assertTrue(self.metamodel.select_any('A', where(Name='3'))) self.assertFalse(self.metamodel.select_any('A', where(Name='4')))
ep_pkg = m.new('EP_PKG', Name='External Entities - generated by pyxtuml') pe_pe = m.new('PE_PE', Visibility=True, type=7) relate(pe_pe, ep_pkg, 8001) # # Create an external entity (My_External_Entity) # s_ee = m.new('S_EE', Name='My_External_Entity', Key_Lett='My_External_Entity') pe_pe = m.new('PE_PE', Visibility=True, type=5) relate(s_ee, pe_pe, 8001) relate(pe_pe, ep_pkg, 8000) # # Create a bridge operation (My_Bridge_Operation: boolean) # s_dt = m.select_one('S_DT', where(Name='boolean')) s_brg = m.new('S_BRG', Name='My_Bridge_Operation') relate(s_brg, s_ee, 19) relate(s_brg, s_dt, 20) # # Create a bridge parameter (My_Parameter: string) # s_dt = m.select_one('S_DT', where(Name='string')) s_bparm = m.new('S_BPARM', Name='My_Parameter') relate(s_bparm, s_brg, 21) relate(s_bparm, s_dt, 22) print('-- root-types-contained: Package_c') print('-- generics')
def main(): parser = optparse.OptionParser(usage="%prog [options] <model_path> [another_model_path...]", formatter=optparse.TitledHelpFormatter()) parser.set_description(__doc__.strip()) parser.add_option("-o", "--output", dest='output', metavar="PATH", help="save sql model instances to PATH", action="store", default='/dev/stdout') parser.add_option("-v", "--verbosity", dest='verbosity', action="count", help="increase debug logging level", default=2) (opts, args) = parser.parse_args() if len(args) == 0 or None in [opts.output]: parser.print_help() sys.exit(1) levels = { 0: logging.ERROR, 1: logging.WARNING, 2: logging.INFO, 3: logging.DEBUG, } logging.basicConfig(level=levels.get(opts.verbosity, logging.DEBUG)) m1 = bridgepoint.load_metamodel(args, load_globals=True) m2 = ooaofooa.empty_model() dt_boolean = m2.select_any('S_DT', where(Name='boolean')) dt_integer = m2.select_any('S_DT', where(Name='integer')) dt_real = m2.select_any('S_DT', where(Name='real')) dt_string = m2.select_any('S_DT', where(Name='string')) dt_unique_id = m2.select_any('S_DT', where(Name='unique_id')) dt_void = m2.select_any('S_DT', where(Name='void')) pe_pe = m2.new('PE_PE', Visibility=True, type=7) ep_pkg = m2.new('EP_PKG', Name='SQL_Instance_Stream_Provider') relate(pe_pe, ep_pkg, 8001) s_sync = mk_function(ep_pkg, Name='SQL_Instance_Stream_Connect', Action_Semantics_internal=gen_connect(m1)) mk_parameters(s_sync, from_id=dt_unique_id, from_key_letter=dt_string, to_id=dt_unique_id, to_key_letter=dt_string, rel_id=dt_string) s_sync = mk_function(ep_pkg, Name='SQL_Instance_Stream_Connect_Using', Action_Semantics_internal=gen_connect_using(m1)) mk_parameters(s_sync, from_id=dt_unique_id, from_key_letter=dt_string, to_id=dt_unique_id, to_key_letter=dt_string, using_id=dt_unique_id, rel_id=dt_string) s_sync = mk_function(ep_pkg, Name='SQL_Instance_Stream_New', Action_Semantics_internal=gen_new(m1)) mk_parameters(s_sync, key_letter=dt_string) unrelate(s_sync, dt_void, 25) relate(s_sync, dt_unique_id, 25) s_sync = mk_function(ep_pkg, Name='SQL_Instance_Stream_Set_Boolean', Action_Semantics_internal=gen_set_boolean(m1)) mk_parameters(s_sync, key_letter=dt_string, instance_id=dt_unique_id, name=dt_string, value=dt_boolean) s_sync = mk_function(ep_pkg, Name='SQL_Instance_Stream_Set_Integer', Action_Semantics_internal=gen_set_integer(m1)) mk_parameters(s_sync, key_letter=dt_string, instance_id=dt_unique_id, name=dt_string, value=dt_integer) s_sync = mk_function(ep_pkg, Name='SQL_Instance_Stream_Set_Real', Action_Semantics_internal=gen_set_real(m1)) mk_parameters(s_sync, key_letter=dt_string, instance_id=dt_unique_id, name=dt_string, value=dt_real) s_sync = mk_function(ep_pkg, Name='SQL_Instance_Stream_Set_String', Action_Semantics_internal=gen_set_string(m1)) mk_parameters(s_sync, key_letter=dt_string, instance_id=dt_unique_id, name=dt_string, value=dt_string) s_sync = mk_function(ep_pkg, Name='SQL_Instance_Stream_Set_Unique_Id', Action_Semantics_internal=gen_set_unique_id(m1)) mk_parameters(s_sync, key_letter=dt_string, instance_id=dt_unique_id, name=dt_string, value=dt_unique_id) ooaofooa.delete_globals(m2) with open(opts.output, 'w') as f: f.write('-- root-types-contained: Package_c\n') f.write('-- generics\n') f.write('-- BP 7.1 content: StreamData syschar: 3 persistence-version: 7.1.6\n') f.write(xtuml.serialize_instances(m2))
def test_delete_twise(self): inst = self.metamodel.select_any('S_DT', where(Name='void')) xtuml.delete(inst) self.assertRaises(xtuml.DeleteException, xtuml.delete, inst)
def test_navigate_many_where(self): m = self.metamodel s_cdt = m.select_many('S_CDT') c_dt = xtuml.navigate_many(s_cdt).S_DT[17](where(Name='integer')) self.assertEqual(1, len(c_dt))
def testDeleteRwise(self): inst = self.metamodel.select_any('S_DT', where(Name='void')) self.metamodel.delete(inst) self.metamodel.delete(inst)
def test_select_any_where(self): m = self.metamodel inst = m.select_any('S_DT', where(Name='void')) self.assertEqual(inst.Name, 'void')
ep_pkg = m.new("EP_PKG", Name="External Entities - generated by pyxtuml") pe_pe = m.new("PE_PE", Visibility=True, type=7) relate(pe_pe, ep_pkg, 8001) # # Create an external entity (My_External_Entity) # s_ee = m.new("S_EE", Name="My_External_Entity", Key_Lett="My_External_Entity") pe_pe = m.new("PE_PE", Visibility=True, type=5) relate(s_ee, pe_pe, 8001) relate(pe_pe, ep_pkg, 8000) # # Create a bridge operation (My_Bridge_Operation: boolean) # s_dt = m.select_one("S_DT", where(Name="boolean")) s_brg = m.new("S_BRG", Name="My_Bridge_Operation") relate(s_brg, s_ee, 19) relate(s_brg, s_dt, 20) # # Create a bridge parameter (My_Parameter: string) # s_dt = m.select_one("S_DT", where(Name="string")) s_bparm = m.new("S_BPARM", Name="My_Parameter") relate(s_bparm, s_brg, 21) relate(s_bparm, s_dt, 22) print("-- root-types-contained: Package_c") print("-- generics")
def testNavOne(self): m = self.metamodel s_dt = m.select_any('S_DT', where(Name='void')) pe_pe = xtuml.navigate_one(s_dt).PE_PE[8001](lambda inst: True) self.assertEqual(s_dt.DT_ID, pe_pe.Element_ID)
def testSelectAnyWhere(self): m = self.metamodel inst = m.select_any('S_DT', where(Name='void')) self.assertEqual(inst.Name, 'void')
def main(): ''' Parse argv for options and arguments, and start schema generation. ''' parser = optparse.OptionParser( usage="%prog [options] <model_path> [another_model_path...]", formatter=optparse.TitledHelpFormatter()) parser.set_description(__doc__.strip()) parser.add_option( "-f", "--function", dest="function", metavar="NAME", help= "append integrity checking actions to functions named NAME (required)", action="store", default=None) parser.add_option("-o", "--output", dest='output', metavar="PATH", help="save sql model instances to PATH (required)", action="store", default=None) parser.add_option("-v", "--verbosity", dest='verbosity', action="count", help="increase debug logging level", default=2) (opts, args) = parser.parse_args() if len(args) == 0 or None in [opts.output, opts.function]: parser.print_help() sys.exit(1) levels = { 0: logging.ERROR, 1: logging.WARNING, 2: logging.INFO, 3: logging.DEBUG, } logging.basicConfig(level=levels.get(opts.verbosity, logging.DEBUG)) m = ooaofooa.load_metamodel(args) for c_c in m.select_many('C_C'): filt = lambda sel: ooaofooa.is_contained_in( sel, c_c) and sel.Name == opts.function s_sync = m.select_any('S_SYNC', filt) if not s_sync: s_sync = m.new('S_SYNC', Name=opts.function) pe_pe = m.new('PE_PE') s_dt = m.select_any('S_DT', where(Name='boolean')) relate(pe_pe, s_sync, 8001) relate(s_dt, s_sync, 25) generate_actions(m, c_c, s_sync) xtuml.persist_instances(m, opts.output)
ep_pkg = m.new('EP_PKG', Name='External Entities - generated by pyxtuml') pe_pe = m.new('PE_PE', Visibility=True, type=7) relate(pe_pe, ep_pkg, 8001) # # Create an external entity (My_External_Entity) # s_ee = m.new('S_EE', Name='My_External_Entity', Key_Lett='My_External_Entity') pe_pe = m.new('PE_PE', Visibility=True, type=5) relate(s_ee, pe_pe, 8001) relate(pe_pe, ep_pkg, 8000) # # Create a bridge operation (My_Bridge_Operation: boolean) # s_dt = m.select_one('S_DT', where(Name='boolean')) s_brg = m.new('S_BRG', Name='My_Bridge_Operation') relate(s_brg, s_ee, 19) relate(s_brg, s_dt, 20) # # Create a bridge parameter (My_Parameter: string) # s_dt = m.select_one('S_DT', where(Name='string')) s_bparm = m.new('S_BPARM', Name='My_Parameter') relate(s_bparm, s_brg, 21) relate(s_bparm, s_dt, 22) print('-- root-types-contained: Package_c') print('-- generics') print('-- BP 7.1 content: StreamData syschar: 3 persistence-version: 7.1.6')