Ejemplo n.º 1
0
        public override void IndexDoUpdateEntry(SchemaDescriptor descriptor, long nodeId, ValueTuple propertiesBefore, ValueTuple propertiesAfter)
        {
            NodeStateImpl nodeState = GetOrCreateNodeState(nodeId);
            IDictionary <ValueTuple, MutableLongDiffSets> updates = GetOrCreateIndexUpdatesByDescriptor(descriptor);

            if (propertiesBefore != null)
            {
                MutableLongDiffSets before = GetOrCreateIndexUpdatesForSeek(updates, propertiesBefore);
                //noinspection ConstantConditions
                before.Remove(nodeId);
                if (before.Removed.contains(nodeId))
                {
                    nodeState.AddIndexDiff(before);
                }
                else
                {
                    nodeState.RemoveIndexDiff(before);
                }
            }
            if (propertiesAfter != null)
            {
                MutableLongDiffSets after = GetOrCreateIndexUpdatesForSeek(updates, propertiesAfter);
                //noinspection ConstantConditions
                after.Add(nodeId);
                if (after.Added.contains(nodeId))
                {
                    nodeState.AddIndexDiff(after);
                }
                else
                {
                    nodeState.RemoveIndexDiff(after);
                }
            }
        }