001    package org.hackystat.telemetry.analyzer.evaluator;
002    
003    import java.util.ArrayList;
004    import java.util.Collections;
005    import java.util.List;
006    
007    import org.hackystat.telemetry.analyzer.language.ast.TelemetryReportDefinition;
008    
009    /**
010     * The evaluation result after resolving a telemetry report definition. 
011     *
012     * @author (Cedric) Qin Zhang
013     */
014    public class TelemetryReportObject {
015      
016      private TelemetryReportDefinition definition;
017      private List<TelemetryChartObject> chartObjects = 
018        new ArrayList<TelemetryChartObject>(); 
019      
020      /**
021       * Constructs this instance.
022       * 
023       * @param definition The telemetry report definition.
024       */
025      TelemetryReportObject(TelemetryReportDefinition definition) {
026        this.definition = definition;
027      }
028      
029      /**
030       * Gets the telemetry report definition.
031       * 
032       * @return The telemetry report definiton. 
033       */
034      public TelemetryReportDefinition getTelemetryReportDefinition() {
035        return this.definition;
036      }
037      
038      /**
039       * Adds a telemetry chart object.
040       * 
041       * @param chartObject The telemetry chart object to be added.
042       */
043      void addChartObject(TelemetryChartObject chartObject) {
044        this.chartObjects.add(chartObject);
045      }
046      
047      /**
048       * Gets a read-only list of all charts.
049       * 
050       * @return A read-only list containing <code>TelemetryChartObject</code> objects.
051       */
052      public List<TelemetryChartObject> getChartObjects() {
053        return Collections.unmodifiableList(this.chartObjects);
054      }
055    }