001    package org.hackystat.telemetry.analyzer.configuration;
002    
003    import org.hackystat.telemetry.analyzer.language.TelemetryLanguageException;
004    import org.hackystat.telemetry.analyzer.language.ast.TelemetryStreamsDefinition;
005    import org.hackystat.telemetry.analyzer.language.parser.TelemetryLanguageParser;
006    import org.hackystat.sensorbase.resource.users.jaxb.User;
007    
008    /**
009    * Provides information about a Telemetry Stream, including its name, its type (Stream), and
010     * the definition.
011     * 
012     * @author (Cedric) Qin Zhang
013     */
014    public class TelemetryStreamsDefinitionInfo extends TelemetryDefinitionInfo {
015    
016      private TelemetryStreamsDefinition streamsDefinition;
017    
018      /**
019       * Constructs this instance.
020       * 
021       * @param fullDefinitionString The definition string.
022       * @param owner The owner of this definition.
023       * @param shareScope The share scope of this definition.
024       * 
025       * @throws TelemetryConfigurationException If the definition string cannot be parsed.
026       */
027      public TelemetryStreamsDefinitionInfo(String fullDefinitionString, User owner, 
028          ShareScope shareScope) throws TelemetryConfigurationException {
029        super(fullDefinitionString, owner, shareScope);
030        try {
031          this.streamsDefinition = TelemetryLanguageParser.parseStreamsDef(fullDefinitionString);
032        }
033        catch (TelemetryLanguageException ex) {
034          throw new TelemetryConfigurationException(ex);
035        }
036      }
037      
038      /**
039       * Constructs this instance.
040       * 
041       * @param streamsDef Telemetry streams definition object.
042       * @param owner The owner of this definition.
043       * @param shareScope The share scope of this definition.
044       * 
045       * @throws TelemetryConfigurationException If the definition string cannot be parsed.
046       */
047      public TelemetryStreamsDefinitionInfo(TelemetryStreamsDefinition streamsDef, User owner, 
048          ShareScope shareScope) throws TelemetryConfigurationException {
049        super(streamsDef.getDefinitionString(), owner, shareScope);
050        this.streamsDefinition = streamsDef;
051      }
052      
053      /**
054       * Gets the name of this telemetry definition.
055       * 
056       * @return The name.
057       */
058      @Override
059      public String getName() {
060        return this.streamsDefinition.getName();
061      }
062      
063      /**
064       * Gets telemetry definition type.
065       * 
066       * @return Telemetry definition type.
067       */
068      @Override
069      public TelemetryDefinitionType getType() {
070        return TelemetryDefinitionType.STREAMS;
071      }
072      
073      /**
074       * Gets the abstract syntax tree representation of this telemetry report.
075       * 
076       * @return The abstract syntax tree representation.
077       */
078      public TelemetryStreamsDefinition getStreamsDefinitionObject() {
079        return this.streamsDefinition;
080      }
081    }