-
Yves Gouriou authored
Le test est fait apres un tri. Aucune correction apportee. Un message d'avertissement apparait a l'ecran.
Yves Gouriou authoredLe test est fait apres un tri. Aucune correction apportee. Un message d'avertissement apparait a l'ecran.
testDoubleDate.m 3.96 KiB
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
end