0001 function p = provenance(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 VERSION = '$Id: provenance.m,v 1.20 2008/03/12 16:59:19 ingo Exp $';
0019 CATEGORY = 'Constructor';
0020
0021 creator = [];
0022
0023
0024 if nargin == 2
0025 if isa(varargin{1}, 'provenance') && ischar(varargin{2})
0026 in = char(varargin{2});
0027 if strcmp(in, 'Params')
0028 p = plist;
0029 return
0030 elseif strcmp(in, 'Version')
0031 p = VERSION;
0032 return
0033 elseif strcmp(in, 'Category')
0034 p = CATEGORY;
0035 return
0036 end
0037 end
0038 end
0039
0040
0041 if nargin == 2
0042 if isa(varargin{1}, 'database')
0043 p = retrieve(varargin{1}, varargin{2:end});
0044 return
0045 else
0046 error('### Incorrect provenance constructor.');
0047 end
0048
0049 elseif nargin == 1
0050
0051
0052 if isa(varargin{1}, 'provenance')
0053 p = varargin{1};
0054 return
0055
0056 elseif ischar(varargin{1})
0057
0058 filename = varargin{1};
0059 [path, name, ext, vers] = fileparts(filename);
0060
0061 if ~isempty(ext)
0062 switch ext
0063 case '.mat'
0064 p = load(filename);
0065 p = p.a;
0066 case '.xml'
0067 root_node = xmlread(filename);
0068 p = ltpda_xmlread(root_node, 'provenance');
0069 otherwise
0070 error('### Unknown file type.');
0071 end
0072 return
0073 else
0074
0075 creator = varargin{1};
0076 end
0077
0078 elseif isstruct(varargin{1})
0079
0080 p = class(varargin{1}, 'provenance');
0081 return
0082
0083
0084 elseif isa(varargin{1}, 'plist')
0085
0086
0087 if nparams(varargin{1}) == 0
0088 p = provenance();
0089 return
0090 else
0091
0092 creator = find(varargin{1}, 'creator');
0093 creator = strcat('Recreate from: ', creator);
0094 p = provenance(creator);
0095 return
0096 end
0097
0098 else
0099 error('### incorrect inputs');
0100 end
0101 end
0102 created = time;
0103
0104
0105
0106
0107 try
0108 if isempty(creator)
0109 creator = char(java.lang.System.getProperties.getProperty('user.name'));
0110 end
0111 catch
0112 creator = 'unknown';
0113 end
0114
0115
0116
0117
0118 ipaddress = char(getHostAddress(java.net.InetAddress.getLocalHost));
0119 hostname = char(getHostName(java.net.InetAddress.getLocalHost));
0120 os = computer;
0121
0122
0123
0124
0125
0126 matlab_version = getappdata(0, 'matlab_version');
0127 sigproc_version = getappdata(0, 'sigproc_version');
0128 ltpda_version = getappdata(0, 'ltpda_version');
0129
0130
0131
0132
0133
0134 p.creator = creator;
0135 p.created = created;
0136 p.ip = ipaddress;
0137 p.hostname = hostname;
0138 p.os = os;
0139 p.matlab_version = matlab_version;
0140 p.sigproc_version = sigproc_version;
0141 p.ltpda_version = ltpda_version;
0142 p = class(p, 'provenance');
0143
0144