//-----------------------------------------------------------------------
//
// 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
};
}
}
}