diff m-toolbox/classes/+utils/@jmysql/submitDialog.m @ 0:f0afece42f48

Import.
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Wed, 23 Nov 2011 19:22:13 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/m-toolbox/classes/+utils/@jmysql/submitDialog.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,116 @@
+% SUBMITDIALOG a submission dialog for submitting objects an LTPDA repository.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% DESCRIPTION: SUBMITDIALOG a submission dialog for submitting objects an
+%              LTPDA repository.
+%
+% CALL:        sinfo = utils.jmysql.submitDialog();
+%              sinfo = utils.jmysql.submitDialog(conn);
+%              sinfo = utils.jmysql.submitDialog(conn,sinfo);
+%
+% INPUTS:
+%              conn  - a connection object like that returned from
+%                      utils.jmysql.connect.
+%              sinfo - an sinfo structure to pre-populate the entry fields
+%
+% OUTPUTS: 
+%              sinfo - an sinfo structure suitable to pass to submit
+% 
+% NOTE: the sinfo object contains a valid and connected database connection
+% object. It is up to the caller to close this connection when it is no
+% longer required.
+% 
+% NOTE: if an input connection is provided, this is not closed by this
+% process.
+%
+% VERSION:     $Id: submitDialog.m,v 1.4 2009/10/02 09:19:50 hewitson Exp $
+%
+% HISTORY:     24-05-2007 M Hewitson
+%                 Creation
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+function sinfo = submitDialog(varargin)
+  
+  if nargin > 0 && ~isa(varargin{1}, 'mpipeline.repository.RepositoryConnection')
+    error('### The first argument should be empty or a RepositoryConnection');
+  end
+  
+  isinfo = [];
+  
+  if nargin == 2 && isstruct(varargin{2})
+    isinfo = varargin{2};
+  end
+  
+  % Inputs
+  conn = [];
+  if nargin > 0
+    conn  = varargin{1};
+  end
+
+  % Check the connection
+  if ~isempty(conn)
+    closeConnection = false;
+    if ~conn.isConnected
+      conn.openConnection
+    end
+    if ~conn.isConnected
+      error('### Failed to connect to repository.');
+    end
+  else
+    closeConnection = true;
+  end
+  
+  % Get host list
+  prefs = getappdata(0, 'LTPDApreferences');
+  hosts = java.util.ArrayList();
+  servers = prefs.repository.servers;
+  for kk=1:numel(servers)
+    hosts.add(servers{kk});
+  end
+  
+  jisinfo = [];
+  if ~isempty(isinfo) 
+    
+    jisinfo = mpipeline.repository.SubmissionInfo([]);
+    jisinfo.setExperimentTitle(isinfo.experiment_title);
+    jisinfo.setExperimentDescription(isinfo.experiment_description);
+    jisinfo.setAnalysisDescription(isinfo.analysis_description);
+    jisinfo.setQuantity(isinfo.quantity);
+    jisinfo.setKeywords(isinfo.keywords);
+    jisinfo.setReferenceIDs(isinfo.reference_ids);
+    jisinfo.setAdditionalComments(isinfo.additional_comments);
+    jisinfo.setAdditionalAuthors(isinfo.additional_authors);
+    
+  end
+  
+  % Open submit dialog
+  warning('off', 'MATLAB:JavaEDTAutoDelegation');
+  srd = mpipeline.repository.SubmitInfoDialog([], jisinfo, hosts, conn);
+  srd.setVisible(true)
+  warning('on', 'MATLAB:JavaEDTAutoDelegation');
+  
+  sinfo = [];
+  if ~srd.isCancelled
+    
+    jsinfo = srd.getSubmissionInfo;
+    sinfo.experiment_title       = char(jsinfo.getExperimentTitle);
+    sinfo.experiment_description = char(jsinfo.getExperimentDescription);
+    sinfo.analysis_description   = char(jsinfo.getAnalysisDescription);
+    sinfo.quantity               = char(jsinfo.getQuantity);
+    sinfo.keywords               = char(jsinfo.getKeywords);
+    sinfo.reference_ids          = char(jsinfo.getReferenceIDs);
+    sinfo.additional_comments    = char(jsinfo.getAdditionalComments);
+    sinfo.additional_authors     = char(jsinfo.getAdditionalAuthors);
+    
+    jconn = srd.getRepoConnection;    
+    sinfo.conn = jconn; %utils.jmysql.jconnTodbconn(jconn);    
+    if closeConnection
+      jconn.closeConnection;
+    end
+  end
+  
+end
+