001 package org.hackystat.telemetry.analyzer.evaluator; 002 003 import org.hackystat.telemetry.analyzer.configuration.TelemetryChartDefinitionInfo; 004 import org.hackystat.telemetry.analyzer.configuration.TelemetryChartYAxisDefinitionInfo; 005 import org.hackystat.telemetry.analyzer.configuration.TelemetryDefinitionInfo; 006 import org.hackystat.telemetry.analyzer.configuration.TelemetryDefinitionManager; 007 import org.hackystat.telemetry.analyzer.configuration.TelemetryDefinitionType; 008 import org.hackystat.telemetry.analyzer.configuration.TelemetryStreamsDefinitionInfo; 009 import org.hackystat.telemetry.analyzer.language.ast.TelemetryChartDefinition; 010 import org.hackystat.telemetry.analyzer.language.ast.TelemetryChartYAxisDefinition; 011 import org.hackystat.telemetry.analyzer.language.ast.TelemetryStreamsDefinition; 012 import org.hackystat.sensorbase.resource.users.jaxb.User; 013 014 /** 015 * Telemetry definition resolver. It finds telemetry definition objects by name. 016 * 017 * @author (Cedric) Qin ZHANG 018 * @version $Id$ 019 */ 020 public class TelemetryDefinitionResolver { 021 022 private User user; 023 private TelemetryDefinitionManager manager; 024 025 /** 026 * Constructs this instance. 027 * 028 * @param manager A telemetry definition manager. 029 * @param currentUser The user who makes request. 030 */ 031 public TelemetryDefinitionResolver(TelemetryDefinitionManager manager, User currentUser) { 032 this.manager = manager; 033 this.user = currentUser; 034 } 035 036 /** 037 * Resolves telemetry streams definition by name. 038 * 039 * @param name Telemetry streams definition name. 040 * @return The telemetry streams object. 041 * @throws TelemetryEvaluationException If the telemetry streams object does not exist. 042 */ 043 public TelemetryStreamsDefinition resolveStreamsDefinition(String name) 044 throws TelemetryEvaluationException { 045 TelemetryDefinitionInfo defInfo = this.manager.get(this.user, name, true, 046 TelemetryDefinitionType.STREAMS); 047 if (defInfo == null) { 048 throw new TelemetryEvaluationException("Unable to find definition for telemetry streams '" 049 + name + "'."); 050 } 051 else { 052 return ((TelemetryStreamsDefinitionInfo) defInfo).getStreamsDefinitionObject(); 053 } 054 } 055 056 /** 057 * Resolves telemetry chart definition by name. 058 * 059 * @param name Telemetry chart definition name. 060 * @return The telemetry chart object. 061 * @throws TelemetryEvaluationException If the telemetry chart object does not exist. 062 */ 063 public TelemetryChartDefinition resolveChartDefinition(String name) 064 throws TelemetryEvaluationException { 065 TelemetryDefinitionInfo defInfo = this.manager.get(this.user, name, true, 066 TelemetryDefinitionType.CHART); 067 if (defInfo == null) { 068 throw new TelemetryEvaluationException("Unable to find definition for telemetry chart '" 069 + name + "'."); 070 } 071 else { 072 return ((TelemetryChartDefinitionInfo) defInfo).getChartDefinitionObject(); 073 } 074 } 075 076 /** 077 * Resolves telemetry chart y-axis definition by name. 078 * 079 * @param name Telemetry chart y-axis definition name. 080 * @return The telemetry chart y-axis object. 081 * @throws TelemetryEvaluationException If the telemetry chart y-axis object does not exist. 082 */ 083 public TelemetryChartYAxisDefinition resolveYAxisDefinition(String name) 084 throws TelemetryEvaluationException { 085 TelemetryDefinitionInfo defInfo = this.manager.get(this.user, name, true, 086 TelemetryDefinitionType.YAXIS); 087 if (defInfo == null) { 088 throw new TelemetryEvaluationException( 089 "Unable to find definition for telemetry chart y-axis '" + name + "'."); 090 } 091 else { 092 return ((TelemetryChartYAxisDefinitionInfo) defInfo).getChartYAxisDefinitionObject(); 093 } 094 } 095 }