admin
2025-01-22 7e31442f0e9b07764e9c6a9680d3d4aeba5fe1de
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
Quintiq file version 2.0
#parent: #root
Method RenameAfterRelation (const Type type, NamedValueTree nvt, NamedValue nv)
{
  Description:
  [*
    Make sure the branches in the named value tree that represent an owning relation are called after the relation name.
    Default is the type name of the owned object.
  *]
  TextBody:
  [*
    traverse( nv.Children(), Elements, child )
    {
      if( child.GetValue().istype( Key ) )
      {
        rel := select( LibOpt_Utility::GetTypeAncestors( type ), Elements.MdlRelSideElements.astype( MdlModeledRelSideElement ), rel,
                       rel.OtherSide().Type().Name() = child.Name()
                       and guard( rel.RelationSide().OwningSideBool(), false ) );
        if( not isnull( rel ) )
        {
          if( rel.Name() <> child.Name() )
          {
            new_child := nv.AddChild( nvt.GetHandle( rel.Name() ) );
            new_child.SetValue( child.GetValue() );
            child.Move( new_child, true );
            child.Delete( false );
            child := new_child;
          }
          this.RenameAfterRelation( rel.OtherSide().Type(), nvt, child );
        }
      }
    }
  *]
  InterfaceProperties { Accessibility: 'Module' }
}