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.10 2007/08/31 17:40:09 hewitson 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 ipaddress = char(getHostAddress(java.net.InetAddress.getLocalHost));
0072 hostname = char(getHostName(java.net.InetAddress.getLocalHost));
0073 os = computer;
0074
0075
0076
0077
0078
0079 matlab_version = getappdata(0, 'matlab_version');
0080 sigproc_version = getappdata(0, 'sigproc_version');
0081 ltpda_version = getappdata(0, 'ltpda_version');
0082
0083
0084
0085
0086
0087 p.creator = creator;
0088 p.created = created;
0089 p.ip = ipaddress;
0090 p.hostname = hostname;
0091 p.os = os;
0092 p.matlab_version = matlab_version;
0093 p.sigproc_version = sigproc_version;
0094 p.ltpda_version = ltpda_version;
0095 p = class(p, 'provenance');
0096
0097