Example #1
0
 public Data.Node Load(Storage storage, Data.Node data)
 {
     if (data is Data.Collection)
         for (int i = 0; i < (data as Data.Collection).Nodes.Count; i++)
             (data as Data.Collection).Nodes[i] = this.Load(storage, (data as Data.Collection).Nodes[i]);
     else if (data is Data.Branch)
     {
         Kean.Collection.IDictionary<string, Data.Node> nodes = new Kean.Collection.Dictionary<string, Data.Node>((data as Data.Branch).Nodes.Count);
         foreach (Data.Node child in (data as Data.Branch).Nodes)
         {
             Data.Node n = nodes[child.Name];
             if (n.IsNull())
                 nodes[child.Name] = child;
             else if (n is Data.Collection)
                 (n as Data.Collection).Nodes.Add(child.UpdateLocators((string)child.Locator + "[" + (n as Data.Collection).Nodes.Count + "]"));
             else
             {
                 Data.Collection collection = new Data.Collection() { Name = child.Name, Locator = child.Locator, Region = child.Region }; // TODO: include all children in region
                 collection.Nodes.Add(n.UpdateLocators((string)n.Locator + "[0]"));
                 collection.Nodes.Add(child.UpdateLocators((string)child.Locator + "[1]"));
                 nodes[child.Name] = collection;
             }
         }
         (data as Data.Branch).Nodes.Clear();
         foreach (KeyValue<string, Data.Node> n in nodes)
             (data as Data.Branch).Nodes.Add(this.Load(storage, n.Value));
     }
     return data;
 }
Example #2
0
 public Data.Node Serialize(IStorage storage, Reflect.Type type, object data, Uri.Locator locator)
 {
     Data.Collection result = new Data.Collection(data, type);
     Reflect.Type elementType = this.GetElementType(type);
     int c = 0;
     foreach (object child in data as System.Collections.IEnumerable)
     {
         Uri.Locator l = null;
         if (locator.NotNull())
         {
             l = locator.Copy();
             l.Fragment = (l.Fragment.NotEmpty() ? l.Fragment + "/" : "") + (c++).ToString();
         }
         result.Nodes.Add(storage.Serialize(elementType, child, l));
     }
     return result;
 }
Example #3
0
 public static CollectionList FromDataCollection(Data.Collection collection, int foundCount, Image collectionThumbnail)
 {
     return(new CollectionList
     {
         DatabaseId = collection.Id,
         Collection = new DataToken
         {
             Text = collection.Name,
             Value = collection.RoadieId.ToString()
         },
         Id = collection.RoadieId,
         CollectionCount = collection.CollectionCount,
         CollectionType = (collection.CollectionType ?? Enums.CollectionType.Unknown).ToString(),
         CollectionFoundCount = foundCount,
         CreatedDate = collection.CreatedDate,
         IsLocked = collection.IsLocked,
         LastUpdated = collection.LastUpdated,
         Thumbnail = collectionThumbnail
     });
 }