Exemple #1
0
        public SettingTableEntity(PartionKeyRowKeyPair partitionKeyRowKeyPair, string value)
        {
            PartitionKey = partitionKeyRowKeyPair.PartitionKey;
            RowKey       = partitionKeyRowKeyPair.RowKey;

            Value = value;
        }
Exemple #2
0
        public Device Get(string id)
        {
            var deviceKey = PartionKeyRowKeyPair.CreateFromIdentity(id);

            var deviceRepository = new DeviceRepository(_tableEntityOperation);

            var deviceTableEntity = deviceRepository.Get(deviceKey);

            if (deviceTableEntity == null)
            {
                throw new NotFoundException();
            }

            return(new Device
            {
                Id = id,
                Name = deviceTableEntity.Name,
                Network = new Network()
                {
                    Id = deviceTableEntity.NetworkId
                },
                Service = new Service()
                {
                    Id = deviceTableEntity.ServiceId
                },
                Company = new Company()
                {
                    Id = deviceTableEntity.CompanyId
                },
                DeviceKey = deviceTableEntity.DeviceKey,
                NumericId = deviceTableEntity.NumericId
            });
        }
        public TE Get <TE>(string tableName, PartionKeyRowKeyPair paritionKeyRowKeyPair)
            where TE : TableEntity
        {
            var table = GetTableReference(tableName);

            try
            {
                var result =
                    table.Execute(TableOperation.Retrieve <TE>(paritionKeyRowKeyPair.PartitionKey,
                                                               paritionKeyRowKeyPair.RowKey));

                if (result.HttpStatusCode == (int)HttpStatusCode.OK && result.Result != null)
                {
                    return((TE)result.Result);
                }

                if (result.HttpStatusCode == (int)HttpStatusCode.NotFound ||
                    (result.HttpStatusCode == (int)HttpStatusCode.OK && result.Result == null))
                {
                    return(default(TE));
                }

                throw new StorageAccessException((HttpStatusCode)result.HttpStatusCode);
            }
            catch (StorageException sex)
            {
                throw new StorageAccessException((HttpStatusCode)sex.RequestInformation.HttpStatusCode);
            }
        }
Exemple #4
0
        public string Create(Service service)
        {
            var serviceIdentity = Identity.Next();

            var serviceKey = PartionKeyRowKeyPair.CreateFromIdentity(serviceIdentity);
            var companyKey = PartionKeyRowKeyPair.CreateFromIdentity(service.Company.Id);

            var serviceRepository  = new ServiceRepository(_tableEntityOperation);
            var serviceTableEntity = new ServiceTableEntity(serviceKey, service.Name, service.Company.Id, service.ApiKey);

            serviceRepository.Create(serviceTableEntity);

            TransientErrorHandling.Run(() =>
            {
                var companyRepository = new CompanyRepository(_tableEntityOperation);
                var company           = companyRepository.Get(companyKey);

                company.Services.Add(new Small()
                {
                    Id = serviceIdentity, Name = service.Name
                });
                companyRepository.Update(company);
            });

            return(serviceIdentity);
        }
Exemple #5
0
        public Service Get(string id)
        {
            var serviceKey = PartionKeyRowKeyPair.CreateFromIdentity(id);

            var serviceRepository = new ServiceRepository(_tableEntityOperation);

            var serviceTableEntity = serviceRepository.Get(serviceKey);

            if (serviceTableEntity == null)
            {
                throw new NotFoundException();
            }

            return(new Service
            {
                Id = id,
                Name = serviceTableEntity.Name,
                Company = new Company()
                {
                    Id = serviceTableEntity.CompanyId
                },
                TelemetryDataSinkSettings = serviceTableEntity.TelemetryDataSinkSettings,
                ApiKey = serviceTableEntity.ApiKey
            });
        }
Exemple #6
0
        public string Create(Company company, string userId)
        {
            var companyIdentity = Identity.Next();

            var companyKey = PartionKeyRowKeyPair.CreateFromIdentity(companyIdentity);
            var userKey    = PartionKeyRowKeyPair.CreateFromIdentity(userId);

            var userRepository  = new UserRepository(_tableEntityOperation);
            var userTableEntity = userRepository.Get(userKey);

            var companyRepository  = new CompanyRepository(_tableEntityOperation);
            var companyTableEntity = new CompanyTableEntity(companyKey, company.Name,
                                                            new List <SmallUser>
            {
                new SmallUser {
                    Id = userId, Name = userTableEntity.Name, Email = userTableEntity.Email
                }
            });

            companyRepository.Create(companyTableEntity);

            TransientErrorHandling.Run(() =>
            {
                userTableEntity = userRepository.Get(userKey);

                userTableEntity.Companies.Add(new Small {
                    Id = companyIdentity, Name = company.Name
                });
                userRepository.Update(userTableEntity);
            });

            return(companyIdentity);
        }
Exemple #7
0
        public void Delete(string id)
        {
            var serviceKey = PartionKeyRowKeyPair.CreateFromIdentity(id);

            var serviceRepository = new ServiceRepository(_tableEntityOperation);

            var serviceTableEntity = serviceRepository.Get(serviceKey);

            if (serviceTableEntity == null)
            {
                throw new NotFoundException();
            }

            var companyKey = PartionKeyRowKeyPair.CreateFromIdentity(serviceTableEntity.CompanyId);

            serviceRepository.Delete(serviceTableEntity);

            TransientErrorHandling.Run(() =>
            {
                var companyRepository = new CompanyRepository(_tableEntityOperation);

                var company = companyRepository.Get(companyKey);
                for (var idx = 0; idx < company.Services.Count; idx++)
                {
                    if (company.Services[idx].Id == id)
                    {
                        company.Services.RemoveAt(idx);
                        break;
                    }
                }
                companyRepository.Update(company);
            });
        }
Exemple #8
0
        public void Delete(string id)
        {
            var companyKey = PartionKeyRowKeyPair.CreateFromIdentity(id);

            var companyRepository  = new CompanyRepository(_tableEntityOperation);
            var companyTableEntity = companyRepository.Get(companyKey);

            if (companyTableEntity == null)
            {
                throw new NotFoundException();
            }

            var userIds = companyTableEntity.Users.Select(u => u.Id).ToList();

            companyRepository.Delete(companyTableEntity);

            TransientErrorHandling.Run(() =>
            {
                var userRepository = new UserRepository(_tableEntityOperation);

                foreach (var userId in userIds)
                {
                    var userKey = PartionKeyRowKeyPair.CreateFromIdentity(userId);

                    var user = userRepository.Get(userKey);
                    user.Companies.Remove(user.Companies.Single(c => c.Id == id));
                    userRepository.Update(user);
                }
            });
        }
Exemple #9
0
        public void Delete(string id)
        {
            var deviceKey = PartionKeyRowKeyPair.CreateFromIdentity(id);

            var deviceRepository  = new DeviceRepository(_tableEntityOperation);
            var networkRepository = new NetworkRepository(_tableEntityOperation);

            var deviceTableEntity = deviceRepository.Get(deviceKey);

            if (deviceTableEntity == null)
            {
                throw new NotFoundException();
            }

            var parentNetworkKey = PartionKeyRowKeyPair.CreateFromIdentity(deviceTableEntity.NetworkId);

            deviceRepository.Delete(deviceTableEntity);

            TransientErrorHandling.Run(() =>
            {
                var parentNetwork = networkRepository.Get(parentNetworkKey);
                for (var idx = 0; idx < parentNetwork.Devices.Count; idx++)
                {
                    if (parentNetwork.Devices[idx].Id == id)
                    {
                        parentNetwork.Devices.RemoveAt(idx);
                        break;
                    }
                }
                networkRepository.Update(parentNetwork);
            });
        }
Exemple #10
0
        public TimeSeriesTableEntity(PartionKeyRowKeyPair partitionKeyRowKeyPair, string payload)
        {
            PartitionKey = partitionKeyRowKeyPair.PartitionKey;
            RowKey       = partitionKeyRowKeyPair.RowKey;

            Payload = payload;
        }
Exemple #11
0
        public string Create(Device device)
        {
            var deviceIdentity = Identity.Next();

            var deviceKey = PartionKeyRowKeyPair.CreateFromIdentity(deviceIdentity);

            var deviceRepository  = new DeviceRepository(_tableEntityOperation);
            var networkRepository = new NetworkRepository(_tableEntityOperation);

            var deviceTableEntity = new DeviceTableEntity(deviceKey, device.Name, device.Network.Id, device.Service.Id,
                                                          device.Company.Id, device.DeviceKey, device.NumericId);

            deviceRepository.Create(deviceTableEntity);

            TransientErrorHandling.Run(() =>
            {
                var parentNetworkKey = PartionKeyRowKeyPair.CreateFromIdentity(device.Network.Id);

                var parentNetwork = networkRepository.Get(parentNetworkKey);
                parentNetwork.Devices.Add(new Small()
                {
                    Id = deviceIdentity, Name = device.Name
                });
                networkRepository.Update(parentNetwork);
            });

            return(deviceIdentity);
        }
Exemple #12
0
        public IEnumerable <Small> ListDevices(IEnumerable <string> ids)
        {
            var list              = new List <Small>();
            var allIds            = ids.ToList();
            var deviceRepository  = new DeviceRepository(_tableEntityOperation);
            var networkRepository = new GenericRepository <NetworkDevicesTableEntity>(_tableEntityOperation, "Network");

            // suppose that the different ids are from a small number of networks
            while (allIds.Any())
            {
                var deviceKey = PartionKeyRowKeyPair.CreateFromIdentity(allIds.First());

                var deviceTableEntity = deviceRepository.Get(deviceKey);
                if (deviceTableEntity == null)
                {
                    allIds.RemoveAt(0);
                    continue;
                }

                var networkKey = PartionKeyRowKeyPair.CreateFromIdentity(deviceTableEntity.NetworkId);
                var network    = networkRepository.Get(networkKey);

                list.AddRange(network.Devices.Where(d => allIds.Contains(d.Id)));
                var deviceIds = network.Devices.Select(d => d.Id).ToList();
                allIds.RemoveAll(deviceIds.Contains);
            }

            return(list);
        }
Exemple #13
0
        public CurrentDataTableEntity(PartionKeyRowKeyPair partitionKeyRowKeyPair, DateTime time, string payload)
        {
            PartitionKey = partitionKeyRowKeyPair.PartitionKey;
            RowKey       = partitionKeyRowKeyPair.RowKey;

            Time    = time;
            Payload = payload;
        }
Exemple #14
0
        public IList <Small> ListCompanies(string userIdentity)
        {
            var userKey = PartionKeyRowKeyPair.CreateFromIdentity(userIdentity);

            var userRepository = new UserRepository(_tableEntityOperation);

            return(userRepository.Get(userKey).Companies);
        }
Exemple #15
0
        public void Create(Setting setting)
        {
            var settingKey = new PartionKeyRowKeyPair(setting.Category, setting.Config);

            var settingRepository  = new SettingRepository(_tableEntityOperation);
            var settingTableEntity = new SettingTableEntity(settingKey, setting.Value);

            settingRepository.Create(settingTableEntity);
        }
Exemple #16
0
        public CompanyTableEntity(PartionKeyRowKeyPair partitionKeyRowKeyPair, string name, IList <SmallUser> users)
        {
            PartitionKey = partitionKeyRowKeyPair.PartitionKey;
            RowKey       = partitionKeyRowKeyPair.RowKey;

            Name  = name;
            Users = users;
            TelemetryDataSinkSettings = new TelemetryDataSinkSettings();
        }
Exemple #17
0
        public void Update(Network network)
        {
            var networkKey = PartionKeyRowKeyPair.CreateFromIdentity(network.Id);

            var networkRepository = new NetworkRepository(_tableEntityOperation);

            var networkTableEntity = networkRepository.Get(networkKey);

            if (networkTableEntity == null)
            {
                throw new NotFoundException();
            }

            networkTableEntity.Name = network.Name;
            networkTableEntity.TelemetryDataSinkSettings = network.TelemetryDataSinkSettings;

            networkRepository.Update(networkTableEntity);

            if (networkTableEntity.ParentNetworkId == null)
            {
                var serviceKey = PartionKeyRowKeyPair.CreateFromIdentity(networkTableEntity.ServiceId);

                TransientErrorHandling.Run(() =>
                {
                    var serviceRepository = new ServiceRepository(_tableEntityOperation);

                    var service = serviceRepository.Get(serviceKey);
                    for (var idx = 0; idx < service.Networks.Count; idx++)
                    {
                        if (service.Networks[idx].Id == network.Id)
                        {
                            service.Networks[idx].Name = network.Name;
                            break;
                        }
                    }
                    serviceRepository.Update(service);
                });
            }
            else
            {
                var parentNetworkKey = PartionKeyRowKeyPair.CreateFromIdentity(networkTableEntity.ParentNetworkId);

                TransientErrorHandling.Run(() =>
                {
                    var parentNetwork = networkRepository.Get(parentNetworkKey);
                    for (var idx = 0; idx < parentNetwork.Networks.Count; idx++)
                    {
                        if (parentNetwork.Networks[idx].Id == network.Id)
                        {
                            parentNetwork.Networks[idx].Name = network.Name;
                            break;
                        }
                    }
                    networkRepository.Update(parentNetwork);
                });
            }
        }
Exemple #18
0
        public IEnumerable <Small> ListDevices(string id)
        {
            var networkKey        = PartionKeyRowKeyPair.CreateFromIdentity(id);
            var networkRepository = new GenericRepository <NetworkDevicesTableEntity>(_tableEntityOperation, "Network");

            var network = networkRepository.Get(networkKey);

            return(network.Devices);
        }
Exemple #19
0
        public override void Record(TelemetryData message)
        {
            var currentDataRepository = new GenericRepository <CurrentDataTableEntity>(TableEntityOperation, TableName);

            var partitionKeyRowKeyPair = PartionKeyRowKeyPair.CreateFromIdentity(message.DeviceId);

            var currentDataTableEntity = new CurrentDataTableEntity(partitionKeyRowKeyPair, message.Time, message.Payload);

            currentDataRepository.Upsert(currentDataTableEntity);
        }
Exemple #20
0
        public ServiceTableEntity(PartionKeyRowKeyPair partitionKeyRowKeyPair, string name, string companyId, string apiKey)
        {
            PartitionKey = partitionKeyRowKeyPair.PartitionKey;
            RowKey       = partitionKeyRowKeyPair.RowKey;

            Name      = name;
            CompanyId = companyId;
            ApiKey    = apiKey;
            TelemetryDataSinkSettings = new TelemetryDataSinkSettings();
        }
Exemple #21
0
        public string Get(PartionKeyRowKeyPair partitionKeyRowKeyPair)
        {
            var partition = _entities.GetOrAdd(partitionKeyRowKeyPair.PartitionKey, new ConcurrentDictionary <string, string>());

            string currentValue;

            partition.TryGetValue(partitionKeyRowKeyPair.RowKey, out currentValue);

            return(currentValue);
        }
Exemple #22
0
        public void Delete(string id)
        {
            var networkKey = PartionKeyRowKeyPair.CreateFromIdentity(id);

            var networkRepository = new NetworkRepository(_tableEntityOperation);

            var networkTableEntity = networkRepository.Get(networkKey);

            if (networkTableEntity == null)
            {
                throw new NotFoundException();
            }

            var serviceKey       = PartionKeyRowKeyPair.CreateFromIdentity(networkTableEntity.ServiceId);
            var parentNetworkKey = networkTableEntity.ParentNetworkId != null
                ? PartionKeyRowKeyPair.CreateFromIdentity(networkTableEntity.ParentNetworkId)
                : null;

            networkRepository.Delete(networkTableEntity);

            if (parentNetworkKey == null)
            {
                TransientErrorHandling.Run(() =>
                {
                    var serviceRepository = new ServiceRepository(_tableEntityOperation);

                    var service = serviceRepository.Get(serviceKey);
                    for (var idx = 0; idx < service.Networks.Count; idx++)
                    {
                        if (service.Networks[idx].Id == id)
                        {
                            service.Networks.RemoveAt(idx);
                            break;
                        }
                    }
                    serviceRepository.Update(service);
                });
            }
            else
            {
                TransientErrorHandling.Run(() =>
                {
                    var parentNetwork = networkRepository.Get(parentNetworkKey);
                    for (var idx = 0; idx < parentNetwork.Networks.Count; idx++)
                    {
                        if (parentNetwork.Networks[idx].Id == id)
                        {
                            parentNetwork.Networks.RemoveAt(idx);
                            break;
                        }
                    }
                    networkRepository.Update(parentNetwork);
                });
            }
        }
Exemple #23
0
        public UserTableEntity(PartionKeyRowKeyPair partitionKeyRowKeyPair, string name, string email, IList <Small> companies, bool activated, string activationCode)
        {
            PartitionKey = partitionKeyRowKeyPair.PartitionKey;
            RowKey       = partitionKeyRowKeyPair.RowKey;

            Name           = name;
            Companies      = companies;
            Email          = email;
            Activated      = activated;
            ActivationCode = activationCode;
        }
        public TE Get <TE>(string tableName, PartionKeyRowKeyPair partionKeyRowKeyPair) where TE : TableEntity
        {
            var entity = InMemoryDatabase.Instance.Get(tableName).Get(partionKeyRowKeyPair);

            if (entity == null)
            {
                return(null);
            }

            return(Serializers.FromJsonString <TE>(entity));
        }
Exemple #25
0
        public NetworkTableEntity(PartionKeyRowKeyPair partitionKeyRowKeyPair, string name, string parentNetworkId, string serviceId, string companyId, string networkKey)
        {
            PartitionKey = partitionKeyRowKeyPair.PartitionKey;
            RowKey       = partitionKeyRowKeyPair.RowKey;

            Name                      = name;
            ParentNetworkId           = parentNetworkId;
            ServiceId                 = serviceId;
            CompanyId                 = companyId;
            NetworkKey                = networkKey;
            TelemetryDataSinkSettings = new TelemetryDataSinkSettings();
        }
Exemple #26
0
        public DeviceTableEntity(PartionKeyRowKeyPair partitionKeyRowKeyPair, string name, string networkId, string serviceId, string companyId, string deviceKey, long numericId)
        {
            PartitionKey = partitionKeyRowKeyPair.PartitionKey;
            RowKey       = partitionKeyRowKeyPair.RowKey;

            Name      = name;
            NetworkId = networkId;
            ServiceId = serviceId;
            CompanyId = companyId;
            DeviceKey = deviceKey;
            NumericId = numericId;
        }
Exemple #27
0
        public override void Record(TelemetryData message)
        {
            var timeSeriesRepository = new GenericRepository <TimeSeriesTableEntity>(TableEntityOperation, TableName);

            var partitionKey           = message.Time.ToString("yyyy-MM-dd") + "-" + message.DeviceId;
            var rowKey                 = message.Time.Ticks.ToString(CultureInfo.InvariantCulture);
            var partitionKeyRowKeyPair = new PartionKeyRowKeyPair(partitionKey, rowKey);

            var timeSeriesTableEntity = new TimeSeriesTableEntity(partitionKeyRowKeyPair, message.Payload);

            timeSeriesRepository.Create(timeSeriesTableEntity);
        }
Exemple #28
0
        public void Delete(SettingId id)
        {
            var settingKey = new PartionKeyRowKeyPair(id.Category, id.Config);

            var settingRepository  = new SettingRepository(_tableEntityOperation);
            var settingTableEntity = settingRepository.Get(settingKey);

            if (settingTableEntity == null)
            {
                throw new NotFoundException();
            }

            settingRepository.Delete(settingTableEntity);
        }
Exemple #29
0
        private static void CreateSettingIfNotExist(GenericRepository <SettingTableEntity> settingRepository,
                                                    SettingId settingId, string configurationSlot, string defaultValue)
        {
            var partitionKeyRowKeyPair = new PartionKeyRowKeyPair(settingId.Category, settingId.Config);

            if (settingRepository.Get(partitionKeyRowKeyPair) == null)
            {
                var value = SettingReolver.Instance.Resolve(configurationSlot, defaultValue);

                var settingTableEntity = new SettingTableEntity(settingId, value);
                settingRepository.Create(settingTableEntity);
                Console.WriteLine("Added {0}", settingId);
            }
        }
Exemple #30
0
        public void Update(User user)
        {
            var userKey = PartionKeyRowKeyPair.CreateFromIdentity(user.Id);

            var userRepository = new UserRepository(_tableEntityOperation);

            var userEntity = userRepository.Get(userKey);

            userEntity.Name           = user.Name;
            userEntity.Activated      = user.Activated;
            userEntity.ActivationCode = user.ActivationCode;

            userRepository.Update(userEntity);
        }