Skip to content
Snippets Groups Projects
testDoubleDate.m 3.96 KiB
Newer Older
function testDoubleDate(hMainFig)
%
% Test if there are records with identical date and time.
% Suppress records with the same date (keep only one record)
%
% Test only consecutive date : 
% very simple test made because of a bug in the acquisition
% software used on IRD VOS
%
% Input
% -----
% hMainFig ............ Handel to the main user interface
%
% Function called by 'OpenMenuCallback' in tqgqc.m 
%
% $Id$

% Get the data from the application GUI
% -------------------------------------
tsg = getappdata( hMainFig, 'tsg_data');

% Find indices of consecutive identical dates 
% -------------------------------------------
indIdentRec = find( diff(tsg.DAYD) == 0);

% If there are identical records ...
% ----------------------------------
if ~isempty(indIdentRec)

  % Number of indentical dates - Conversion in String
  % -------------------------------------------------
  nIdentRec    = size(indIdentRec, 1);
  StrnIdentRec = sprintf( '%d', nIdentRec);
  
  % Create the message text to display the 10 first identical dates
  % ---------------------------------------------------------------
  nMaxRec = min(10, nIdentRec);
  message = { 'ATTENTION: consecutive identical dates are detected'; ' ';...
              [StrnIdentRec ' records will be supressed']; ' ';...
              'yyyymmddhhmmss'; ' '; tsg.DATE(indIdentRec(1:nMaxRec), :);...
              'etc.' }; 
  
  % Display the message box and blocks execution until the msgbox is deleted.
  % -------------------------------------------------------------------------
  hMsg1 = msgbox(message,'Test identical date','warn', 'modal');
  uiwait(hMsg1);

  % returns a cell array of strings containing the structure field names
  % associated with the structure tsg.
  % --------------------------------------------------------------------
  tsgNames = fieldnames(tsg);
  
  % Number of structure field names in 'tsg'
  % ----------------------------------------
  nMembers = size(tsgNames,1);
  
  % Number of total records/dates
  % -----------------------------
  nRecords = size(tsg.DAYD,1);
  
  % Loop on the members of the tsg structure
  % ----------------------------------------
  for i = 1 : nMembers
    
    % Some members of the tsg structure are also structures. We do not
    % need to check them
    % ----------------------------------------------------------------
    if ~isstruct(tsg.(char(tsgNames(i))))
      
      % Size of a member of tsg structure
      % ---------------------------------
      [n] = size(tsg.(char(tsgNames(i))),1);
      
      % If the member is the same size as tsg.DAYD ..
      % --------------------------------------------
      if n == nRecords
        
        % Identical records are suppressed only for numeric and character
        % arrays
        % ---------------------------------------------------------------
        if isnumeric(tsg.(char(tsgNames(i))))
          tsg.(char(tsgNames(i)))(indIdentRec) = [];
        elseif ischar(tsg.(char(tsgNames(i))))
          tsg.(char(tsgNames(i)))(indIdentRec, :) = [];
        else
          % Display the message box and blocks execution until
          % the msgbox is deleted.
          % --------------------------------------------------
          hMsg2 = msgbox('ATTENTION: type of matrix unknown - CHECK testDoubleDate.m',...
            'SCRIPT : testDoubleDate.m', 'modal');
          uiwait(hMsg2);
          
        end
      end
    end
  end
end

% Save tsg structure
% ------------------
setappdata( hMainFig, 'tsg_data', tsg);

% Very simple test to check if there are still identical dates 
% ------------------------------------------------------------
sortDayd = sort( tsg.DAYD );
indIdentRec = find( diff(sortDayd) == 0);

% If there are identical records ...
% ----------------------------------
if ~isempty(indIdentRec) 
  message = { 'Function : testDoubleDate.m ';' ';...
              'ATTENTION: Identical dates are detected'; ' ';...
              'Check you file'};
  hMsg3 = msgbox( message,'SCRIPT : testDoubleDate.m', 'modal');
  uiwait(hMsg3);
end