Ejemplo n.º 1
0
        private DirectoryInfoData GetDirectoryInfo(string path)
        {
            DirectoryInfoData data = new DirectoryInfoData
            {
                FilesCount    = new NumericValue <int>(0, 0, int.MaxValue),
                ItemTypes     = ItemType.Undefined,
                LastItemId    = new NumericValue <int>(0, 0, int.MaxValue),
                FirstUnusedId = new NumericValue <int>(0, 0, int.MaxValue),
            };

            try
            {
                var ids = new List <bool> {
                    true
                };
                foreach (var file in Directory.EnumerateFiles(path, "*.json", SearchOption.TopDirectoryOnly))
                {
                    var text = File.ReadAllText(file);
                    var item = JsonConvert.DeserializeObject <SerializableItem>(text);

                    data.FilesCount.Value++;

                    if (item.ItemType == ItemType.Undefined)
                    {
                        continue;
                    }

                    if (ids.Count <= item.Id)
                    {
                        ids.AddRange(Enumerable.Repeat(false, item.Id - ids.Count + 1));
                    }
                    ids[item.Id] = true;

                    if (data.ItemTypes == ItemType.Undefined)
                    {
                        data.ItemTypes = item.ItemType;
                    }
                }

                data.LastItemId.Value = ids.Count - 1;
                var index = ids.IndexOf(false);
                data.FirstUnusedId.Value = index > 0 ? index : ids.Count;
            }
            catch (Exception e)
            {
            }

            return(data);
        }
Ejemplo n.º 2
0
        private DirectoryInfoData GetDirectoryInfo(string path)
        {
            DirectoryInfoData data = new DirectoryInfoData
            {
                FilesCount    = new NumericValue <int>(0, 0, int.MaxValue),
                ItemTypes     = ItemType.Undefined,
                LastItemId    = new NumericValue <int>(0, 0, int.MaxValue),
                FirstUnusedId = new NumericValue <int>(0, 0, int.MaxValue),
            };

            try
            {
                var ids = new HashSet <int>();
                var top = 0;
                foreach (var file in Directory.EnumerateFiles(path, "*.json", SearchOption.TopDirectoryOnly))
                {
                    var text = File.ReadAllText(file);
                    var item = JsonConvert.DeserializeObject <SerializableItem>(text);

                    data.FilesCount.Value++;

                    if (item.ItemType == ItemType.Undefined)
                    {
                        continue;
                    }

                    ids.Add(item.Id);
                    top = Math.Max(top, item.Id);

                    if (data.ItemTypes == ItemType.Undefined)
                    {
                        data.ItemTypes = item.ItemType;
                    }
                }

                data.LastItemId.Value = top;
                var index = 0;
                while (ids.Contains(index))
                {
                    index++;
                }
                data.FirstUnusedId.Value = index > 0 ? index : top + 1;
            }
            catch (Exception e)
            {
            }

            return(data);
        }