Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method ConvertSnapshotsLabelValue ( 
 | 
  Number batchsize, 
 | 
  DssKpiSnapshot startSnapshot, 
 | 
  KpiLabelValue oldLabelValue, 
 | 
  KpiLabelValue newLabelValue 
 | 
) as stream[DssKpiSnapshotStorage] 
 | 
{ 
 | 
  Description: 'CAN EXTEND | Dss-specific implementation of ConvertSnapshotsLabelValue that convert label value in batches of the specified size, starting from the specified Snapshot onwards. Returns a stream to allow waiting for the last batch to complete.' 
 | 
  TextBody: 
 | 
  [* 
 | 
    snapshot := startSnapshot; 
 | 
    entry    := 0; 
 | 
    while ( not isnull( snapshot ) and entry < batchsize ) 
 | 
    { 
 | 
      convertsnapshot := snapshot; 
 | 
      snapshot := snapshot.PreviousSnapshot();   
 | 
       
 | 
      labelvalue := select( convertsnapshot, LabelValueInSnapshot.LabelValue, value, value.Value() = oldLabelValue.Value() ); 
 | 
      if( not isnull( labelvalue ) ) 
 | 
      { 
 | 
        convertsnapshot.AddLabelValue( newLabelValue ); 
 | 
      } 
 | 
       
 | 
      entry++; 
 | 
    } 
 | 
     
 | 
    // Setup the call to the next batch with low priority. 
 | 
    returnStream := emit( this ); 
 | 
    if ( not isnull( snapshot ) ) 
 | 
    { 
 | 
      returnStream := this 
 | 
        ->Annotate( ReactiveAnnotation::Priority( 0 ) ) 
 | 
        ->ConvertSnapshotsLabelValue( batchsize, snapshot, oldLabelValue, newLabelValue ); 
 | 
    } 
 | 
     
 | 
    return returnStream; 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Extensible' } 
 | 
} 
 |