Skip to content

Commit 4792539

Browse files
committed
GraphsDFG and LightGraphsDFG implementation of user/robot/session data
1 parent bca01e6 commit 4792539

File tree

7 files changed

+85
-3
lines changed

7 files changed

+85
-3
lines changed

src/GraphsDFG/entities/GraphsDFG.jl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ mutable struct GraphsDFG{T <: AbstractParams} <: AbstractDFG
1414
userId::String
1515
robotId::String
1616
sessionId::String
17+
userData::Dict{Symbol, String}
18+
robotData::Dict{Symbol, String}
19+
sessionData::Dict{Symbol, String}
1720
nodeCounter::Int64
1821
labelDict::Dict{Symbol, Int64}
1922
addHistory::Vector{Symbol} #TODO: Discuss more - is this an audit trail?
@@ -28,4 +31,7 @@ GraphsDFG{T}( g::FGType=Graphs.incdict(GraphsNode,is_directed=false),
2831
userId::String = "UserID",
2932
robotId::String = "robotID",
3033
sessionId::String = "sessionID",
31-
params::T=NoSolverParams()) where T <: AbstractParams = GraphsDFG{T}(g, d, userId, robotId, sessionId, n, l, a, params)
34+
userData::Dict{Symbol, String} = Dict{Symbol, String}(),
35+
robotData::Dict{Symbol, String} = Dict{Symbol, String}(),
36+
sessionData::Dict{Symbol, String} = Dict{Symbol, String}(),
37+
params::T=NoSolverParams()) where T <: AbstractParams = GraphsDFG{T}(g, d, userId, robotId, sessionId, userData, robotData, sessionData, n, l, a, params)

src/GraphsDFG/services/GraphsDFG.jl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,23 @@ function setSolverParams(dfg::GraphsDFG, solverParams::T) where T <: AbstractPar
2626
dfg.solverParams = solverParams
2727
end
2828

29+
# Get user, robot, and session "small" data.
30+
getUserData(dfg::GraphsDFG)::Dict{Symbol, String} = return dfg.userData
31+
function setUserData(dfg::GraphsDFG, data::Dict{Symbol, String})::Bool
32+
dfg.userData = data
33+
return true
34+
end
35+
getRobotData(dfg::GraphsDFG)::Dict{Symbol, String} = return dfg.robotData
36+
function setRobotData(dfg::GraphsDFG, data::Dict{Symbol, String})::Bool
37+
dfg.robotData = data
38+
return true
39+
end
40+
getSessionData(dfg::GraphsDFG)::Dict{Symbol, String} = return dfg.sessionData
41+
function setSessionData(dfg::GraphsDFG, data::Dict{Symbol, String})::Bool
42+
dfg.sessionData = data
43+
return true
44+
end
45+
2946
"""
3047
$(SIGNATURES)
3148
Gets an empty and unique CloudGraphsDFG derived from an existing DFG.

src/LightDFG/LightDFG.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ import ...DistributedFactorGraphs: setSolverParams,
1111
getFactor,
1212
setDescription,
1313
getLabelDict,
14+
getUserData,
15+
setUserData,
16+
getRobotData,
17+
setRobotData,
18+
getSessionData,
19+
setSessionData,
1420
addVariable!,
1521
getVariable,
1622
getAddHistory,

src/LightDFG/entities/LightDFG.jl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ mutable struct LightDFG{T <: AbstractParams, V <: AbstractDFGVariable, F <:Abstr
1313
userId::String
1414
robotId::String
1515
sessionId::String
16+
userData::Dict{Symbol, String}
17+
robotData::Dict{Symbol, String}
18+
sessionData::Dict{Symbol, String}
1619
addHistory::Vector{Symbol} #TODO: Discuss more - is this an audit trail?
1720
solverParams::T # Solver parameters
1821
end
@@ -30,9 +33,12 @@ function LightDFG{T,V,F}(g::FactorGraph{Int,V,F}=FactorGraph{Int,V,F}();
3033
userId::String="User ID",
3134
robotId::String="Robot ID",
3235
sessionId::String="Session ID",
36+
userData::Dict{Symbol, String} = Dict{Symbol, String}(),
37+
robotData::Dict{Symbol, String} = Dict{Symbol, String}(),
38+
sessionData::Dict{Symbol, String} = Dict{Symbol, String}(),
3339
params::T=NoSolverParams()) where {T <: AbstractParams, V <:AbstractDFGVariable, F<:AbstractDFGFactor}
3440

35-
LightDFG{T,V,F}(g, description, userId, robotId, sessionId, Symbol[], params)
41+
LightDFG{T,V,F}(g, description, userId, robotId, sessionId, userData, robotData, sessionData, Symbol[], params)
3642
end
3743

3844
# LightDFG{T}(; kwargs...) where T <: AbstractParams = LightDFG{T,DFGVariable,DFGFactor}(;kwargs...)

src/LightDFG/services/LightDFG.jl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,23 @@ function setSolverParams(dfg::LightDFG, solverParams::P) where P <: AbstractPara
1313
dfg.solverParams = solverParams
1414
end
1515

16+
# Get user, robot, and session "small" data.
17+
getUserData(dfg::LightDFG)::Dict{Symbol, String} = return dfg.userData
18+
function setUserData(dfg::LightDFG, data::Dict{Symbol, String})::Bool
19+
dfg.userData = data
20+
return true
21+
end
22+
getRobotData(dfg::LightDFG)::Dict{Symbol, String} = return dfg.robotData
23+
function setRobotData(dfg::LightDFG, data::Dict{Symbol, String})::Bool
24+
dfg.robotData = data
25+
return true
26+
end
27+
getSessionData(dfg::LightDFG)::Dict{Symbol, String} = return dfg.sessionData
28+
function setSessionData(dfg::LightDFG, data::Dict{Symbol, String})::Bool
29+
dfg.sessionData = data
30+
return true
31+
end
32+
1633
"""
1734
$(SIGNATURES)
1835
True if the variable or factor exists in the graph.

src/services/AbstractDFG.jl

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,26 @@ function setSolverParams(dfg::G, solverParams::T) where {G <: AbstractDFG, T <:
4949
error("setSolverParams not implemented for $(typeof(dfg))")
5050
end
5151

52+
# Get user, robot, and session "small" data.
53+
function getUserData(dfg::G)::Dict{Symbol, String} where {G <: AbstractDFG}
54+
error("getUserData not implemented for $(typeof(dfg))")
55+
end
56+
function setUserData(dfg::G, data::Dict{Symbol, String})::Bool where {G <: AbstractDFG}
57+
error("setUserData not implemented for $(typeof(dfg))")
58+
end
59+
function getRobotData(dfg::G)::Dict{Symbol, String} where {G <: AbstractDFG}
60+
error("getRobotData not implemented for $(typeof(dfg))")
61+
end
62+
function setRobotData(dfg::G, data::Dict{Symbol, String})::Bool where {G <: AbstractDFG}
63+
error("setRobotData not implemented for $(typeof(dfg))")
64+
end
65+
function getSessionData(dfg::G)::Dict{Symbol, String} where {G <: AbstractDFG}
66+
error("getSessionData not implemented for $(typeof(dfg))")
67+
end
68+
function setSessionData(dfg::G, data::Dict{Symbol, String})::Bool where {G <: AbstractDFG}
69+
error("setSessionData not implemented for $(typeof(dfg))")
70+
end
71+
5272
"""
5373
$(SIGNATURES)
5474
True if the variable or factor exists in the graph.

test/interfaceTests.jl

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,17 @@ end
115115
#TODO Should the next test work?
116116
@test_broken !isInitialized(dfg, :f1)
117117
@test_broken !isInitialized(f1)
118-
118+
119+
# Session, robot, and user small data tests
120+
smallUserData = Dict{Symbol, String}(:a => "42", :b => "Hello")
121+
smallRobotData = Dict{Symbol, String}(:a => "43", :b => "Hello")
122+
smallSessionData = Dict{Symbol, String}(:a => "44", :b => "Hello")
123+
setUserData(dfg, deepcopy(smallUserData))
124+
setRobotData(dfg, deepcopy(smallRobotData))
125+
setSessionData(dfg, deepcopy(smallSessionData))
126+
@test getUserData(dfg) == smallUserData
127+
@test getRobotData(dfg) == smallRobotData
128+
@test getSessionData(dfg) == smallSessionData
119129
end
120130

121131
@testset "Updating Nodes" begin

0 commit comments

Comments
 (0)