Beispiel #1
0
 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)
Beispiel #2
0
    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)
Beispiel #3
0
 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))
Beispiel #4
0
 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']()
Beispiel #5
0
 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']()
Beispiel #6
0
 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)
Beispiel #8
0
 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')
Beispiel #9
0
 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);')
Beispiel #10
0
 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
Beispiel #12
0
 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");')
Beispiel #13
0
 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");')
Beispiel #14
0
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 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')
Beispiel #19
0
 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)
Beispiel #20
0
 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)
Beispiel #21
0
 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)
Beispiel #22
0
    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 ''
Beispiel #23
0
    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 ''
Beispiel #24
0
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_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 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))
Beispiel #29
0
 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)
Beispiel #30
0
 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))
Beispiel #31
0
    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')))
Beispiel #32
0
 def testDeleteRwise(self):
     inst = self.metamodel.select_any('S_DT', where(Name='void'))
     self.metamodel.delete(inst)
     self.metamodel.delete(inst)
Beispiel #33
0
 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")
Beispiel #35
0
 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)
Beispiel #36
0
 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)
Beispiel #38
0
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')