0001 function [AOids, Cid] = submit(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 if nargin == 2
0029 if isa(varargin{1}, 'ao') && ischar(varargin{2})
0030 in = char(varargin{2});
0031 if strcmp(in, 'Params')
0032 AOids = getDefaultPL();
0033 return
0034 end
0035 end
0036 end
0037
0038
0039
0040 as = [];
0041 comment = [];
0042 for j=1:nargin
0043 a = varargin{j};
0044 if isa(a, 'ao')
0045 as = [as a];
0046 end
0047 if ischar(a)
0048 comment = varargin{j};
0049 end
0050 end
0051 na = length(as);
0052 if na < 1
0053 error('### Incorrect inputs: please supply at least one AO to submit.');
0054 end
0055 if isempty(comment) || length(comment)<10
0056 error('### Incorrect inputs: please supply a comment of at least 10 characters in length.');
0057 end
0058 disp(sprintf('** Submitting %d AOs.', na));
0059
0060
0061
0062
0063 conn = mysql_connect();
0064
0065
0066
0067
0068 AOids = [];
0069 Cid = -1;
0070
0071 for j=1:na
0072
0073 a = as(j);
0074
0075 a = tag(a, conn);
0076
0077 disp(sprintf('** Submitting AO: %06d/%s', a.tag, a.name));
0078
0079
0080 [userid, dbuser] = mysql_getUserID(conn);
0081 disp(sprintf('** submitting as user %s/%d', dbuser, userid));
0082
0083
0084 name = a.name;
0085 data = a.data;
0086 dinfo = whos('data');
0087 dtype = dinfo.class;
0088 dname = data.name;
0089 submitted = ltpda_reformat_date(sprintf('%s', datestr(now,31)));
0090 prov = a.provenance;
0091 created = ltpda_reformat_date(get(prov, 'created'));
0092 ip = get(prov, 'ip');
0093 hostname = get(prov, 'hostname');
0094 os = get(prov, 'os');
0095 filename = sprintf('AO%06d.xml', a.tag);
0096
0097
0098 x = xml(a);
0099 atxt = xmlwrite(x.docNode);
0100
0101
0102 colnames = {'name','dtype','dname','ndata',...
0103 'UserID','Comment','Creation','Submitted',...
0104 'IP','Hostname','OS','Filename','AO'};
0105 exdata = {name,dtype,dname,len(a),...
0106 userid,comment,created,submitted,...
0107 ip,hostname,os,filename,atxt};
0108
0109 fastinsert(conn, 'aos', colnames, exdata);
0110
0111
0112 colnames = {'aoid','UserId','Tdate','SrcIP','Hostname','Direction'};
0113 exdata = {a.tag,userid,submitted,ip,hostname,'in'};
0114 try
0115 fastinsert(conn, 'transactions', colnames, exdata);
0116 catch
0117 warning(sprintf('### error updating transaction table for submission of AO %s/%d', a.name, a.tag));
0118 end
0119
0120
0121 AOids = [AOids a.tag];
0122
0123 end
0124
0125
0126 colnames = {'num','aoids','UserId','submitted','SrcIP','Hostname','Comment'};
0127 exdata = {length(AOids),csv(AOids),userid,submitted,ip,hostname,comment};
0128 if ~isempty(AOids)
0129 try
0130 fastinsert(conn, 'collections', colnames, exdata);
0131
0132 curs = exec(conn, 'select max(id) from collections');
0133 curs = fetch(curs);
0134 Cid = curs.Data{1};
0135 close(curs);
0136 catch
0137 warning('### error submitting AO collection.');
0138 end
0139 end
0140
0141
0142
0143
0144
0145
0146 close(conn);
0147
0148
0149
0150 function s = csv(x)
0151
0152 s = sprintf('%g,', x);
0153 s = s(1:end-1);
0154
0155
0156
0157 function plo = getDefaultPL()
0158
0159 disp('* creating default plist...');
0160 plo = plist();
0161 disp('* done.');
0162
0163
0164