|
17 | 17 |
|
18 | 18 | # Accessors
|
19 | 19 | function getDescription(dfg::CloudGraphsDFG)
|
20 |
| - return _getNodeProperty(dfg.neo4jInstance, [dfg.sessionId, dfg.robotId, dfg.userId, "SESSION"], "description") |
| 20 | + return _getNodeProperty( |
| 21 | + dfg.neo4jInstance, |
| 22 | + [dfg.sessionId, dfg.robotId, dfg.userId, "SESSION"], |
| 23 | + "description") |
21 | 24 | end
|
22 | 25 | function setDescription!(dfg::CloudGraphsDFG, description::String)
|
23 |
| - _setNodeProperty(dfg.neo4jInstance, [dfg.sessionId, dfg.robotId, dfg.userId, "SESSION"], "description", description) |
| 26 | + _setNodeProperty( |
| 27 | + dfg.neo4jInstance, |
| 28 | + [dfg.sessionId, dfg.robotId, dfg.userId, "SESSION"], |
| 29 | + "description", |
| 30 | + description) |
24 | 31 | end
|
25 | 32 |
|
26 | 33 | function getSerializationModule(dfg::CloudGraphsDFG)::Module where G <: AbstractDFG
|
@@ -510,3 +517,81 @@ function deletePPE!(dfg::CloudGraphsDFG, variablekey::Symbol, ppekey::Symbol=:de
|
510 | 517 | length(result.results[1]["data"][1]["row"]) != 1 && error("Cannot find PPE '$ppekey' for variable '$variablekey'")
|
511 | 518 | return unpackPPE(dfg, @show result.results[1]["data"][1]["row"][1])
|
512 | 519 | end
|
| 520 | + |
| 521 | +### Updated functions from AbstractDFG |
| 522 | +### These functions write back as you add the data. |
| 523 | + |
| 524 | +function addVariableSolverData!(dfg::CloudGraphsDFG, variablekey::Symbol, vnd::VariableNodeData, solvekey::Symbol=:default)::VariableNodeData |
| 525 | + # TODO: Just get the property, update it, and send it back |
| 526 | + var = getVariable(dfg, variablekey) |
| 527 | + if haskey(var.solverDataDict, solvekey) |
| 528 | + error("VariableNodeData '$(solvekey)' already exists") |
| 529 | + end |
| 530 | + var.solverDataDict[solvekey] = vnd |
| 531 | + # TODO: Cleanup |
| 532 | + solverDataDict = JSON2.write(Dict(keys(var.solverDataDict) .=> map(vnd -> packVariableNodeData(dfg, vnd), values(var.solverDataDict)))) |
| 533 | + _setNodeProperty( |
| 534 | + dfg.neo4jInstance, |
| 535 | + _getLabelsForInst(dfg, var), |
| 536 | + "solverDataDict", |
| 537 | + solverDataDict) |
| 538 | + return vnd |
| 539 | +end |
| 540 | + |
| 541 | +function updateVariableSolverData!(dfg::CloudGraphsDFG, variablekey::Symbol, vnd::VariableNodeData, solvekey::Symbol=:default)::VariableNodeData |
| 542 | + #This is basically just setSolverData |
| 543 | + var = getVariable(dfg, variablekey) |
| 544 | + if !haskey(var.solverDataDict, solvekey) |
| 545 | + @warn "VariableNodeData '$(solvekey)' does not exist, adding" |
| 546 | + end |
| 547 | + var.solverDataDict[solvekey] = vnd |
| 548 | + # TODO: Cleanup |
| 549 | + solverDataDict = JSON2.write(Dict(keys(var.solverDataDict) .=> map(vnd -> packVariableNodeData(dfg, vnd), values(var.solverDataDict)))) |
| 550 | + _setNodeProperty( |
| 551 | + dfg.neo4jInstance, |
| 552 | + _getLabelsForInst(dfg, var), |
| 553 | + "solverDataDict", |
| 554 | + solverDataDict) |
| 555 | + return vnd |
| 556 | +end |
| 557 | + |
| 558 | +function updateVariableSolverData!(dfg::CloudGraphsDFG, sourceVariables::Vector{<:DFGVariable}, solvekey::Symbol=:default) |
| 559 | + #TODO: Do in bulk for speed. |
| 560 | + for var in sourceVariables |
| 561 | + updateVariableSolverData!(dfg, var.label, getSolverData(var, solvekey), solvekey) |
| 562 | + end |
| 563 | +end |
| 564 | + |
| 565 | +function deleteVariableSolverData!(dfg::CloudGraphsDFG, variablekey::Symbol, solvekey::Symbol=:default)::VariableNodeData |
| 566 | + var = getVariable(dfg, variablekey) |
| 567 | + |
| 568 | + if !haskey(var.solverDataDict, solvekey) |
| 569 | + error("VariableNodeData '$(solvekey)' does not exist") |
| 570 | + end |
| 571 | + vnd = pop!(var.solverDataDict, solvekey) |
| 572 | + # TODO: Cleanup |
| 573 | + solverDataDict = JSON2.write(Dict(keys(var.solverDataDict) .=> map(vnd -> packVariableNodeData(dfg, vnd), values(var.solverDataDict)))) |
| 574 | + _setNodeProperty( |
| 575 | + dfg.neo4jInstance, |
| 576 | + _getLabelsForInst(dfg, var), |
| 577 | + "solverDataDict", |
| 578 | + solverDataDict) |
| 579 | + return vnd |
| 580 | +end |
| 581 | + |
| 582 | +function getSolvable(dfg::CloudGraphsDFG, sym::Symbol) |
| 583 | + prop = _getNodeProperty( |
| 584 | + dfg.neo4jInstance, |
| 585 | + [dfg.sessionId, dfg.robotId, dfg.userId, String(sym)], |
| 586 | + "solvable") |
| 587 | + return prop |
| 588 | +end |
| 589 | + |
| 590 | +function setSolvable!(dfg::CloudGraphsDFG, sym::Symbol, solvable::Int)::Int |
| 591 | + prop = _setNodeProperty( |
| 592 | + dfg.neo4jInstance, |
| 593 | + [dfg.sessionId, dfg.robotId, dfg.userId, String(sym)], |
| 594 | + "solvable", |
| 595 | + solvable) |
| 596 | + return solvable |
| 597 | +end |
0 commit comments