0001 function p = provenance(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 ALGONAME = mfilename;
0019 VERSION = '$Id: provenance.m,v 1.13 2007/10/19 13:10:03 ingo Exp $';
0020
0021 if nargin == 2
0022 if isa(varargin{1}, 'database')
0023 p = retrieve(varargin{1}, varargin{2:end});
0024 return
0025 else
0026 error('### Incorrect provenance constructor.');
0027 end
0028
0029 elseif nargin == 1
0030
0031
0032 if isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl')
0033 p = fromxml(varargin{1});
0034 return
0035
0036 elseif ischar(varargin{1})
0037
0038 filename = varargin{1};
0039 [path, name, ext, vers] = fileparts(filename);
0040
0041 if ~isempty(ext)
0042 switch ext
0043 case '.mat'
0044 p = load(filename);
0045 case '.xml'
0046 p = xmlparse(provenance, filename);
0047 otherwise
0048 error('### Unknown file type.');
0049 end
0050 return
0051 else
0052
0053 creator = varargin{1};
0054 end
0055
0056 elseif isstruct(varargin{1})
0057
0058 p = class(varargin{1}, 'provenance');
0059 return
0060 else
0061 error('### incorrect inputs');
0062 end
0063 else
0064 creator = 'unknown';
0065 end
0066 created = time;
0067
0068
0069
0070
0071 try
0072 creator = char(java.lang.System.getProperties.getProperty('user.name'));
0073 catch
0074 creator = 'unknown';
0075 end
0076
0077
0078
0079
0080 ipaddress = char(getHostAddress(java.net.InetAddress.getLocalHost));
0081 hostname = char(getHostName(java.net.InetAddress.getLocalHost));
0082 os = computer;
0083
0084
0085
0086
0087
0088 matlab_version = getappdata(0, 'matlab_version');
0089 sigproc_version = getappdata(0, 'sigproc_version');
0090 ltpda_version = getappdata(0, 'ltpda_version');
0091
0092
0093
0094
0095
0096 p.creator = creator;
0097 p.created = created;
0098 p.ip = ipaddress;
0099 p.hostname = hostname;
0100 p.os = os;
0101 p.matlab_version = matlab_version;
0102 p.sigproc_version = sigproc_version;
0103 p.ltpda_version = ltpda_version;
0104 p = class(p, 'provenance');
0105
0106