示例#1
0
        private IEnumerable <Sensor> SynchronizeSensors()
        {
            // get all sensors from app config
            var localSensors = new LocalSensorRepository().GetAll();
            // initialize all sensors and locations
            var localSensorsInit =
                localSensors.
                Select(x =>
            {
                if (x.Id == Guid.Empty)
                {
                    x.Id = Guid.NewGuid();
                }
                return(x);
            }).ToList();

            _dummyTcpServerActors = localSensorsInit.Where(s => s.DummyTest).ToDictionary(x => _mySystem.ActorOf(Props.Create(() => new DummyTcpServer(x.Uri.Port))));
            var localLocationInit =
                localSensorsInit.
                Select(x => x.Location).
                Distinct().
                Select(x =>
            {
                if (x.Id == Guid.Empty)
                {
                    x.Id = Guid.NewGuid();
                }
                return(x);
            }).ToList();
            // get instance of repo's
            var locusSensorRepository   = new LocusSensorRepository();
            var locusLocationRepository = new LocusLocationRepository();

            // start of clean
            locusSensorRepository.Truncate();
            locusLocationRepository.Truncate();
            // save the entities on the locus DB
            foreach (var loc in localLocationInit)
            {
                locusLocationRepository.Save(loc);
            }
            foreach (var sensor in localSensorsInit)
            {
                if (sensor.Location != null && sensor.Location.ExternalId.Keys.Contains(LocusLocationRepository.LOC_LOCID))
                {
                    var loc = localLocationInit.Where(x => x.ExternalId[LocusLocationRepository.LOC_LOCID] == sensor.Location.ExternalId[LocusLocationRepository.LOC_LOCID]).FirstOrDefault();
                    sensor.Location = loc;
                }
                locusSensorRepository.Save(sensor);
            }
            // requery to get all data
            var mySensors = locusSensorRepository.GetAll();

            return(mySensors);
        }
示例#2
0
 public DatabaseActor()
 {
     sensorRepository = new LocusSensorRepository();
     Context.System.EventStream.Subscribe(Self, typeof(SensorEvent));
     Receive <SensorEvent>
     (
         e =>
         sensorRepository.SetValue(e.Sensor, new SensorValue {
         Time = e.Time, Value = e.Value
     })
     );
 }