<%@ page language="java" import="java.util.Date,java.sql.Connection,java.sql.DriverManager,java.sql.ResultSet,java.sql.Statement,java.text.SimpleDateFormat" %> Agent History <% String dbUsername = "SET_ME"; String dbPassword = "SET_ME"; String url = "jdbc:mysql://SET_ME/teamcity"; String requestedAgent = request.getParameter("agent") != null? request.getParameter("agent") : ""; out.print("Requested agent: " + requestedAgent + "

"); if (request.getParameter("debug") != null && request.getParameter("debug").toLowerCase().equals("true")) { debug = true; } String DRIVER = "org.gjt.mm.mysql.Driver"; Class.forName(DRIVER).newInstance(); Connection connection = null; Statement statement = null; String agentSQL = "select distinct name from agent order by name"; String buildSQL = "select history.build_id, history.build_type_id, history.status, " + "history.status_text, history.build_start_time_server, history.build_finish_time_server, " + "projects.project_name, projects.build_type_name, projects.project_id " + "from history, projects " + "where projects.build_type_id = history.build_type_id " + "and agent_name = '@AGENT@' " + "order by build_id desc " + "limit 100"; ResultSet agentResults = null; ResultSet buildResults = null; connection = DriverManager.getConnection(url, dbUsername, dbPassword); statement = connection.createStatement(); agentResults = statement.executeQuery(agentSQL); %>
<% String updatedBuildSQL = buildSQL.replace("@AGENT@", requestedAgent); buildResults = statement.executeQuery(updatedBuildSQL); %> <% while (buildResults.next()) { String buildID = buildResults.getString(1); String buildTypeID = buildResults.getString(2); int statusCode = buildResults.getInt(3); String statusText = buildResults.getString(4); long startTimeMillis = buildResults.getLong(5); long endTimeMillis = buildResults.getLong(6); String projectName = buildResults.getString(7); String buildName = buildResults.getString(8); String projectID = buildResults.getString(9); SimpleDateFormat formatter = new SimpleDateFormat(); %> <% } if (agentResults != null) agentResults.close(); if (buildResults != null) buildResults.close(); statement.close(); connection.close(); %>
Status Project Build Build ID Result Start End
<%= getStatusFromCode(statusCode) %>
<%= projectName %>
<%= buildName %>
<%= buildID %>
<%= statusText %>
<%= formatter.format(new Date(startTimeMillis)) %>
<%= formatter.format(new Date(endTimeMillis)) %>
<%! private boolean debug=false; private String getStatusFromCode(int code) { String result = String.valueOf(code); switch (code) { case 4: // Compilation failed result = "Compilation Failed"; break; case 0: // cancelled result = "Cancelled"; break; case 1: // success, do not break - need to parse results result = "Success"; break; case 3: // failed result = "Failure"; } return result; } private float round(float value, int places) { float multiplier = (float)Math.pow(10, places); float result = value * multiplier; result = Math.round(result); return (float)result/multiplier; } private void debug(String message) { if (debug) { System.out.println(message); } } class BuildResult { boolean success = false; boolean compilationFailed = false; boolean cancelled = false; int passingTests = 0; int failingTests = 0; public String toString() { return "Success? " + success + " Compilation Failed? " + compilationFailed + " Passed: " + passingTests + " Failed: " + failingTests; } } %>