CmisSync.Lib.Producer.Crawler.CrawlEventGenerator.GenerateEvents C# (CSharp) Метод

GenerateEvents() публичный Метод

public GenerateEvents ( DescendantsTreeCollection trees ) : CrawlEventCollection
trees DescendantsTreeCollection
Результат CrawlEventCollection
        public CrawlEventCollection GenerateEvents(DescendantsTreeCollection trees) {
            IObjectTree<IMappedObject> storedTree = trees.StoredTree;
            IObjectTree<IFileSystemInfo> localTree = trees.LocalTree;
            IObjectTree<IFileableCmisObject> remoteTree = trees.RemoteTree;
            CrawlEventCollection createdEvents = new CrawlEventCollection();
            List<IMappedObject> storedObjectsForRemote = storedTree.ToList();
            List<IMappedObject> storedObjectsForLocal = new List<IMappedObject>(storedObjectsForRemote);
            ISet<IMappedObject> handledLocalStoredObjects = new HashSet<IMappedObject>();
            ISet<IMappedObject> handledRemoteStoredObjects = new HashSet<IMappedObject>();
            Dictionary<string, Tuple<AbstractFolderEvent, AbstractFolderEvent>> eventMap = new Dictionary<string, Tuple<AbstractFolderEvent, AbstractFolderEvent>>();
            createdEvents.creationEvents = this.remoteEventGenerator.CreateEvents(storedObjectsForRemote, remoteTree, eventMap, handledRemoteStoredObjects);
            createdEvents.creationEvents.AddRange(this.localEventGenerator.CreateEvents(storedObjectsForLocal, localTree, eventMap, handledLocalStoredObjects));

            createdEvents.mergableEvents = eventMap;

            handledLocalStoredObjects.Add(storedTree.Item);
            handledRemoteStoredObjects.Add(storedTree.Item);

            foreach (var handledObject in handledLocalStoredObjects) {
                storedObjectsForLocal.Remove(handledObject);
            }

            foreach (var handledObject in handledRemoteStoredObjects) {
                storedObjectsForRemote.Remove(handledObject);
            }

            this.AddDeletedObjectsToMergableEvents(storedObjectsForLocal, eventMap, true);
            this.AddDeletedObjectsToMergableEvents(storedObjectsForRemote, eventMap, false);

            return createdEvents;
        }