陈清红
2025-04-14 880f3c0257eeb8c37761d484258fdd102a369a19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
Quintiq file version 2.0
#parent: #root
Method Generate
{
  TextBody:
  [*
    DomainModel::DomainStream()->( dm )
    {
      gp := this.TG_UIDialog().TG_TestGenerator().TG_GlobalParameter();
      
      m := select( dm, QuillModules, qm, qm.Name() = gp.TestModuleName() );
      m.SelectForEdit();
      
      if( this.GenerateAllowed() )
      {
        objecttypename := this.TG_UIDialog().CreatedName();
        name := gp.ObjectAttributePrefix() + this.CreatedName();
        
        objdef := select( dm, ObjectDefinitions.Elements, o, o.Name() = objecttypename );
        alreadyexists := exists( objdef, Attributes, attr, attr.Name() = name );
        
        description := ''; // TODO
        accessibility := 'Protected'; // TODO
        
        // Create as attributes, even for Constraint and KPI
        CG_CodeGenerator::CreateUpdateAttribute( gp.TestModuleName(),
                                                 objecttypename,
                                                 name,
                                                 this.ValueType(),
                                                 description,
                                                 accessibility );
        
        // do not re-create/update if the attribute has been created previously, as the implementation detail may be lost.
        if( not alreadyexists )
        {
          // Getter
          name := this.CreatedName();
          
          // TODO
          if( true )
          {
            name := this.TG_UIDialog().CreatedName() + '_' + name;
          }
          
          body := this.GetGetterBody();
          description := '';
          accessibility := 'Public'; // TODO
          
          CG_CodeGenerator::CreateMethod( gp.TestModuleName(),
                                          objecttypename,
                                          name,
                                          this.ValueType(),
                                          false,
                                          body,
                                          description,
                                          accessibility,
                                          NamedValueTree::Create() );
          
          // Setter
          name := this.CreatedName();
          
          // TODO
          if( true )
          {
            name := this.TG_UIDialog().CreatedName() + '_' + name;
          }
          
          body := this.GetSetterBody();
          description := '';
          accessibility := 'Public'; // TODO
          
          cg := CG_CodeGenerator::Construct();
          cg.CreateMethodArgument( 'value',
                                    this.ValueType(),
                                    false,
                                    false,
                                    false,
                                    false );
          
          cg_nvt := LibInt_MessageAccessor::CreateEmptyMessage();
          LibInt_MessageAccessor::SetBodyAsObject( cg_nvt, cg );
          
          CG_CodeGenerator::CreateMethod( gp.TestModuleName(),
                                          objecttypename,
                                          name,
                                          objecttypename,
                                          false,
                                          body,
                                          description,
                                          accessibility,
                                          cg_nvt );
        }
        
        this.IsCreated( true );
      }
    }
  *]
}