//----------------------------------------------------------------------- // // Copyright (c) 2012 Deltares. All rights reserved. // // B. Faassen // barry.faassen@deltares.nl // 1-8-2012 // n.a. //----------------------------------------------------------------------- using System; using System.Collections.Generic; using System.ComponentModel; using Deltares.Standard; using Deltares.Standard.Extensions; namespace Deltares.Dam.Data.Sensors { public class SensorFactory { /// /// Creates a unique sensor. The name and id are generated and set in the /// context of the given sensor collection /// /// The sensors. /// internal Sensor CreateUniqueSensor(IEnumerable sensors) { if (sensors == null) throw new ArgumentNullException("sensors"); // TODO: see of these calls can be combined for performance reason var id = sensors.GetUniqueID(x => x.ID); Sensor sensor = new Sensor { ID = id, Type = SensorType.PiezometricHead }; UniqueNameProvider.ProvideUniqueName(new List(sensors), sensor); return sensor; } /// /// Creates a sensor location. /// /// The location. /// internal SensorLocation CreateSensorLocation(Location location) { return CreateSensorLocation(location, new Group()); } /// /// Creates a sensor location. /// /// The location. /// The group to associate the location with /// Should return a valid instance internal SensorLocation CreateSensorLocation(Location location, Group group) { return new SensorLocation { Group = group, Location = location, SourceTypePl1WaterLevelAtRiver = DataSourceTypeSensors.LocationData, SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = DataSourceTypeSensors.LocationData, SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = DataSourceTypeSensors.LocationData, SourceTypePl1PlLineOffsetBelowDikeTopAtRiver = DataSourceTypeSensors.LocationData, SourceTypePl1PlLineOffsetBelowShoulderBaseInside = DataSourceTypeSensors.LocationData, SourceTypePl1WaterLevelAtPolder = DataSourceTypeSensors.LocationData, SourceTypePl3 = DataSourceTypeSensors.LocationData, SourceTypePl4 = DataSourceTypeSensors.LocationData }; } } }