From 4d221a235cbafb669dec5f00b8e2c8fbcc7a9042 Mon Sep 17 00:00:00 2001 From: merrickj Date: Thu, 18 Aug 2022 12:45:00 +0100 Subject: [PATCH 1/5] starting introduction of new functions for mos-interface-jl --- src/model.jl | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/model.jl b/src/model.jl index 13d674d..d7a9b41 100644 --- a/src/model.jl +++ b/src/model.jl @@ -443,6 +443,15 @@ function get_owner_id(m::Model) return m.data["owner"]["id"] end +""" + get_execution_log(m::Model) + +Gets execution log +""" +function get_execution_log(m::Model) + return m.data["execution_log"] +end + """ get_system(m::Model) @@ -470,6 +479,16 @@ function get_description(m::Model) return m.data["description"] end +""" + get_source(m::Model) + +Get model source. +""" +function get_source(m::Model) + return m.data["source"] +end + + """ get_status(m::Model) @@ -490,3 +509,24 @@ function get_status(m::Model) return status end + +""" + get_interface_object(m::Model, name::AbstractString) + +Gets interface object of name +""" +function get_interface_object(m::Model, name::AbstractString) + for o in __get_interface_objects__(m) + if o["name"] == name + url = join(o['url'],"data") + h = Dict() + r = HTTP.get(correct_url(url, m.interface.url), + add_auth!(h, m.interface.token)) + if r.status != 200 + error("unable to get interface object") + end + return + end + end + error("invalid object name") +end From a62ee833ee44f0d11f792928b7180283be7b1a53 Mon Sep 17 00:00:00 2001 From: merrickj Date: Thu, 18 Aug 2022 14:15:18 +0100 Subject: [PATCH 2/5] starting introduction of new functions for mos-interface-jl --- src/model.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/model.jl b/src/model.jl index d7a9b41..30ed438 100644 --- a/src/model.jl +++ b/src/model.jl @@ -518,14 +518,14 @@ Gets interface object of name function get_interface_object(m::Model, name::AbstractString) for o in __get_interface_objects__(m) if o["name"] == name - url = join(o['url'],"data") + url = join([o["url"],"data/"]) h = Dict() r = HTTP.get(correct_url(url, m.interface.url), add_auth!(h, m.interface.token)) if r.status != 200 error("unable to get interface object") end - return + return JSON.parse(String(r.body)) end end error("invalid object name") From 28081aafb80d74c35b4ffc96dbbd6285df8c1a01 Mon Sep 17 00:00:00 2001 From: merrickj Date: Thu, 18 Aug 2022 15:03:59 +0100 Subject: [PATCH 3/5] starting introduction of new functions for mos-interface-jl --- src/model.jl | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/model.jl b/src/model.jl index 30ed438..7c1b983 100644 --- a/src/model.jl +++ b/src/model.jl @@ -530,3 +530,26 @@ function get_interface_object(m::Model, name::AbstractString) end error("invalid object name") end + +""" + get_variable_state(m::Model, name::AbstractString) + +Gets variable state of name +""" +function get_variable_state(m::Model, name::AbstractString) + variable_found = false + for v in __get_variables__(m) + if v["name"] == name + variable_found = true + url = v["url"] + h = Dict() + r = HTTP.get(correct_url(url, m.interface.url), + add_auth!(h, m.interface.token)) + if r.status != 200 + error("unable to get variable state") + end + return JSON.parse(String(r.body)) + end + end + error("invalid object name") +end From 11713dc9f4a9dde671483b609ca90e30fd6ee9e7 Mon Sep 17 00:00:00 2001 From: merrickj Date: Wed, 31 Aug 2022 14:14:41 +0100 Subject: [PATCH 4/5] get_variable_value call added --- src/model.jl | 45 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/src/model.jl b/src/model.jl index 7c1b983..5a01730 100644 --- a/src/model.jl +++ b/src/model.jl @@ -532,11 +532,11 @@ function get_interface_object(m::Model, name::AbstractString) end """ - get_variable_state(m::Model, name::AbstractString) + get_variable(m::Model, name::AbstractString) -Gets variable state of name +Gets variable of name """ -function get_variable_state(m::Model, name::AbstractString) +function get_variable(m::Model, name::AbstractString) variable_found = false for v in __get_variables__(m) if v["name"] == name @@ -546,10 +546,47 @@ function get_variable_state(m::Model, name::AbstractString) r = HTTP.get(correct_url(url, m.interface.url), add_auth!(h, m.interface.token)) if r.status != 200 - error("unable to get variable state") + error("unable to get variable") end return JSON.parse(String(r.body)) end end error("invalid object name") end +""" + get_variable(m::Model, name::AbstractString) + +Gets variable of name +""" +function get_variable_value(m::Model, name::AbstractString) + variable_found = false + for v in __get_variables__(m) + if v["name"] == name + variable_found = true + variable = get_variable(m,name) + h = Dict() + r = HTTP.get(correct_url(variable["states"], m.interface.url), + add_auth!(h, m.interface.token)) + if r.status != 200 + error("unable to get variable value") + end + q = JSON.parse(String(r.body)) + var_value_dict = Dict() + if size(q)[1] == 1 + return q[1]["value"] + else + for i in q + if i["label"] == "" + ikey = i["index"] + else + ikey = i["label"] + end + var_value_dict[ikey] = i["value"] + end + end + return var_value_dict + + end + end + error("invalid object name") +end From e1e4a87bc17775c03f34c3bb8a35e616e9908507 Mon Sep 17 00:00:00 2001 From: merrickj Date: Wed, 31 Aug 2022 14:48:24 +0100 Subject: [PATCH 5/5] get constraint and function info calls added --- src/model.jl | 125 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 123 insertions(+), 2 deletions(-) diff --git a/src/model.jl b/src/model.jl index 5a01730..ddb4a4b 100644 --- a/src/model.jl +++ b/src/model.jl @@ -554,9 +554,9 @@ function get_variable(m::Model, name::AbstractString) error("invalid object name") end """ - get_variable(m::Model, name::AbstractString) + get_variable_value(m::Model, name::AbstractString) -Gets variable of name +Gets value(s) variable of name """ function get_variable_value(m::Model, name::AbstractString) variable_found = false @@ -590,3 +590,124 @@ function get_variable_value(m::Model, name::AbstractString) end error("invalid object name") end + +""" + get_function(m::Model, name::AbstractString) + +Gets function of name +""" +function get_function(m::Model, name::AbstractString) + function_found = false + for f in __get_functions__(m) + if f["name"] == name + function_found = true + url = f["url"] + h = Dict() + r = HTTP.get(correct_url(url, m.interface.url), + add_auth!(h, m.interface.token)) + if r.status != 200 + error("unable to get function") + end + return JSON.parse(String(r.body)) + end + end + error("invalid object name") +end +""" + get_function_value(m::Model, name::AbstractString) + +Gets value(s) of function of name +""" +function get_function_value(m::Model, name::AbstractString) + function_found = false + for f in __get_functions__(m) + if f["name"] == name + function_found = true + func = get_function(m,name) + h = Dict() + r = HTTP.get(correct_url(func["states"], m.interface.url), + add_auth!(h, m.interface.token)) + if r.status != 200 + error("unable to get function value") + end + q = JSON.parse(String(r.body)) + func_value_dict = Dict() + if size(q)[1] == 1 + return q[1]["value"] + else + for i in q + if i["label"] == "" + ikey = i["index"] + else + ikey = i["label"] + end + func_value_dict[ikey] = i["value"] + end + end + return func_value_dict + + end + end + error("invalid object name") +end + + +""" + get_constraint(m::Model, name::AbstractString) + +Gets constraint of name +""" +function get_constraint(m::Model, name::AbstractString) + constraint_found = false + for c in __get_constraints__(m) + if c["name"] == name + constraint_found = true + url = c["url"] + h = Dict() + r = HTTP.get(correct_url(url, m.interface.url), + add_auth!(h, m.interface.token)) + if r.status != 200 + error("unable to get constraint") + end + return JSON.parse(String(r.body)) + end + end + error("invalid object name") +end +""" + get_constraint_dual(m::Model, name::AbstractString) + +Gets dual value(s) of constraint of name +""" +function get_constraint_dual(m::Model, name::AbstractString) + constraint_found = false + for c in __get_constraints__(m) + if c["name"] == name + constraint_found = true + constraint = get_constraint(m,name) + h = Dict() + r = HTTP.get(correct_url(constraint["states"], m.interface.url), + add_auth!(h, m.interface.token)) + if r.status != 200 + error("unable to get constraint dual value") + end + q = JSON.parse(String(r.body)) + constraint_value_dict = Dict() + if size(q)[1] == 1 + return q[1]["dual"] + else + for i in q + if i["label"] == "" + ikey = i["index"] + else + ikey = i["label"] + end + constraint_value_dict[ikey] = i["dual"] + end + end + return constraint_value_dict + + end + end + error("invalid object name") +end