Fix. Default password should be [] not an empty string
line source
+ − % CB_GET_DBS callback when the user clicks the 'get dbs' button.
+ − %
+ − % M Hewitson 22-09-08
+ − %
+ − % $Id: cb_get_dbs.m,v 1.7 2011/04/08 08:56:26 hewitson Exp $
+ − %
+ −
+ − function cb_get_dbs(varargin)
+ −
+ − % Handles
+ − myh = varargin{1};
+ − mainfig = varargin{end};
+ − status = findobj(mainfig.handle, 'Tag', 'RepoguiStatusTxt');
+ − set(status,'String','*** Retrieving databases...');
+ −
+ − tables = {'collections', 'objmeta', 'objs', 'transactions', 'users'};
+ −
+ − % Get conn
+ − conn = mainfig.connection;
+ − % Assume I don't need to open the connection
+ − wasEmpty = 0;
+ −
+ − % Open connection, if necessary
+ − if isempty(conn)
+ −
+ − % we opened the connection
+ − wasEmpty = 1;
+ −
+ − % have we a stored username and password
+ − dbuser = mainfig.dbuser;
+ − dbpass = mainfig.dbpass;
+ −
+ − % get hostname
+ − hostname = get(findobj(mainfig.handle, 'Tag','RepoguiServerEdit'), 'String');
+ − if isempty(hostname)
+ − set(status,'String','Impossible to connect: please select a server first');
+ − error('### Please select a server to connect to.');
+ − end
+ −
+ − % verify if the server is reachable
+ − try
+ − java.net.InetAddress.getByName(hostname);
+ − catch
+ − set(status,'String','Impossible to connect: server not responding or no internet connection available');
+ − error('### Please check internet connection and server availability.');
+ − end
+ −
+ − % connect
+ − try
+ − if ~isempty(dbuser) && ~isempty(dbpass)
+ − conn = utils.mysql.connect(hostname, 'test', dbuser, dbpass);
+ − else
+ − [conn, dbpass] = utils.mysql.connect(hostname);
+ − end
+ − catch
+ − set(status,'String','Impossible to connect: please check the provided username and password');
+ − error('### Please check the provided username and password')
+ − end
+ −
+ − if ~ischar(conn) && ~ischar(dbpass)
+ − if conn==-1 && dbpass==-1
+ − % user cancelled
+ − return;
+ − end
+ − end
+ −
+ − if ~isa(conn, 'database')
+ − error('### couldn''t connect to server');
+ − end
+ −
+ − % store the connection
+ − mainfig.dbuser = conn.Username;
+ − mainfig.dbpass = dbpass;
+ − else
+ − hostname = get(findobj(mainfig.handle, 'Tag','RepoguiServerEdit'), 'String');
+ − end
+ −
+ − % get the databases
+ − q = 'show databases';
+ − curs = exec(conn, q);
+ − curs = fetch(curs);
+ −
+ − ltpda_dbs = [];
+ − % Now get the LTPDA databases
+ − for j=1:length(curs.Data)
+ − db = curs.Data{j};
+ −
+ − if ~strcmp(db, 'information_schema')
+ −
+ − q = sprintf('show tables from %s', db);
+ − c = exec(conn, q);
+ − c = fetch(c);
+ − match = 0;
+ − for l=1:length(c.Data)
+ − for k=1:length(tables)
+ − if strcmp(c.Data{l}, tables{k})
+ − match = match + 1;
+ − end
+ − end
+ − end
+ − close(c);
+ − if match == 5
+ − % we have an LTPDA database
+ − ltpda_dbs = [ltpda_dbs cellstr(db)];
+ − end
+ − end
+ −
+ − end
+ − close(curs);
+ −
+ − % If I opened the connection, close it again
+ − if wasEmpty
+ − close(conn);
+ − end
+ −
+ − % Set the list
+ − id = findobj(mainfig.handle, 'Tag', 'RepoguiDatabaseList');
+ − set(id, 'String', ltpda_dbs, 'Value', 1);
+ −
+ − % Get selected DB
+ − dbh = findobj(mainfig.handle, 'Tag', 'RepoguiDatabaseList');
+ − dbs = get(dbh, 'String');
+ − db = dbs{1};
+ −
+ − % set selected DB
+ − dbh = findobj(mainfig.handle, 'Tag', 'RepoguiDatabaseEdit');
+ − set(dbh, 'String', db);
+ −
+ − set(status, 'String', ['Database list retrieved from ' hostname],'ForeGroundcolor','b');
+ − end