protected static void SetLinkedItem(string value, ReadingJournal journal, Action<ContentItem> setter, string versionKey = null) { int referencedItemID = int.Parse(value); if (referencedItemID != 0) { ContentItem referencedItem = journal.Find(referencedItemID); if (referencedItem != null) { setter(referencedItem); } else { journal.Register(referencedItemID, setter, relationType: "link"); } } else if (!string.IsNullOrEmpty(versionKey)) { ContentItem referencedItem = journal.Find(versionKey); if (referencedItem != null) { setter(referencedItem); } else { journal.Register(versionKey, setter); } } }
protected static void SetLinkedItem(string value, ReadingJournal journal, Action <ContentItem> setter, string versionKey = null) { int referencedItemID = int.Parse(value); if (referencedItemID != 0) { ContentItem referencedItem = journal.Find(referencedItemID); if (referencedItem != null) { setter(referencedItem); } else { journal.Register(referencedItemID, setter); } } else if (!string.IsNullOrEmpty(versionKey)) { ContentItem referencedItem = journal.Find(versionKey); if (referencedItem != null) { setter(referencedItem); } else { journal.Register(versionKey, setter); } } }
protected virtual void HandleParentRelation(ContentItem item, string parent, string parentVersionKey, ReadingJournal journal) { int parentID = 0; if (int.TryParse(parent, out parentID) && parentID != 0) { ContentItem parentItem = journal.Find(parentID); if (parentItem != null) { item.AddTo(parentItem); } else { journal.Register(parentID, (laterParent) => item.AddTo(laterParent), isChild: true); } } if (!string.IsNullOrEmpty(parentVersionKey)) { ContentItem parentItem = journal.Find(parentVersionKey); if (parentItem != null) { item.AddTo(parentItem); } else { journal.Register(parentVersionKey, (laterParent) => item.AddTo(laterParent), isChild: true); } } }
private void Handle(ContentItem item, ReadingJournal journal, string versionKey) { var child = journal.Find(versionKey); if (child != null) child.AddTo(item); else journal.Register(versionKey, (ci) => ci.AddTo(item), isChild: true); }
private static void Handle(ContentItem item, ReadingJournal journal, int id) { var child = journal.Find(id); if (child != null) child.AddTo(item); else journal.Register(id, (ci) => ci.AddTo(item), isChild: true); }
protected virtual void ReadDetail(XPathNavigator navigator, DetailCollection collection, ReadingJournal journal) { Dictionary <string, string> attributes = GetAttributes(navigator); Type type = Utility.TypeFromName(attributes["typeName"]); string meta = attributes.ContainsKey("meta") ? attributes["meta"] : null; if (type == typeof(ContentItem)) { int referencedItemID = int.Parse(navigator.Value); ContentItem referencedItem = journal.Find(referencedItemID); if (referencedItem != null) { collection.Add(ContentDetail.New( collection.EnclosingItem, attributes["name"], referencedItem, meta)); } else { journal.Register(referencedItemID, (item) => { collection.Add(ContentDetail.New( collection.EnclosingItem, attributes["name"], item, meta)); }, relationType: "collectionlink"); } } else if (type == typeof(Enum)) { if (!string.IsNullOrEmpty(meta)) { collection.Add(ContentDetail.New( collection.EnclosingItem, attributes["name"], Parse(navigator.Value, Type.GetType(meta)))); } } else if (type == typeof(IMultipleValue)) { var detail = detailReader.ReadMultipleValue(navigator, collection.EnclosingItem, journal, collection.Name); detail.Meta = meta; detail.AddTo(collection); } else { object value = Parse(navigator.Value, type); if (value is string) { value = detailReader.PrepareStringDetail(collection.EnclosingItem, collection.Name, value as string, attributes.ContainsKey("encoded") && Convert.ToBoolean(attributes["encoded"])); } collection.Add(ContentDetail.New(collection.EnclosingItem, attributes["name"], value, meta)); } }
protected virtual void HandleParentRelation(ContentItem item, string parent, ReadingJournal journal) { if (!string.IsNullOrEmpty(parent)) { int parentID = int.Parse(parent); ContentItem parentItem = journal.Find(parentID); item.AddTo(parentItem); } }
protected virtual void ReadDetail(XPathNavigator navigator, DetailCollection collection, ReadingJournal journal) { Dictionary<string, string> attributes = GetAttributes(navigator); Type type = Utility.TypeFromName(attributes["typeName"]); string meta = attributes.ContainsKey("meta") ? attributes["meta"] : null; if (type == typeof(ContentItem)) { int referencedItemID = int.Parse(navigator.Value); ContentItem referencedItem = journal.Find(referencedItemID); if (referencedItem != null) { collection.Add(ContentDetail.New( collection.EnclosingItem, attributes["name"], referencedItem, meta)); } else { journal.Register(referencedItemID, (item) => { collection.Add(ContentDetail.New( collection.EnclosingItem, attributes["name"], item, meta)); }, relationType: "collectionlink"); } } else if (type == typeof(Enum)) { if (meta != null) { collection.Add(ContentDetail.New( collection.EnclosingItem, attributes["name"], Parse(navigator.Value, Type.GetType(meta)))); } } else if (type == typeof(IMultipleValue)) { var detail = detailReader.ReadMultipleValue(navigator, collection.EnclosingItem, journal, collection.Name); detail.Meta = meta; detail.AddTo(collection); } else { object value = Parse(navigator.Value, type); if (value is string) value = detailReader.PrepareStringDetail(collection.EnclosingItem, collection.Name, value as string, attributes.ContainsKey("encoded") && Convert.ToBoolean(attributes["encoded"])); collection.Add(ContentDetail.New(collection.EnclosingItem, attributes["name"], value, meta)); } }
private void Handle(ContentItem item, ReadingJournal journal, string versionKey) { var child = journal.Find(versionKey); if (child != null) { child.AddTo(item); } else { journal.Register(versionKey, (ci) => ci.AddTo(item), isChild: true); } }
protected static void SetLinkedItem(string value, ReadingJournal journal, Action<ContentItem> setter) { int referencedItemID = int.Parse(value); ContentItem referencedItem = journal.Find(referencedItemID); if (referencedItem != null) { setter(referencedItem); } else { journal.Register(referencedItemID, setter); } }
private static void Handle(ContentItem item, ReadingJournal journal, int id) { var child = journal.Find(id); if (child != null) { child.AddTo(item); } else { journal.Register(id, (ci) => ci.AddTo(item), isChild: true); } }
protected virtual void ReadDetail(XPathNavigator navigator, DetailCollection collection, ReadingJournal journal) { Dictionary<string, string> attributes = GetAttributes(navigator); Type type = Utility.TypeFromName(attributes["typeName"]); if (type == typeof(ContentItem)) { int referencedItemID = int.Parse(navigator.Value); ContentItem referencedItem = journal.Find(referencedItemID); if (referencedItem != null) { collection.Add(ContentDetail.New( collection.EnclosingItem, attributes["name"], referencedItem)); } else { journal.Register(referencedItemID, (item) => { collection.Add(ContentDetail.New( collection.EnclosingItem, attributes["name"], item)); }); } } else if (type == typeof(Enum)) { if (attributes.ContainsKey("meta")) { collection.Add(ContentDetail.New( collection.EnclosingItem, attributes["name"], Parse(navigator.Value, Type.GetType(attributes["meta"])))); } } else if (type == typeof(IMultipleValue)) { detailReader.ReadMultipleValue(navigator, collection.EnclosingItem, journal, collection.Name).AddTo(collection); } else { collection.Add(ContentDetail.New( collection.EnclosingItem, attributes["name"], Parse(navigator.Value, type))); } }
protected virtual void ReadDetail(XPathNavigator navigator, ContentItem item, ReadingJournal journal) { Dictionary <string, string> attributes = GetAttributes(navigator); Type type = Utility.TypeFromName(attributes["typeName"]); string name = attributes["name"]; if (type != typeof(ContentItem)) { object value = Parse(navigator.Value, type); if (value is string) { value = PrepareStringDetail(item, name, value as string); } item[name] = value; //item.SetDetail(name, value, type); } else { int referencedItemID = int.Parse(navigator.Value); ContentItem referencedItem = journal.Find(referencedItemID); if (referencedItem != null) { item[name] = referencedItem; } else { EventHandler <ItemEventArgs> handler = null; handler = delegate(object sender, ItemEventArgs e) { if (e.AffectedItem.ID == referencedItemID) { item[name] = e.AffectedItem; journal.ItemAdded -= handler; } }; journal.ItemAdded += handler; } } }
protected virtual void ReadDetail(XPathNavigator navigator, DetailCollection collection, ReadingJournal journal) { Dictionary<string, string> attributes = GetAttributes(navigator); Type type = Utility.TypeFromName(attributes["typeName"]); if (type == typeof(ContentItem)) { int referencedItemID = int.Parse(navigator.Value); ContentItem referencedItem = journal.Find(referencedItemID); if (referencedItem != null) { collection.Add(ContentDetail.New( collection.EnclosingItem, attributes["name"], referencedItem)); } else { journal.ItemAdded += delegate(object sender, ItemEventArgs e) { if (e.AffectedItem.ID == referencedItemID) { collection.Add(ContentDetail.New( collection.EnclosingItem, attributes["name"], e.AffectedItem)); } }; } } else if (type == typeof(IMultipleValue)) { detailReader.ReadMultipleValue(navigator, collection.EnclosingItem, journal, collection.Name).AddTo(collection); } else { collection.Add(ContentDetail.New( collection.EnclosingItem, attributes["name"], Parse(navigator.Value, type))); } }
protected virtual void ReadDetail(XPathNavigator navigator, DetailCollection collection, ReadingJournal journal) { Dictionary <string, string> attributes = GetAttributes(navigator); Type type = Utility.TypeFromName(attributes["typeName"]); if (type == typeof(ContentItem)) { int referencedItemID = int.Parse(navigator.Value); ContentItem referencedItem = journal.Find(referencedItemID); if (referencedItem != null) { collection.Add(ContentDetail.New( collection.EnclosingItem, attributes["name"], referencedItem)); } else { journal.ItemAdded += delegate(object sender, ItemEventArgs e) { if (e.AffectedItem.ID == referencedItemID) { collection.Add(ContentDetail.New( collection.EnclosingItem, attributes["name"], e.AffectedItem)); } }; } } else if (type == typeof(IMultipleValue)) { detailReader.ReadMultipleValue(navigator, collection.EnclosingItem, journal, collection.Name).AddTo(collection); } else { collection.Add(ContentDetail.New( collection.EnclosingItem, attributes["name"], Parse(navigator.Value, type))); } }
protected virtual void ReadDetail(XPathNavigator navigator, ContentItem item, ReadingJournal journal) { Dictionary<string, string> attributes = GetAttributes(navigator); Type type = Utility.TypeFromName(attributes["typeName"]); string name = attributes["name"]; if (type != typeof(ContentItem)) { object value = Parse(navigator.Value, type); if (value is string) value = PrepareStringDetail(item, name, value as string); item[name] = value; //item.SetDetail(name, value, type); } else { int referencedItemID = int.Parse(navigator.Value); ContentItem referencedItem = journal.Find(referencedItemID); if (referencedItem != null) { item[name] = referencedItem; } else { EventHandler<ItemEventArgs> handler = null; handler = delegate(object sender, ItemEventArgs e) { if (e.AffectedItem.ID == referencedItemID) { item[name] = e.AffectedItem; journal.ItemAdded -= handler; } }; journal.ItemAdded += handler; } } }
protected static void SetLinkedItem(string value, ReadingJournal journal, Action<ContentItem> setter) { int referencedItemID = int.Parse(value); ContentItem referencedItem = journal.Find(referencedItemID); if (referencedItem != null) { setter(referencedItem); } else { EventHandler<ItemEventArgs> handler = null; handler = delegate(object sender, ItemEventArgs e) { if (e.AffectedItem.ID == referencedItemID) { setter(e.AffectedItem); journal.ItemAdded -= handler; } }; journal.ItemAdded += handler; } }
private static void SetLinkedItem(string value, ReadingJournal journal, Action <ContentItem> setter) { int referencedItemID = int.Parse(value); ContentItem referencedItem = journal.Find(referencedItemID); if (referencedItem != null) { setter(referencedItem); } else { EventHandler <ItemEventArgs> handler = null; handler = delegate(object sender, ItemEventArgs e) { if (e.AffectedItem.ID == referencedItemID) { setter(e.AffectedItem); journal.ItemAdded -= handler; } }; journal.ItemAdded += handler; } }
protected virtual void HandleParentRelation(ContentItem item, string parent, string parentVersionKey, ReadingJournal journal) { int parentID = 0; if (int.TryParse(parent, out parentID) && parentID != 0) { ContentItem parentItem = journal.Find(parentID); if (parentItem != null) item.AddTo(parentItem); else journal.Register(parentID, (laterParent) => item.AddTo(laterParent), isChild: true); } if (!string.IsNullOrEmpty(parentVersionKey)) { ContentItem parentItem = journal.Find(parentVersionKey); if (parentItem != null) item.AddTo(parentItem); else journal.Register(parentVersionKey, (laterParent) => item.AddTo(laterParent), isChild: true); } }
public static void Handle(ContentItem item, ReadingJournal journal, string id) { var child = journal.Find(id); Method(item, journal, id, child); }