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.16 2008/01/07 13:54:11 ingo Exp $';
0019 creator = [];
0020
0021
0022 if nargin == 2
0023 if isa(varargin{1}, 'provenance') && ischar(varargin{2})
0024 in = char(varargin{2});
0025 if strcmp(in, 'Params')
0026 p = plist;
0027 return
0028 elseif strcmp(in, 'Version')
0029 p = VERSION;
0030 return
0031 end
0032 end
0033 end
0034
0035
0036 if nargin == 2
0037 if isa(varargin{1}, 'database')
0038 p = retrieve(varargin{1}, varargin{2:end});
0039 return
0040 else
0041 error('### Incorrect provenance constructor.');
0042 end
0043
0044 elseif nargin == 1
0045
0046
0047 if isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl')
0048 p = fromxml(varargin{1});
0049 return
0050
0051 elseif isa(varargin{1}, 'provenance')
0052 p = varargin{1};
0053 return
0054
0055 elseif ischar(varargin{1})
0056
0057 filename = varargin{1};
0058 [path, name, ext, vers] = fileparts(filename);
0059
0060 if ~isempty(ext)
0061 switch ext
0062 case '.mat'
0063 p = load(filename);
0064 p = p.a;
0065 case '.xml'
0066 p = xmlparse(provenance, filename);
0067 otherwise
0068 error('### Unknown file type.');
0069 end
0070 return
0071 else
0072
0073 creator = varargin{1};
0074 end
0075
0076 elseif isstruct(varargin{1})
0077
0078 p = class(varargin{1}, 'provenance');
0079 return
0080 else
0081 error('### incorrect inputs');
0082 end
0083 end
0084 created = time;
0085
0086
0087
0088
0089 try
0090 if isempty(creator)
0091 creator = char(java.lang.System.getProperties.getProperty('user.name'));
0092 end
0093 catch
0094 creator = 'unknown';
0095 end
0096
0097
0098
0099
0100 ipaddress = char(getHostAddress(java.net.InetAddress.getLocalHost));
0101 hostname = char(getHostName(java.net.InetAddress.getLocalHost));
0102 os = computer;
0103
0104
0105
0106
0107
0108 matlab_version = getappdata(0, 'matlab_version');
0109 sigproc_version = getappdata(0, 'sigproc_version');
0110 ltpda_version = getappdata(0, 'ltpda_version');
0111
0112
0113
0114
0115
0116 p.creator = creator;
0117 p.created = created;
0118 p.ip = ipaddress;
0119 p.hostname = hostname;
0120 p.os = os;
0121 p.matlab_version = matlab_version;
0122 p.sigproc_version = sigproc_version;
0123 p.ltpda_version = ltpda_version;
0124 p = class(p, 'provenance');
0125
0126