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.19 2008/02/15 17:35:55 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 creator = find(varargin{1}, 'creator');
0087 creator = strcat('Recreate from: ', creator);
0088 p = provenance(creator);
0089 return
0090 else
0091 error('### incorrect inputs');
0092 end
0093 end
0094 created = time;
0095
0096
0097
0098
0099 try
0100 if isempty(creator)
0101 creator = char(java.lang.System.getProperties.getProperty('user.name'));
0102 end
0103 catch
0104 creator = 'unknown';
0105 end
0106
0107
0108
0109
0110 ipaddress = char(getHostAddress(java.net.InetAddress.getLocalHost));
0111 hostname = char(getHostName(java.net.InetAddress.getLocalHost));
0112 os = computer;
0113
0114
0115
0116
0117
0118 matlab_version = getappdata(0, 'matlab_version');
0119 sigproc_version = getappdata(0, 'sigproc_version');
0120 ltpda_version = getappdata(0, 'ltpda_version');
0121
0122
0123
0124
0125
0126 p.creator = creator;
0127 p.created = created;
0128 p.ip = ipaddress;
0129 p.hostname = hostname;
0130 p.os = os;
0131 p.matlab_version = matlab_version;
0132 p.sigproc_version = sigproc_version;
0133 p.ltpda_version = ltpda_version;
0134 p = class(p, 'provenance');
0135
0136