Quintiq file version 2.0
|
#parent: #root
|
MethodOverride SynchronizeHierarchies
|
{
|
TextBody:
|
[*
|
// 1. First all the Hierarchies IsSoftDeleted attribute are set to true
|
traverse( this, Hierarchy, hierarchy )
|
{
|
hierarchy.IsSoftDeleted( true );
|
}
|
|
// 2. Create a Hierarchy object for each SetType of unique Group if it does not exist
|
// Retrieve all distinct unique group names of set type
|
uniqueGroupNames := selectuniquevalues( this,
|
SystemOnChannel.SetType,
|
setType,
|
true,
|
setType.Group()
|
);
|
|
traverse( uniqueGroupNames, Elements, uniqueGroupName )
|
{
|
// Check if there is a Hierarchy with the group name exist
|
hierarchy := select( this, Hierarchy, hierarchy, true, hierarchy.Name() = uniqueGroupName );
|
|
if( isnull( hierarchy ) )
|
{
|
hierarchy := LibDMF_Hierarchy::Create( this,
|
uniqueGroupName );
|
}
|
|
// Mark the Hierarchy to not be removed
|
hierarchy.IsSoftDeleted( false );
|
|
// Update the timestamp for the Hierarchy
|
hierarchy.UpdateTimeStampLastUpdated();
|
}
|
|
// 3. Remove all the Hierarchies for which there are no more set types "linked" to
|
traverse( this, Hierarchy, hierarchy, hierarchy.IsSoftDeleted() )
|
{
|
hierarchy.Delete();
|
}
|
*]
|
}
|