From bb525048a05573e67849ab5428c021a646198e87 Mon Sep 17 00:00:00 2001 From: <carmelo@DESKTOP-KO7NNN3.localdomain> Date: Sat, 14 Nov 2020 19:42:48 +0100 Subject: [PATCH] modification to search resoults --- matlab/test/classes/@MatMust/MatMust.m | 81 +++++++++++++++++++------- 1 file changed, 61 insertions(+), 20 deletions(-) diff --git a/matlab/test/classes/@MatMust/MatMust.m b/matlab/test/classes/@MatMust/MatMust.m index 1c3403a..afa3b70 100644 --- a/matlab/test/classes/@MatMust/MatMust.m +++ b/matlab/test/classes/@MatMust/MatMust.m @@ -168,35 +168,51 @@ classdef MatMust < handle 'mode', 'SIMPLE'}; try - data = webread([obj.url,obj.urlsub, query], args{:} ,obj.GEToptions); + response = webread([obj.url,obj.urlsub, query], args{:} ,obj.GEToptions); catch ME fprintf('+++ WARNING\n%s - %s\n', ME.identifier, ME.message) return end - + + if isa(response,'struct') + data{1} = response; + else + data = response; + end + %refine date string to adapt MATLAB date format - for i=1:numel(data) - data_par = data(i).data; + for i=1:numel(data{1}) + if isempty(data{1}(i).data) + fprintf('+++ WARNING\n%s for %s\n', 'No Data existing in time span', data.name) + continue + end + data_par = data{1}(i).data; t = num2cell(datenum(datetime('1970-01-01', 'TimeZone','utc'))+(str2num(str2mat(data_par.date))/1000/86400)); - [data(i).data.dateMAT] = deal(t{:}); + [data{1}(i).data.dateMAT] = deal(t{:}); clear t end if nargin > 5 if any(ismember(varargin,'dump')) fprintf('+++++++++++++ DATA RESULT LIST +++++++++++++\n'); - for i=1:numel(data) - data_par = data(i).data; - fprintf('%s-%s: %s -> %s\n', data(i).subsystem, data(i).type, data(i).name, data(i).description ); + for i=1:numel(data{1}) + if isempty(data{i}(i).data) + continue + end + data_par = data{i}.data; + fprintf('%s-%s: %s -> %s\n', data{1}(i).subsystem, data{1}(i).type, data{1}(i).name, data{1}(i).description ); %TODO filter for several kind of dataType 'DOUBLE', %'SIGNED_SMALL_INT', 'STRING' - switch data(i).dataType + switch data{1}(i).dataType case 'DOUBLE' format = '%f'; - case 'SIGNED_SMALL_INT' + case {'SIGNED_SMALL_INT', 'UNSIGNED_INT'} format = '%i'; case 'STRING' format = '%s'; + otherwise + format = '%s'; + end format = ['%s - ',format,'\n']; for i = 1:numel(data_par) @@ -208,10 +224,13 @@ classdef MatMust < handle fprintf('+++++++++++++++++++++++++++++++++++++++++\n'); end if any(ismember(varargin,'plot')) - for i=1:numel(data) - data_par = data(i).data; + for i=1:numel(data{1}) + if isempty(data{1}(i).data) + continue + end + data_par = data{1}(i).data; figure - title(sprintf('%s-%s: %s -> %s\n', data(i).subsystem, data(i).type, data(i).name, data(i).description )) + title(sprintf('%s-%s: %s -> %s\n', data{1}(i).subsystem, data{1}(i).type, data{1}(i).name, data{1}(i).description )) if strcmp(calibrate,'true') switch class(data_par(1).calibratedValue) case 'char' @@ -231,10 +250,10 @@ classdef MatMust < handle plot([data_par.dateMAT], [data_par.value], '-x' ); end xlabel('time'); - if isfield(data(i), 'unit') - ylabel(data(i).unit); + if isfield(data{1}(i), 'unit') + ylabel(data{1}(i).unit); end - title([data(i).description,' - ',data(i).name]); + title([data{1}(i).description,' - ',data{1}(i).name]); datetick('x'); grid on end @@ -242,7 +261,7 @@ classdef MatMust < handle end end - function t = MatMust_searchTMparFromName(obj, namequery, dataproviders, varargin) + function o = MatMust_searchTMparFromName(obj, namequery, dataproviders, varargin) % +++ % MatMust_searchTMparFromName % Search a parameter into the requested dataprovider (es. BEPICRUISE) @@ -262,16 +281,18 @@ classdef MatMust < handle query = 'metadata/treesearch'; obj.GEToptions.HeaderFields = {'Authorization', obj.tockenstruct.token}; if isa(dataproviders,'cell') - dataproviders = char(join(dataproviders,',')); + dataprovidersstr = char(join(dataproviders,',')); + else + dataprovidersstr = dataproviders; end try optindx = strcmp(varargin,'Description')+strcmp(varargin,'Unit')+strcmp(varargin,'Id'); if any(find(optindx)) field = join(varargin(find(optindx)),','); - response = webread([obj.url,obj.urlsub, query], 'field',['name,',char(field)],'text',namequery,'dataproviders', dataproviders ,obj.GEToptions); + response = webread([obj.url,obj.urlsub, query], 'field',['name,',char(field)],'text',namequery,'dataproviders', dataprovidersstr ,obj.GEToptions); else - response = webread([obj.url,obj.urlsub, query], 'field','name','text',namequery,'dataproviders', dataproviders ,obj.GEToptions); + response = webread([obj.url,obj.urlsub, query], 'field','name','text',namequery,'dataproviders', dataprovidersstr ,obj.GEToptions); end t = response ; catch ME @@ -297,6 +318,26 @@ classdef MatMust < handle end end end + % output only requested ds + if isa(dataproviders,'cell') + c = 0; + for i = 1:numel(t) + for j = 1:numel(dataproviders) + if strcmp(t(i).type, [dataproviders(j), ' params'] ) + c = c+1; + o(c) = t(i); + end + end + end + else + c = 0; + for i = 1:numel(t) + if strcmp(t(i).type, [dataproviders, ' params'] ) + c = c+1; + o(c) = t(i); + end + end + end end function MatMust_login(obj, varargin ) % login -- GitLab