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 as = [];
0021 comment = [];
0022 for j=1:nargin
0023 a = varargin{j};
0024 if isa(a, 'ao')
0025 as = [as a];
0026 end
0027 if ischar(a)
0028 comment = varargin{j};
0029 end
0030 end
0031 na = length(as);
0032 if na < 1
0033 error('### Incorrect inputs: please supply at least one AO to submit.');
0034 end
0035 if isempty(comment) || length(comment)<10
0036 error('### Incorrect inputs: please supply a comment of at least 10 characters in length.');
0037 end
0038 disp(sprintf('** Submitting %d AOs.', na));
0039
0040
0041
0042
0043 conn = mysql_connect();
0044
0045
0046
0047
0048 AOids = [];
0049 Cid = -1;
0050
0051 for j=1:na
0052
0053 a = as(j);
0054
0055 a = tag(a, conn);
0056
0057 disp(sprintf('** Submitting AO: %06d/%s', a.tag, a.name));
0058
0059
0060 [userid, dbuser] = mysql_getUserID(conn);
0061 disp(sprintf('** submitting as user %s/%d', dbuser, userid));
0062
0063
0064 name = a.name;
0065 data = a.data;
0066 dinfo = whos('data');
0067 dtype = dinfo.class;
0068 dname = data.name;
0069 submitted = ltpda_reformat_date(sprintf('%s', datestr(now,31)));
0070 prov = a.provenance;
0071 created = ltpda_reformat_date(get(prov, 'created'));
0072 ip = get(prov, 'ip');
0073 hostname = get(prov, 'hostname');
0074 os = get(prov, 'os');
0075 filename = sprintf('AO%06d.xml', a.tag);
0076
0077
0078 x = xml(a);
0079 atxt = xmlwrite(x.docNode);
0080
0081
0082 colnames = {'name','dtype','dname','ndata',...
0083 'UserID','Comment','Creation','Submitted',...
0084 'IP','Hostname','OS','Filename','AO'};
0085 exdata = {name,dtype,dname,len(a),...
0086 userid,comment,created,submitted,...
0087 ip,hostname,os,filename,atxt};
0088
0089 fastinsert(conn, 'aos', colnames, exdata);
0090
0091
0092 colnames = {'aoid','UserId','Tdate','SrcIP','Hostname','Direction'};
0093 exdata = {a.tag,userid,submitted,ip,hostname,'in'};
0094 try
0095 fastinsert(conn, 'transactions', colnames, exdata);
0096 catch
0097 warning(sprintf('### error updating transaction table for submission of AO %s/%d', a.name, a.tag));
0098 end
0099
0100
0101 AOids = [AOids a.tag];
0102
0103 end
0104
0105
0106 colnames = {'num','aoids','UserId','submitted','SrcIP','Hostname','Comment'};
0107 exdata = {length(AOids),csv(AOids),userid,submitted,ip,hostname,comment};
0108 if ~isempty(AOids)
0109 try
0110 fastinsert(conn, 'collections', colnames, exdata);
0111
0112 curs = exec(conn, 'select max(id) from collections');
0113 curs = fetch(curs);
0114 Cid = curs.Data{1};
0115 close(curs);
0116 catch
0117 warning('### error submitting AO collection.');
0118 end
0119 end
0120
0121
0122
0123
0124
0125
0126 close(conn);
0127
0128
0129
0130 function s = csv(x)
0131
0132 s = sprintf('%g,', x);
0133 s = s(1:end-1);
0134
0135
0136