/// <summary> /// Ajoute un compteur. /// </summary> /// <param name="counter">Compteur.</param> /// <param name="mergeTimeAxis">Indique si l'axe de temps doit être mergé.</param> /// <param name="mergeDate">Date à utiliser pour le merge.</param> internal void AddCounter(CounterData counter, bool mergeTimeAxis, DateTime mergeDate) { // Alimentation du dictionnaire des axes. string axis = counter.Axis; if (!_axis.ContainsKey(axis)) { _axis.Add(axis, null); } if (_counters == null) { // Alimentation de la base de données des compteurs. string counterCode = counter.CounterCode; if (counterCode != null && !_counterDefinitions.ContainsKey(counterCode)) { _counterDefinitions.Add( counterCode, new CounterDefinition(counterCode, counter.CounterLabel, 1, 0, 0)); } } // Alimentation du cube de données. DateTime startDate = mergeTimeAxis ? mergeDate : counter.StartDate; CubeKey key = new CubeKey(startDate, axis, TimeLevel.ValueOf(counter.Level)); ICube cube; if (!_cubes.TryGetValue(key, out cube)) { cube = new ExternalCube(_name, key); _cubes.Add(key, cube); } ((ExternalCube)cube).AddCounter(counter); }
/// <summary> /// Crée un nouveau compteur. /// </summary> /// <param name="cube">Cube contenant le compteur.</param> /// <param name="counter">Données du compteur.</param> internal ExternalCounter(ExternalCube cube, CounterData counter) { _counter = counter; _cube = cube; // Indexation de l'échantillonnage. _sampleData = new Dictionary <double, CounterSampleData>(); foreach (CounterSampleData data in counter.Sample) { _sampleData[data.SampleValue] = data; } }