yanweiyuan3
2023-08-09 588bc7829387dfc761cc25f06f77d4c81818bd10
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
Quintiq file version 2.0
#parent: #root
StaticMethod CreateCsvFromSnapshot (KpiSnapshotSetData snapshotSetData, KpiTracker kpiTracker) as String
{
  Description: 'Creates a CSV string out of the specified KpiSnapshotDatas'
  TextBody:
  [*
    // Render header line.
    output := "";
    
    conversion := ConversionOptions::System();
    
    if ( snapshotSetData.SnapshotData( relsize ) > 0 )
    {
      output := "PlanDateTime; ServerDateTime; RetentionPolicyID; ";
      first  := snapshotSetData.SnapshotData( relget ).Element( 0 );
    
      // -- Label headers
      sortedLabels := selectsortedset( kpiTracker, Label, label, true, label.Name() );
      output := output + selectuniquevalues( sortedLabels, Elements, label, 
                                             true, "label_" + label.Name() ).ToString( "; ");
      if ( first.Label( relsize ) > 0 ) 
      {
        output := output + "; "
      }
      // -- KPI headers
      sortedKpis    := selectsortedset( kpiTracker, MetaData, metadata, true, metadata.Name() ); 
      output := output + selectuniquevalues( sortedKpis, Elements, kpi, 
                                             true, "kpi_" + kpi.Name() ).ToString( "; " );
      
      // -- Finish header row with a newline.
      output := output + String::NewLine();
                                       
                                       
      // Render rows
      traverse( snapshotSetData, SnapshotData, snapshot ) 
      {
        // Timestamps and stuff
        output := output 
                + snapshot.PlanDateTime().Format( 'Y-M2-D2TH2:m:sZ', conversion ) + "; "
                + snapshot.ServerDateTime().Format( 'Y-M2-D2TH2:m:sZ', conversion ) + "; "
                + snapshot.RetentionPolicyIdentification() + "; "
                
        sortedLabels := selectsortedset( kpiTracker, Label, label, true, label.Name() );
        traverse( sortedLabels, Elements, labelValue )
        {
          kpiObj := selectsortedset( snapshot, Label, label, true, label.Name() );
          lab := select( kpiObj, Elements, label, labelValue.Name() = label.Name() );
          output := output + guard ( lab.Value(), "" ) + "; ";
        }
        if ( snapshot.Label( relsize ) < 0 ) 
        {
          output := output + "; "
        }
        sortedKpis    := selectsortedset( kpiTracker, MetaData, metadata, true, metadata.Name() ); 
        traverse( sortedKpis, Elements, metadata )
        {
          kpiObj := selectsortedset( snapshot, Value, value, true, value.Name() );
          val := select( kpiObj, Elements, value, metadata.Name() = value.Name() );
          output := output + guard( [String]val.Value(), "" ) + "; ";
        }
        if ( snapshot.Value( relsize ) < 0 )
        {
          output := output + "; ";
        }
    
        // -- Finish content row with a newline.
        output := output + String::NewLine();
      }
      
    }
    
    // send result.
    return output;
  *]
}