Skip to content
Snippets Groups Projects
Select Git revision
  • 8ea58271bfaabd16c4faa0ef8212d84871825fd9
  • master default protected
  • gitkeep
  • dev protected
  • Issue/2449-GuidPidSlugToProjectSettings
  • Issue/2309-docs
  • Issue/2355-topLevelOrg
  • Issue/2328-noFailOnLog
  • Hotfix/2371-fixGitLabinRCV
  • Issue/2287-guestRole
  • Fix/xxxx-activateGitlab
  • Test/xxxx-enablingGitLab
  • Issue/2349-gitlabHttps
  • Issue/2259-updatePids
  • Issue/2101-gitLabResTypeUi
  • Hotfix/2202-fixNaNQuota
  • Issue/2246-quotaResoval
  • Issue/2221-projectDateCreated
  • Hotfix/2224-quotaSizeAnalytics
  • Fix/xxxx-resourceVisibility
  • Issue/2000-gitlabResourcesAPI
  • v4.4.3
  • v4.4.2
  • v4.4.1
  • v4.4.0
  • v4.3.4
  • v4.3.3
  • v4.3.2
  • v4.3.1
  • v4.3.0
  • v4.2.8
  • v4.2.7
  • v4.2.6
  • v4.2.5
  • v4.2.4
  • v4.2.3
  • v4.2.2
  • v4.2.1
  • v4.2.0
  • v4.1.1
  • v4.1.0
41 results

ProjectController.cs

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    itaHeader.m 24.04 KiB
    classdef itaHeader %Obsolete class for itaHeader
        %    Obsolote class for old header. Necessary for backward compatibility of
        %    old measurements
        %
        %   !!! Don't use for anything !!!
        %		!!! Also don't delete      !!!
        
        % <ITA-Toolbox>
        % This file is part of the ITA-Toolbox. Some rights reserved.
        % You can find the license for this m-file in the license.txt file in the ITA-Toolbox folder.
        % </ITA-Toolbox>
        
        
        properties(Hidden)
            fieldnames = {};
            old_fields = {'ChannelNames','ChannelUnits','ChannelCoordinates','ChannelSensors',};
        end
        
        properties
            nBins = 0;                  % Int(1) - with the number of bins in itaAudio
            nSamples = 0;               % Int(1) - with the number of Samples in itaAudio
            SamplingRate = 0;           % Int(1) - Sampling Rate
            nChannels = 0;               % Int(1) - Number of Channels
            FFTnorm = '';               % char   - FFT Norm
            DateVector = zeros(1,7);    % Int(1,6) - Date and Time of generation
            Comment = '';               % char - a Comment
            Filename = '';              % char - the name of the file
            Filepath = '';              % char - path to file
            FileExt = '';               % char - extension of file
            History = {};               % Cell - Cell array of strings with history entries
            UserData = {''};            % Cell - UserData, no restrictions
            fcentre = [];               % double - Center-Frequencies for bins (like in frequency bands)
            DataSize = 0;               % Size of data field
            Channel = struct('Name','','Unit','','Coordinates',itaCoordinates,...
                'Orientation',[],'Sensor','','UserData',{''},'Sensitivity',[]); %Struct-Array, one struct for every channel
        end
        
        
        methods
            function header = itaHeader(varargin) %Constructor
                ita_verbose_obsolete('The header is dead');
                header.fieldnames = {'nBins','nSamples','samplingRate','nChannels','FFTnorm','DateVector','Comment','Filename','Filepath','FileExt','History','UserData','Channel','DataSize'};
                %generation time settings
                c = clock; % g et clock settings
                Hun  = 0; Year = c(1); Month = c(2); Day = c(3); Hour = c(4); Min = c(5); Sec = round(c(6));
                header.DateVector = [Year,Month,Day,Hour,Min,Sec,Hun];
                if nargin == 1 %Old header given
                    fieldn = fields(varargin{1});
                    for idf = 1:numel(fieldn)
                        if any(strcmp(fieldn{idf},header.fieldnames));
                            
                            %% This has to be nicer!
                            if ~strcmpi(fieldn{idf},'Channel'); % ToDO - rsc - make class?
                                header.(fieldn{idf}) = varargin{1}.(fieldn{idf});
                            else
                                input = varargin{1}.Channel;
                                for idch = 1:numel(input)
                                    chfields = fields(header.Channel);
                                    for idfn = 1:numel(chfields)
                                        if isfield(input(idch),chfields{idfn})
                                            header.Channel(idch).(chfields{idfn}) = input(idch).(chfields{idfn});
                                        end
                                    end
                                end
                            end
                            
                        else %Field does not exist, lets see what to do
                            try
                                input = varargin{1}.(fieldn{idf});
                                switch fieldn{idf}
                                    case 'ChannelNames'
                                        for idx = 1:numel(input)
                                            header.Channel(idx).Name = input{idx};
                                        end
                                    case 'ChannelUnits'
                                        for idx = 1:numel(input)
                                            header.Channel(idx).Unit = input{idx};
                                        end
                                    case 'ChannelCoordinates'
                                        for idx = 1:numel(input)
                                            header.Channel(idx).Coordinates = input{idx};
                                        end
                                    case 'ChannelOrientation'
                                        for idx = 1:numel(input)
                                            header.Channel(idx).Orientation = input{idx};
                                        end
                                    case 'ChannelSensors'
                                        for idx = 1:numel(input)
                                            header.Channel(idx).Sensor = input{idx};
                                        end
                                    case 'fcentre'
                                        header.fcentre = input;
                                    case 'Samples'
                                        header.nSamples = input;
                                    case 'Channels'
                                        header.nChannels = input;
                                    otherwise
                                        %if ita_preferences('verboseMode')
                                        %    disp(['itaHeader: Ignoring field: ' fieldn{idf}]);
                                        %end
                                end
                            catch errmsg
                                if ita_preferences('verboseMode')
                                    disp(['itaHeader: Ignoring field: ' fieldn{idf}]);
                                end
                            end
                        end
                    end
                    
                end
            end
            
            function varargout = subsref(audioObj,index)
                %Please be very careful with any changes
                % ToDo - rsc - clean backwards compatibility!
                iIndex = 1;
                old_field = false;
                while iIndex <= numel(index)
                    switch index(iIndex).type
                        case '.'    % we are dealing with a command or (pseudo-)field
                            %Wrap old Header-Fields to new ones
                            switch index(iIndex).subs
                                case 'ChannelNames'
                                    if ita_preferences('developerMode') && ita_preferences('verboseMode')
                                        warning(['@itaHeader: subsref for old field is called here: ' index(1).subs]);
                                    end
                                    old_field = 1;
                                    if numel(index) == 1
                                        varargout = {{audioObj.Channel.Name}};
                                        break;
                                    end
                                    index(iIndex).subs = 'Channel';
                                    index(iIndex+2).subs = 'Name';
                                    index(iIndex+2).type = '.';
                                    index(iIndex+1).type = '()';
                                case 'ChannelUnits'
                                    if ita_preferences('developerMode') && ita_preferences('verboseMode')
                                        warning(['@itaHeader: subsref for old field is called here: ' index(1).subs]);
                                    end
                                    old_field = 1;
                                    if numel(index) == 1
                                        varargout = {{audioObj.Channel.Unit}};
                                        break;
                                    end
                                    index(iIndex).subs = 'Channel';
                                    index(iIndex+2).subs = 'Unit';
                                    index(iIndex+2).type = '.';
                                    index(iIndex+1).type = '()';
                                case 'ChannelCoordinates'
                                    if ita_preferences('developerMode') && ita_preferences('verboseMode')
                                        warning(['@itaHeader: subsref for old field is called here: ' index(1).subs]);
                                    end
                                    old_field = 1;
                                    if numel(index) == 1
                                        varargout = {{audioObj.Channel.Coordinates}};
                                        break;
                                    end
                                    index(iIndex).subs = 'Channel';
                                    index(iIndex+2).subs = 'Coordinates';
                                    index(iIndex+2).type = '.';
                                    index(iIndex+1).type = '()';
                                    
                                case 'ChannelOrientation'
                                    if ita_preferences('developerMode') && ita_preferences('verboseMode')
                                        warning(['@itaHeader: subsref for old field is called here: ' index(1).subs]);
                                    end
                                    old_field = 1;
                                    if numel(index) == 1
                                        varargout = {{audioObj.Channel.Orientation}};
                                        break;
                                    end
                                    index(iIndex).subs = 'Channel';
                                    index(iIndex+2).subs = 'Orientation';
                                    index(iIndex+2).type = '.';
                                    index(iIndex+1).type = '()';
                                    
                                case 'ChannelSensors'
                                    if ita_preferences('developerMode') && ita_preferences('verboseMode')
                                        warning(['@itaHeader: subsref for old field is called here: ' index(1).subs]);
                                    end
                                    old_field = 1;
                                    if numel(index) == 1
                                        varargout = {{audioObj.Channel.Sensor}};
                                        break;
                                    end
                                    index(iIndex).subs = 'Channel';
                                    index(iIndex+2).subs = 'Sensor';
                                    index(iIndex+2).type = '.';
                                    index(iIndex+1).type = '()';
                                    
                                case 'Samples'
                                    if ita_preferences('developerMode') && ita_preferences('verboseMode')
                                        warning(['@itaHeader: subsref for old field is called here: ' index(1).subs]);
                                    end
                                    index(iIndex).subs = 'nSamples';
                                    old_field = 1;
                                case 'Channels'
                                    %pdi: no warning for channels
                                    %                                 if ita_preferences('developerMode') && ita_preferences('verboseMode')
                                    %                                     warning(['@itaHeader: subsref for old field is called here: ' index(1).subs]);
                                    %                                 end
                                    index(iIndex).subs = 'nChannels';
                                    old_field = 1;
                                otherwise
                                    %Do nothing
                            end
                            if numel(index) >= iIndex+1
                                if isempty(index(iIndex+1).subs)
                                    index(iIndex+1).subs = {':'};
                                end
                            end
                            audioObj = builtin('subsref',audioObj,index(iIndex));
                        case '()'
                            audioObj = builtin('subsref',audioObj,index(iIndex));
                        case '{}'
                            audioObj = builtin('subsref',audioObj,index(iIndex));
                        otherwise
                            audioObj = builtin('subsref',audioObj,index(iIndex));
                    end
                    iIndex = iIndex+1;
                    varargout = {audioObj};
                end
            end
            
            function varargout = subsasgn(audioObj,index,value)
                %Please be very careful with any changes
                % ToDo - rsc - clean backwards compatibility!
                old_field = false;
                iIndex = 1;
                tfieldnames = [audioObj.fieldnames 'fcentre'];
                donothing = false; %True for old fields, they will be ignored
                while iIndex <= numel(index)
                    switch index(iIndex).type
                        case '.'    % we are dealing with a command or (pseudo-)field
                            %Wrap old Header-Fields to new ones
                            switch index(iIndex).subs
                                case 'ChannelNames'
                                    if iscell(value)
                                        if numel(index) == iIndex
                                            for idch = 1:numel(value)
                                                audioObj.Channel(idch).Name = value{idch};
                                            end
                                            audioObj.Channel(idch+1:end) = [];
                                            varargout{1} = audioObj;
                                            if ita_preferences('developerMode') && ita_preferences('verboseMode')
                                                warning(['@itaHeader: subasgn for old field is called here: ' index(1).subs]);
                                            end
                                            return
                                        else
                                            value = cell2mat(value);
                                        end
                                    elseif ischar(value)
                                        if numel(index) == iIndex
                                            for idch = 1:numel(audioObj.Channel)
                                                audioObj.Channel(idch).Name = value;
                                            end
                                            %audioObj.Channel(idch+1:end) = [];
                                            varargout{1} = audioObj;
                                            if ita_preferences('developerMode') && ita_preferences('verboseMode')
                                                warning(['@itaHeader: subasgn for old field is called here: ' index(1).subs]); %#ok<*WNTAG>
                                            end
                                            return
                                        end
                                        
                                    end
                                    index(iIndex).subs = 'Channel';
                                    index(iIndex+2).subs = 'Name';
                                    index(iIndex+2).type = '.';
                                    index(iIndex+1).type = '()';
                                    old_field = 1;
                                case 'ChannelUnits'
                                    if iscell(value)
                                        if numel(index) == iIndex
                                            for idch = 1:numel(value)
                                                audioObj.Channel(idch).Unit = value{idch};
                                            end
                                            audioObj.Channel(idch+1:end) = [];
                                            varargout{1} = audioObj;
                                            if ita_preferences('developerMode') && ita_preferences('verboseMode')
                                                warning(['@itaHeader: subasgn for old field is called here: ' index(1).subs]);
                                            end
                                            return
                                        else
                                            value = cell2mat(value);
                                        end
                                    end
                                    index(iIndex).subs = 'Channel';
                                    index(iIndex+2).subs = 'Unit';
                                    index(iIndex+2).type = '.';
                                    index(iIndex+1).type = '()';
                                    old_field = 1;
                                case 'ChannelCoordinates'
                                    if iscell(value)
                                        if numel(index) == iIndex
                                            for idch = 1:numel(value)
                                                audioObj.Channel(idch).Coordinates = value{idch};
                                            end
                                            varargout{1} = audioObj;
                                            if ita_preferences('developerMode') && ita_preferences('verboseMode')
                                                warning(['@itaHeader: subasgn for old field is called here: ' index(1).subs]);
                                            end
                                            return
                                        else
                                            value = cell2mat(value);
                                        end
                                    end
                                    index(iIndex).subs = 'Channel';
                                    index(iIndex+2).subs = 'Coordinates';
                                    index(iIndex+2).type = '.';
                                    index(iIndex+1).type = '()';
                                    old_field = 1;
                                case 'ChannelOrientation'
                                    if iscell(value)
                                        if numel(index) == iIndex
                                            for idch = 1:numel(value)
                                                audioObj.Channel(idch).Orientation = value{idch};
                                            end
                                            varargout{1} = audioObj;
                                            if ita_preferences('developerMode') && ita_preferences('verboseMode')
                                                warning(['@itaHeader: subasgn for old field is called here: ' index(1).subs]);
                                            end
                                            return
                                        else
                                            value = cell2mat(value);
                                        end
                                    end
                                    index(iIndex).subs = 'Channel';
                                    index(iIndex+2).subs = 'Orientation';
                                    index(iIndex+2).type = '.';
                                    index(iIndex+1).type = '()';
                                    if iscell(value)
                                        value = cell2mat(value);
                                    end
                                    old_field = 1;
                                case 'ChannelSensor'
                                    if iscell(value)
                                        if numel(index) == iIndex
                                            for idch = 1:numel(value)
                                                audioObj.Channel(idch).Sensor = value{idch};
                                            end
                                            varargout{1} = audioObj;
                                            if ita_preferences('developerMode') && ita_preferences('verboseMode')
                                                warning(['@itaHeader: subasgn for old field is called here: ' index(1).subs]);
                                            end
                                            return
                                        else
                                            value = cell2mat(value);
                                        end
                                    end
                                    index(iIndex).subs = 'Channel';
                                    index(iIndex+2).subs = 'Sensor';
                                    index(iIndex+2).type = '.';
                                    index(iIndex+1).type = '()';
                                    old_field = 1;
                                case 'Samples'
                                    if ita_preferences('developerMode') && ita_preferences('verboseMode')
                                        warning(['@itaHeader: subasgn for old field is called here: ' index(1).subs]);
                                    end
                                    index(iIndex).subs = 'nSamples';
                                case 'Channels'
                                    %pdi:no warning for channels
                                    %                                 if ita_preferences('developerMode') && ita_preferences('verboseMode')
                                    %                                     warning(['@itaHeader: subasgn for old field is called here: ' index(1).subs]);
                                    %                                 end
                                    index(iIndex).subs = 'nChannels';
                                case {'fieldnames', 'old_fields'}
                                    donothing = true;
                                    varargout = {};
                                otherwise
                                    if ~any(cell2mat(strfind(tfieldnames,index(iIndex).subs))) && iIndex == 1
                                        donothing = true;
                                    end
                                    old_field = 0;
                            end
                            if numel(index) >= iIndex+1
                                if isempty(index(iIndex+1).subs)
                                    index(iIndex+1).subs = {':'};
                                end
                            end
                        case '()'
                        case '{}'
                        otherwise
                    end
                    iIndex = iIndex+1;
                end
                if ~donothing
                    try
                        audioObj = builtin('subsasgn', audioObj, index, value);
                    catch errormsg%#ok<CTCH>
                        warning('subsasgn@itaHeader: Something went wrong, please use new header-layout'); %#ok<WNTAG>
                        disp(errormsg.message);
                    end
                else
                end
                varargout{1} = audioObj;
                if old_field && ita_preferences('developerMode') && ita_preferences('verboseMode')
                    warning(['@itaHeader: subasgn for old field is called here!' index(1).subs]);
                end
            end
            
            function varargout = isfield(itaHeader,fieldname)
                % New isfield, return true for all fields stores in fieldnames
                result = (any(cell2mat(strfind(itaHeader.fieldnames,fieldname))) || any(cell2mat(strfind(itaHeader.old_fields,fieldname))));
                if strcmpi(fieldname,'fcentre')
                    if isempty(itaHeader.fcentre)
                        result = false;
                    else
                        result = true;
                    end
                end
                
                % Warn on old fieldnames
                if any(cell2mat(strfind(itaHeader.old_fields,fieldname))) && ~strcmpi(fieldname,'Channel')
                    if ita_preferences('developerMode') && ita_preferences('verboseMode')
                        warning(['@itaHeader: isfield for old field is called here: ' fieldname]);
                    end
                end
                
                varargout{1} = result;
            end
            
            function varargout = isstruct(varargin)
                %New isstruct, return always true, to be compatible with old header struct
                varargout{1} = 1;
            end
            
            function varargout = rmfield(varargin)
                %Just do nothing
                varargout = varargin(1);
            end
            
            function varargout = orderfields(varargin)
                %Just do nothing
                varargout = varargin(1);
            end
            
            function varargout = isempty(varargin)
                %Always return false, to be compatible with old header struct
                varargout{1} = 0;
                
            end
            
            function varargout = fields(varargin)
                if isempty(varargin{1}.fcentre)
                    varargout{1} = varargin{1}.fieldnames;
                else
                    varargout{1} = [varargin{1}.fieldnames {'fcentre'}];
                end
            end
            
            function disp(varargin)
                header = varargin{1};
                builtin('disp',header);
            end
        end
    end