Commit bb525048 authored by 's avatar
Browse files

modification to search resoults

parent f2c9df8f
Loading
Loading
Loading
Loading
+61 −20
Original line number Diff line number Diff line
@@ -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