public List<AbstractFolderEvent> CreateEvents(
List<IMappedObject> storedObjects,
IObjectTree<IFileableCmisObject> remoteTree,
Dictionary<string, Tuple<AbstractFolderEvent, AbstractFolderEvent>> eventMap,
ISet<IMappedObject> handledStoredObjects)
{
List<AbstractFolderEvent> createdEvents = new List<AbstractFolderEvent>();
var storedParent = storedObjects.Find(o => o.RemoteObjectId == remoteTree.Item.Id);
foreach (var child in remoteTree.Children) {
var storedMappedChild = storedObjects.Find(o => o.RemoteObjectId == child.Item.Id);
if (storedMappedChild != null) {
AbstractFolderEvent newEvent = this.CreateRemoteEventBasedOnStorage(child.Item, storedParent, storedMappedChild);
eventMap[child.Item.Id] = new Tuple<AbstractFolderEvent, AbstractFolderEvent>(null, newEvent);
} else {
// Added
AbstractFolderEvent addEvent = FileOrFolderEventFactory.CreateEvent(child.Item, null, MetaDataChangeType.CREATED, src: this);
createdEvents.Add(addEvent);
}
createdEvents.AddRange(this.CreateEvents(storedObjects, child, eventMap, handledStoredObjects));
if (storedMappedChild != null) {
handledStoredObjects.Add(storedMappedChild);
}
}
return createdEvents;
}