package org.myrobotlab.client; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import org.myrobotlab.logging.LoggerFactory; import org.myrobotlab.logging.Logging; import org.myrobotlab.service.Shoutbox.NameProvider; import org.slf4j.Logger; public class DrupalNameProvider implements NameProvider { public static final Logger log = LoggerFactory.getLogger(DrupalNameProvider.class); private Connection conn = null; @Override public String getName(String ip) { log.info(String.format("==DrupalNameProvider.getName(%s)==", ip)); try { if (this.conn == null) { Class.forName("com.mysql.jdbc.Driver"); log.info("attempting to connect to mysql"); this.conn = DriverManager.getConnection("jdbc:mysql://localhost/myrobotlab", "root", ""); if (this.conn == null) { log.error("could not connect"); return ip; } } String sql = String.format("SELECT users.name, sessions.uid, sessions.hostname FROM myrobotlab.users " + " INNER JOIN myrobotlab.sessions ON sessions.uid=users.uid " + " WHERE sessions.hostname = '%s' " + " ORDER BY sessions.uid DESC", ip); Statement statement = this.conn.createStatement(); log.info("executing query"); ResultSet records = statement.executeQuery(sql); String user = null; while (records.next()) { user = records.getString("name"); log.info(String.format("found [%s] for ip %s", user, ip)); if ((user == null) || (user.trim().length() == 0 || user.trim().equals(""))) { log.info("user null or blank skipping"); continue; } else { log.info(String.format("found user [%s]", user)); return user; } } log.info(String.format("no not blank records found returning ip [%s]", ip)); return ip; } catch (Exception e) { Logging.logError(e); } return ip; } }