public void Save(MessageTraceBatch messageTraceBatch)
        {
            if (messageTraceBatch == null)
            {
                throw new ArgumentNullException("messageTraceBatch");
            }
            IHashBucket hashBucket = this.DataProvider as IHashBucket;

            if (hashBucket != null)
            {
                Dictionary <object, List <MessageTrace> > dictionary = DalHelper.SplitByPhysicalInstance <MessageTrace>(hashBucket, MessageTraceSchema.OrganizationalUnitRootProperty, messageTraceBatch.ToList <MessageTrace>(), CommonMessageTraceSchema.HashBucketProperty);
                foreach (object obj in dictionary.Keys)
                {
                    dictionary[obj].Sort();
                    IEnumerable <List <MessageTrace> > optimizedBathesForSave = this.GetOptimizedBathesForSave(dictionary[obj]);
                    foreach (List <MessageTrace> messageList in optimizedBathesForSave)
                    {
                        MessageTraceForSaveDataSet instance = MessageTraceForSaveDataSet.CreateDataSet(obj, null, messageList, messageTraceBatch.PersistentStoreCopyId);
                        this.DataProvider.Save(instance);
                    }
                }
                return;
            }
            if (messageTraceBatch.OrganizationalUnitRoot == null)
            {
                throw new ArgumentException("MessageTraceBatch.OrganizationalUnitRoot should have valid TenantId");
            }
            foreach (MessageTrace messageTrace in messageTraceBatch)
            {
                messageTrace[CommonMessageTraceSchema.HashBucketProperty] = 1;
            }
            MessageTraceForSaveDataSet instance2 = MessageTraceForSaveDataSet.CreateDataSet(null, messageTraceBatch.OrganizationalUnitRoot, messageTraceBatch, null);

            this.DataProvider.Save(instance2);
        }
        public void Save(IEnumerable <MessageTrafficTypeMapping> messageTrafficTypeMappingBatch, int?persistentStoreCopyId = null)
        {
            if (messageTrafficTypeMappingBatch == null)
            {
                throw new ArgumentNullException("messageTrafficTypeMappingBatch");
            }
            IHashBucket hashBucket = this.DataProvider as IHashBucket;

            if (hashBucket == null)
            {
                throw new NotSupportedException(string.Format("Save(MessageTrafficTypeMapping) is not supported for DataProvider: {0}", this.DataProvider.GetType()));
            }
            foreach (MessageTrafficTypeMapping messageTrafficTypeMapping in messageTrafficTypeMappingBatch)
            {
                messageTrafficTypeMapping[CommonReportingSchema.DomainHashKeyProp]  = new byte[0];
                messageTrafficTypeMapping[CommonReportingSchema.DataSourceProperty] = (messageTrafficTypeMapping.DataSource ?? "EXO");
            }
            Dictionary <object, List <MessageTrafficTypeMapping> > dictionary = DalHelper.SplitByPhysicalInstance <MessageTrafficTypeMapping>(hashBucket, CommonReportingSchema.OrganizationalUnitRootProperty, messageTrafficTypeMappingBatch, DalHelper.HashBucketProp);

            foreach (object obj in dictionary.Keys)
            {
                MessageTrafficTypeMappings messageTrafficTypeMappings = new MessageTrafficTypeMappings(dictionary[obj]);
                messageTrafficTypeMappings[DalHelper.PhysicalInstanceKeyProp] = obj;
                if (persistentStoreCopyId != null)
                {
                    messageTrafficTypeMappings[DalHelper.FssCopyIdProp] = persistentStoreCopyId;
                }
                this.DataProvider.Save(messageTrafficTypeMappings);
            }
        }
        internal void Save(IEnumerable <AggPolicyTrafficData> aggPolicyTrafficDataBatch, int?persistentStoreCopyId = null)
        {
            if (aggPolicyTrafficDataBatch == null)
            {
                throw new ArgumentNullException("aggPolicyTrafficDataBatch");
            }
            IHashBucket hashBucket = this.DataProvider as IHashBucket;

            if (hashBucket == null)
            {
                throw new NotSupportedException(string.Format("Save(AggPolicyTrafficData) is not supported for DataProvider: {0}", this.DataProvider.GetType()));
            }
            foreach (AggPolicyTrafficData aggPolicyTrafficData in aggPolicyTrafficDataBatch)
            {
                aggPolicyTrafficData[CommonReportingSchema.DomainHashKeyProp]  = new byte[0];
                aggPolicyTrafficData[CommonReportingSchema.DataSourceProperty] = (aggPolicyTrafficData.DataSource ?? "EXO");
            }
            Dictionary <object, List <AggPolicyTrafficData> > dictionary = DalHelper.SplitByPhysicalInstance <AggPolicyTrafficData>(hashBucket, CommonReportingSchema.OrganizationalUnitRootProperty, aggPolicyTrafficDataBatch, DalHelper.HashBucketProp);

            foreach (object obj in dictionary.Keys)
            {
                AggPolicyTrafficDatas aggPolicyTrafficDatas = new AggPolicyTrafficDatas(dictionary[obj]);
                aggPolicyTrafficDatas[DalHelper.PhysicalInstanceKeyProp] = obj;
                if (persistentStoreCopyId != null)
                {
                    aggPolicyTrafficDatas[DalHelper.FssCopyIdProp] = persistentStoreCopyId;
                }
                this.DataProvider.Save(aggPolicyTrafficDatas);
            }
        }
        public object GetPartitionId(string hashKey)
        {
            IHashBucket hashBucket = this.DataProvider as IHashBucket;

            if (hashBucket == null)
            {
                throw new NotSupportedException(string.Format("Not supported for DataProvider type: {0}", this.DataProvider.GetType()));
            }
            int logicalHash = hashBucket.GetLogicalHash(hashKey);

            return(hashBucket.GetPhysicalInstanceIdByHashValue(logicalHash));
        }
        public void Save(UnifiedPolicyTraceBatch traceBatch)
        {
            if (traceBatch == null)
            {
                throw new ArgumentNullException("traceBatch");
            }
            IHashBucket hashBucket = this.DataProvider as IHashBucket;

            if (hashBucket != null)
            {
                Dictionary <object, List <UnifiedPolicyTrace> > dictionary = DalHelper.SplitByPhysicalInstance <UnifiedPolicyTrace>(hashBucket, UnifiedPolicyCommonSchema.OrganizationalUnitRootProperty, traceBatch.ToList <UnifiedPolicyTrace>(), UnifiedPolicyCommonSchema.HashBucketProperty);
                foreach (object obj in dictionary.Keys)
                {
                    dictionary[obj].Sort();
                    UnifiedPolicyForSaveDataSet instance = UnifiedPolicyForSaveDataSet.CreateDataSet(obj, dictionary[obj], traceBatch.PersistentStoreCopyId);
                    this.DataProvider.Save(instance);
                }
            }
        }
        internal void Save(IEnumerable <DeviceData> deviceDataBatch, int?persistentStoreCopyId = null)
        {
            if (deviceDataBatch == null)
            {
                throw new ArgumentNullException("deviceDataBatch");
            }
            IHashBucket hashBucket = this.DataProvider as IHashBucket;

            if (hashBucket == null)
            {
                foreach (DeviceData deviceData in deviceDataBatch)
                {
                    deviceData[DeviceCommonSchema.HashBucketProperty] = 1;
                }
                using (IEnumerator <DeviceData> enumerator2 = deviceDataBatch.GetEnumerator())
                {
                    while (enumerator2.MoveNext())
                    {
                        DeviceData instance = enumerator2.Current;
                        this.DataProvider.Save(instance);
                    }
                    return;
                }
            }
            Dictionary <object, List <DeviceData> > dictionary = DalHelper.SplitByPhysicalInstance <DeviceData>(hashBucket, DeviceCommonSchema.OrganizationalUnitRootProperty, deviceDataBatch, DeviceCommonSchema.HashBucketProperty);

            foreach (object obj in dictionary.Keys)
            {
                DeviceDataBatch deviceDataBatch2 = new DeviceDataBatch(dictionary[obj]);
                deviceDataBatch2[DalHelper.PhysicalInstanceKeyProp] = obj;
                if (persistentStoreCopyId != null)
                {
                    deviceDataBatch2[DalHelper.FssCopyIdProp] = persistentStoreCopyId;
                }
                this.DataProvider.Save(deviceDataBatch2);
            }
        }