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 }