@@ -708,3 +708,126 @@ function setSolvable!(dfg::CloudGraphsDFG, sym::Symbol, solvable::Int)::Int
708
708
solvable)
709
709
return solvable
710
710
end
711
+
712
+
713
+ # #==============================================================================
714
+ # # TAGS as a set, list, merge, remove, empty
715
+ # # CloudGraphsDFG functions
716
+ # #==============================================================================
717
+ function mergeTags! (dfg:: CloudGraphsDFG , sym:: Symbol , tags:: Vector{Symbol} )
718
+
719
+ if isVariable (dfg,sym)
720
+ getNode = getVariable
721
+ updateNode! = updateVariable!
722
+ else
723
+ getNode = getFactor
724
+ updateNode! = updateFactor!
725
+ end
726
+
727
+ node = getNode (dfg, sym)
728
+ union! (getTags (node), tags)
729
+
730
+ updateNode! (dfg, node)
731
+
732
+ return getTags (getNode (dfg, sym))
733
+
734
+ end
735
+
736
+ function removeTags! (dfg:: CloudGraphsDFG , sym:: Symbol , tags:: Vector{Symbol} )
737
+
738
+ if isVariable (dfg,sym)
739
+ getNode = getVariable
740
+ updateNode! = updateVariable!
741
+ else
742
+ getNode = getFactor
743
+ updateNode! = updateFactor!
744
+ end
745
+
746
+ node = getNode (dfg, sym)
747
+ setdiff! (getTags (node), tags)
748
+
749
+ updateNode! (dfg, node)
750
+
751
+ return getTags (getNode (dfg, sym))
752
+
753
+ end
754
+
755
+ function emptyTags! (dfg:: CloudGraphsDFG , sym:: Symbol )
756
+
757
+ if isVariable (dfg,sym)
758
+ getNode = getVariable
759
+ updateNode! = updateVariable!
760
+ else
761
+ getNode = getFactor
762
+ updateNode! = updateFactor!
763
+ end
764
+
765
+ node = getNode (dfg, sym)
766
+ empty! (getTags (node))
767
+
768
+ updateNode! (dfg, node)
769
+
770
+ return getTags (getNode (dfg, sym))
771
+
772
+ end
773
+
774
+
775
+
776
+ function RESERVED_mergeTags! (dfg:: CloudGraphsDFG , sym:: Symbol , tags:: Vector{Symbol} )
777
+
778
+ nodeId = _tryGetNeoNodeIdFromNodeLabel (dfg. neo4jInstance,
779
+ dfg. userId,
780
+ dfg. robotId,
781
+ dfg. sessionId,
782
+ sym)
783
+
784
+ neo4jNode = Neo4j. getnode (dfg. neo4jInstance. graph, nodeId)
785
+
786
+ addnodelabels (neo4jNode, string .(tags))
787
+
788
+ return Set (setdiff (Symbol .(getnodelabels (neo4jNode)), Symbol .([dfg. userId, dfg. robotId, dfg. sessionId]), [sym]))
789
+
790
+ end
791
+
792
+
793
+ function RESERVED_removeTags! (dfg:: CloudGraphsDFG , sym:: Symbol , tags:: Vector{Symbol} )
794
+
795
+ nodeId = _tryGetNeoNodeIdFromNodeLabel (dfg. neo4jInstance,
796
+ dfg. userId,
797
+ dfg. robotId,
798
+ dfg. sessionId,
799
+ sym)
800
+
801
+ neo4jNode = Neo4j. getnode (dfg. neo4jInstance. graph, nodeId)
802
+
803
+ shouldStay = Symbol .([dfg. userId, dfg. robotId, dfg. sessionId]) ∪ [sym, :VARIABLE , :FACTOR ]
804
+
805
+ for tag in tags
806
+ if tag in shouldStay
807
+ @warn (" Label:$tag is not allowed to be removed from tags and will be ignored." )
808
+ else
809
+ deletenodelabel (neo4jNode, string (tag))
810
+ end
811
+ end
812
+
813
+ return Set (setdiff (Symbol .(getnodelabels (neo4jNode)), shouldStay))
814
+
815
+ end
816
+
817
+
818
+ function RESERVED_emptyTags! (dfg:: CloudGraphsDFG , sym:: Symbol )
819
+
820
+ nodeId = _tryGetNeoNodeIdFromNodeLabel (dfg. neo4jInstance,
821
+ dfg. userId,
822
+ dfg. robotId,
823
+ dfg. sessionId,
824
+ sym)
825
+
826
+ neo4jNode = Neo4j. getnode (dfg. neo4jInstance. graph, nodeId)
827
+
828
+ shouldStay = Symbol .([dfg. userId, dfg. robotId, dfg. sessionId]) ∪ [sym, :VARIABLE , :FACTOR ]
829
+ tags = setdiff (Symbol .(getnodelabels (neo4jNode)), shouldStay)
830
+ # tags = Symbol.(getnodelabels(neo4jNode))
831
+
832
+ return removeTags! (dfg, sym, tags)
833
+ end
0 commit comments