Пример #1
0
        private static DataRemovalProcessor.ProcessingContext GetAncestorContext(DataRemovalProcessor.ProcessingContext context, int maxLevel, ITypeId ancestorType)
        {
            int num = maxLevel;

            for (DataRemovalProcessor.ProcessingContext parentContext = context.ParentContext; parentContext != null && num > 0; --num)
            {
                if (ancestorType.IsAssignableFrom((ITypeId)parentContext.NodeInfo.Node.Type))
                {
                    return(parentContext);
                }
                parentContext = parentContext.ParentContext;
            }
            return((DataRemovalProcessor.ProcessingContext)null);
        }
Пример #2
0
 private void CheckForDeletion(DataRemovalProcessor.ProcessingContext context)
 {
     if (!this.ShouldRemoveNode(context.NodeInfo.Node))
     {
         return;
     }
     DataRemovalProcessor.ProcessingContext processingContext1 = DataRemovalProcessor.GetAncestorContextToDelete(context);
     if (processingContext1 == null)
     {
         processingContext1 = context;
     }
     else
     {
         for (DataRemovalProcessor.ProcessingContext processingContext2 = context; processingContext2 != processingContext1; processingContext2 = processingContext2.ParentContext)
         {
             processingContext2.IsDeleted = true;
         }
     }
     processingContext1.IsDeleted = true;
     this.documentNodesRemove.Add(processingContext1.NodeInfo);
 }
Пример #3
0
 private void FindNodesToDelete(DataRemovalProcessor.ProcessingContext context)
 {
     this.CheckForDeletion(context);
     if (context.IsDeleted)
     {
         return;
     }
     foreach (KeyValuePair <IProperty, DocumentNode> keyValuePair in (IEnumerable <KeyValuePair <IProperty, DocumentNode> >)context.NodeInfo.Node.Properties)
     {
         DocumentCompositeNode node = keyValuePair.Value as DocumentCompositeNode;
         if (node != null)
         {
             this.FindNodesToDelete(new DataRemovalProcessor.ProcessingContext(context, node, keyValuePair.Key));
             if (context.IsDeleted)
             {
                 return;
             }
         }
     }
     if (!context.NodeInfo.Node.SupportsChildren)
     {
         return;
     }
     for (int index = 0; index < context.NodeInfo.Node.Children.Count; ++index)
     {
         DocumentCompositeNode node = context.NodeInfo.Node.Children[index] as DocumentCompositeNode;
         if (node != null)
         {
             this.FindNodesToDelete(new DataRemovalProcessor.ProcessingContext(context, node, index));
             if (context.IsDeleted)
             {
                 break;
             }
         }
     }
 }
Пример #4
0
 public ProcessingContext(DataRemovalProcessor.ProcessingContext parent, DocumentCompositeNode node, int index)
 {
     this.ParentContext = parent;
     this.NodeInfo      = new DataRemovalProcessor.DocumentNodeInfo(node, index);
 }
Пример #5
0
 public ProcessingContext(DataRemovalProcessor.ProcessingContext parent, DocumentCompositeNode node, IProperty property)
 {
     this.ParentContext = parent;
     this.NodeInfo      = new DataRemovalProcessor.DocumentNodeInfo(node, property);
 }
Пример #6
0
 private static DataRemovalProcessor.ProcessingContext GetAncestorContextToDelete(DataRemovalProcessor.ProcessingContext context)
 {
     return(DataRemovalProcessor.GetAncestorContext(context, 1, PlatformTypes.DictionaryEntry) ?? DataRemovalProcessor.GetAncestorContext(context, 3, PlatformTypes.Binding) ?? (DataRemovalProcessor.ProcessingContext)null);
 }