From: Hendrik <nh...@us...> - 2008-01-11 23:59:42
|
Update of /cvsroot/arianne/stendhal/src/games/stendhal/tools/loganalyser/login In directory sc8-pr-cvs11.sourceforge.net:/tmp/cvs-serv9818/src/games/stendhal/tools/loganalyser/login Modified Files: Analyser.java Log Message: create sql Index: Analyser.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/tools/loganalyser/login/Analyser.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Analyser.java 11 Jan 2008 23:36:03 -0000 1.3 --- Analyser.java 11 Jan 2008 23:59:46 -0000 1.4 *************** *** 7,10 **** --- 7,11 ---- import java.sql.SQLException; import java.sql.Statement; + import java.util.Iterator; import java.util.LinkedList; import java.util.List; *************** *** 31,35 **** + " WHERE account.id = loginEvent.player_id" + " AND username='%1$s' AND loginEvent.timedate > '%2$s'" ! + " ORDER BY loginEvent.timedate LIMIT 1;"; --- 32,36 ---- + " WHERE account.id = loginEvent.player_id" + " AND username='%1$s' AND loginEvent.timedate > '%2$s'" ! + " ORDER BY loginEvent.timedate LIMIT 1;"; *************** *** 37,42 **** LoginEventIterator iterator = readLoginsFromAddress(address, timedate); List<LoginEvent> events = iterableToList(iterator); for (LoginEvent event : events) { ! System.out.println(event); } } --- 38,57 ---- LoginEventIterator iterator = readLoginsFromAddress(address, timedate); List<LoginEvent> events = iterableToList(iterator); + StringBuilder sb = new StringBuilder(); for (LoginEvent event : events) { ! LoginEvent nextEvent = getNextLoginEvent(event); ! sb.setLength(0); ! sb.append("OR (source=\"'"); ! sb.append(StringChecker.escapeSQLString(event.getUsername())); ! sb.append("' AND timedate >= '"); ! sb.append(StringChecker.escapeSQLString(event.getTimestamp())); ! sb.append("'"); ! if (nextEvent != null) { ! sb.append(" AND timedate < '"); ! sb.append(StringChecker.escapeSQLString(event.getTimestamp())); ! sb.append("'"); ! } ! sb.append(")"); ! System.out.println(sb.toString()); } } *************** *** 58,61 **** --- 73,90 ---- return new LoginEventIterator(stmt, resultSet); } + + private LoginEvent getNextLoginEvent(LoginEvent event) throws SQLException { + LoginEvent nextEvent = null; + Transaction transaction = StendhalPlayerDatabase.getDatabase().getTransaction(); + Connection connection = transaction.getConnection(); + Statement stmt = connection.createStatement(); + String select = String.format(SQL_NEXT_LOGIN, StringChecker.escapeSQLString(event.getUsername()), StringChecker.escapeSQLString(event.getTimestamp())); + ResultSet resultSet = stmt.executeQuery(select); + Iterator<LoginEvent> itr = new LoginEventIterator(stmt, resultSet); + if (itr.hasNext()) { + nextEvent = itr.next(); + } + return nextEvent; + } /** |