Mercurial > hg > ltpda-connection-manager
diff credentials.m @ 0:d5fef23867bb
First workig implementation.
author | Daniele Nicolodi <daniele@science.unitn.it> |
---|---|
date | Sun, 23 May 2010 10:51:35 +0200 |
parents | |
children | b4f2f4c10918 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/credentials.m Sun May 23 10:51:35 2010 +0200 @@ -0,0 +1,109 @@ +classdef credentials + properties + + hostname = []; + database = []; + username = []; + password = []; + expiry = 0; + + end % properties + + methods + + % contructor + function obj = credentials(hostname, database, username, password) + switch nargin + case 1 + obj.hostname = hostname; + case 2 + obj.hostname = hostname; + obj.database = database; + case 3 + obj.hostname = hostname; + obj.database = database; + obj.username = username; + case 4 + obj.hostname = hostname; + obj.database = database; + obj.username = username; + obj.password = password; + end + end + + % convert to string representation + function str = char(obj, mode) + if nargin < 2 + mode = ''; + end + switch mode + case 'short' + % do not show password + frm = 'mysql://%s/%s username=%s'; + str = sprintf(frm, obj.hostname, obj.database, obj.username); + case 'full' + % show password + frm = 'mysql://%s/%s username=%s password=%s'; + str = sprintf(frm, obj.hostname, obj.database, obj.username, obj.password); + otherwise + % by default only show if a password is known + passwd = []; + if ischar(obj.password) + passwd = 'YES'; + end + frm = 'mysql://%s/%s username=%s password=%s'; + str = sprintf(frm, obj.hostname, obj.database, obj.username, passwd); + end + end + + % display + function disp(obj) + disp([' ' char(obj) char(10)]); + end + + % check that a credentials object contails all the required informations + function rv = complete(obj) + info = {'hostname', 'database', 'username', 'password'}; + for kk = 1:numel(info) + if isempty(obj.(info{kk})) + rv = false; + return; + end + end + rv = true; + end + + % check if the credentials are expired + function rv = expired(obj) + rv = false; + if obj.expiry > 0 && double(time()) > obj.expiry + rv = true; + end + end + + % check if the credentials object matches the given informations + function rv = match(obj, hostname, database, username) + if nargin < 4 + username = []; + end + + % default value + rv = true; + + if ~strcmp(obj.hostname, hostname) + rv = false; + return; + end + if ~strcmp(obj.database, database) + rv = false; + return; + end + if ischar(username) && ischar(obj.username) && ~strcmp(obj.username, username) + rv = false; + return; + end + end + + end % methods + +end \ No newline at end of file