Skip to content
Snippets Groups Projects
concatSample.m 5.68 KiB
Newer Older
function error = concatSample( hMainFig, data )
%
% Function that concatenates the sample structure data
% to the 'tsg' structure with _EXT fields
%
% input
%  hMainFig .... handle to the tsgqc main program
%  data ........ structure of _EXT data to trasfer to the tsg structure
%
% output
%
%  return ...... 1 data structure transfered to tsg structure
%               -1 nothing has been done

error = 1;

tsg = getappdata( hMainFig, 'tsg_data' );

% Get NO_CONTROL code value
% -------------------------
NO_CONTROL = get(tsg.qc.hash, 'NO_CONTROL', 'code');

if isempty( tsg.DAYD_EXT )

  tsg.DAYD_EXT          = data.DAYD_EXT;
  tsg.DATE_EXT          = data.DATE_EXT;
  tsg.LATX_EXT          = data.LATX_EXT;
  tsg.LONX_EXT          = data.LONX_EXT;
  tsg.SSPS_EXT          = data.SSPS_EXT;
  tsg.SSPS_EXT_QC       = int8(data.SSPS_EXT_QC);
  tsg.SSPS_EXT_TYPE     = char(data.SSPS_EXT_TYPE);
  tsg.SSPS_EXT_ANALDATE = char(data.SSPS_EXT_ANALDATE);
  tsg.SSPS_EXT_BOTTLE   = data.SSPS_EXT_BOTTLE;
  tsg.SSTP_EXT          = data.SSTP_EXT;
  tsg.SSTP_EXT_QC       = int8(data.SSTP_EXT_QC);
  tsg.SSTP_EXT_TYPE     = char(data.SSTP_EXT_TYPE);
else

  errmsg = {'Samples already loaded '; ' '; ...
    'Do you want to replace the existing samples ?'};
  button = questdlg(errmsg, 'Sample','Yes', 'No', 'No');

  switch button
    case 'Yes'

      tsg.DAYD_EXT          = data.DAYD_EXT;
      tsg.DATE_EXT          = data.DATE_EXT;
      tsg.LATX_EXT          = data.LATX_EXT;
      tsg.LONX_EXT          = data.LONX_EXT;
      tsg.SSPS_EXT          = data.SSPS_EXT;
      tsg.SSPS_EXT_QC       = int8(data.SSPS_EXT_QC);
      tsg.SSPS_EXT_TYPE     = char(data.SSPS_EXT_TYPE);
      tsg.SSPS_EXT_ANALDATE = char(data.SSPS_EXT_ANALDATE);
      tsg.SSPS_EXT_BOTTLE   = data.SSPS_EXT_BOTTLE;
      tsg.SSTP_EXT          = data.SSTP_EXT;
      tsg.SSTP_EXT_QC       = int8(data.SSTP_EXT_QC);
      tsg.SSTP_EXT_TYPE     = char(data.SSTP_EXT_TYPE);

    case 'No'

      errmsg = {'Samples already loaded '; ' '; ...
        'Do you really want to concatenate this file with the existing samples ?'};
      button2 = questdlg(errmsg, 'Sample','Yes', 'No', 'No');

      switch button2
        case 'No'

          % Nothing is done
          % ---------------
          error = -1;
          return;

        otherwise

          % Test if at least one variable (SSPS or SSTP) exists. If one is missing
          % create the array filled with NaN
          % ----------------------------------------------------------------------
          if isempty(tsg.SSPS_EXT) && isempty(tsg.SSTP_EXT)
            error = -1;
            return;
          end
          if isempty(tsg.SSTP_EXT) && ~isempty(tsg.SSPS_EXT)
            tsg.SSTP_EXT      = NaN * ones( size( tsg.DAYD_EXT ) );
            label = 'UNKN';
            tsg.SSTP_EXT_TYPE = label( ones(length(tsg.SSTP_EXT),1), :);
            tsg.SSTP_EXT_QC   = NO_CONTROL * int8(ones( size( tsg.SSTP_EXT )));

          end
          if isempty(tsg.SSPS_EXT) && ~isempty(tsg.SSTP_EXT)
            tsg.SSPS_EXT      = NaN * ones( size( tsg.DAYD_EXT ) );
            tsg.SSPS_EXT_TYPE = label( ones(length(tsg.SSTP_EXT),1), :);
            tsg.SSPS_EXT_QC   = NO_CONTROL * int8(ones( size( tsg.SSTP_EXT )));
            label = '19500101000000';
            tsg.SSPS_EXT_ANALDATE = label( ones(length(tsg.SSTP_EXT),1), :);
            tsg.SSPS_EXT_BOTTLE   = zeros( size( tsg.DAYD_EXT ) );
          end

          tsg.DAYD_EXT          = [tsg.DAYD_EXT;        data.DAYD_EXT];
          tsg.DATE_EXT          = [tsg.DATE_EXT;        data.DATE_EXT];
          tsg.LATX_EXT          = [tsg.LATX_EXT;        data.LATX_EXT];
          tsg.LONX_EXT          = [tsg.LONX_EXT;        data.LONX_EXT];
          tsg.SSPS_EXT          = [tsg.SSPS_EXT;        data.SSPS_EXT];
          tsg.SSPS_EXT_BOTTLE   = [tsg.SSPS_EXT_BOTTLE; data.SSPS_EXT_BOTTLE];
          tsg.SSPS_EXT_QC       = [tsg.SSPS_EXT_QC;     int8(data.SSPS_EXT_QC)];
          tsg.SSPS_EXT_TYPE     = strvcat(tsg.SSPS_EXT_TYPE,...
                                          char(data.SSPS_EXT_TYPE));
          tsg.SSPS_EXT_ANALDATE = strvcat(tsg.SSPS_EXT_ANALDATE,...
                                          char(data.SSPS_EXT_ANALDATE));
          tsg.SSTP_EXT          = [tsg.SSTP_EXT;        data.SSTP_EXT];
          tsg.SSTP_EXT_QC       = [tsg.SSTP_EXT_QC;     int8(data.SSTP_EXT_QC)];
          tsg.SSTP_EXT_TYPE     = strvcat(tsg.SSTP_EXT_TYPE, ...
                                          char(data.SSTP_EXT_TYPE));

      end
  end
end

% Sort the struct tsg - increasing time.
% -----------------------------------------
if ~isempty(tsg.DAYD_EXT)
  [tsg.DAYD_EXT, iOrder] = sort(tsg.DAYD_EXT);
  tsg.DATE_EXT           = tsg.DATE_EXT(iOrder,:);
  tsg.LATX_EXT           = tsg.LATX_EXT(iOrder);
  tsg.LONX_EXT           = tsg.LONX_EXT(iOrder);
  tsg.SSPS_EXT           = tsg.SSPS_EXT(iOrder);
  tsg.SSPS_EXT_QC        = tsg.SSPS_EXT_QC(iOrder);
  tsg.SSPS_EXT_BOTTLE    = tsg.SSPS_EXT_BOTTLE(iOrder);
  tsg.SSPS_EXT_TYPE      = tsg.SSPS_EXT_TYPE(iOrder,:);
  tsg.SSPS_EXT_ANALDATE  = tsg.SSPS_EXT_ANALDATE(iOrder,:);
  tsg.SSTP_EXT           = tsg.SSTP_EXT(iOrder);
  tsg.SSTP_EXT_QC        = tsg.SSTP_EXT_QC(iOrder);
  tsg.SSTP_EXT_TYPE      = tsg.SSTP_EXT_TYPE(iOrder,:);

  % _TYPE must be of type CHAR*4
  % ----------------------------
  tsg.SSPS_EXT_TYPE = char( blanks(4), tsg.SSPS_EXT_TYPE);
  tsg.SSPS_EXT_TYPE(1,:) = [];
  tsg.SSTP_EXT_TYPE = char( blanks(4), tsg.SSTP_EXT_TYPE);
  tsg.SSTP_EXT_TYPE(1,:) = [];

end

% Save the data in the application GUI
% ------------------------------------
setappdata( hMainFig, 'tsg_data', tsg );

end