lazhen
2025-01-09 8afe90b633046db39042aada36b88193062f8cff
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
Quintiq file version 2.0
#parent: #root
Method GetInterests (Boolean sendDeltas_i, DateTime deltaStart_i) as owning LibDMF_Interests
{
  Description: 'Get the Interests of a System.'
  TextBody:
  [*
    // sendDeltas_i = FALSE and startOfDeltas_i = MinDateTime when all data must be send.
    
    // filter interests which exist in both set type and set
    setInterests     := selectset( this, Interest, interest,
                                   interest.istype( LibDMF_SetInterest ),
                                   interest.GetHasDelta( ifexpr( sendDeltas_i, interest.LastSent(), deltaStart_i ) ) );
    setTypeInterests := selectset( this, Interest, interest,
                                   interest.istype( LibDMF_SetTypeInterest ),
                                   interest.GetHasDelta( ifexpr( sendDeltas_i, interest.LastSent(), deltaStart_i ) ) );
    
    // combine the interests without the existing interest on set level
    // collect set type before set, interest at set type level comes first
    interests := &setTypeInterests;
    traverse( setInterests, Elements, si,
              not exists( interests, Elements.Data.astype( LibDMF_SetType ), setType,
                          setType = si.Data().astype( LibDMF_Set ).SetType() ) )
    {
      interests.Add( si );
    }
    
    return &interests;
  *]
}