CmisSync.Lib.RemoteEventGenerator.CreateEvents C# (CSharp) Method

CreateEvents() public method

Creates the local events and returns the creationEvents, the other Events are stored in the eventMap, handled objects are removed from storedObjects.
public CreateEvents ( List storedObjects, IObjectTree remoteTree, AbstractFolderEvent>.Dictionary eventMap, ISet handledStoredObjects ) : List
storedObjects List /// Stored objects. ///
remoteTree IObjectTree /// Remote tree. ///
eventMap AbstractFolderEvent>.Dictionary /// Event map. ///
handledStoredObjects ISet
return List
        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;
        }