Newer
Older
simple-jdbc-stats / src / nl / astraeus / jdbc / web / page / TransactionDetail.java
Rien Nentjes on 2 May 2012 1 KB More query details
package nl.astraeus.jdbc.web.page;

import nl.astraeus.jdbc.JdbcLogger;
import nl.astraeus.jdbc.web.model.TransactionEntry;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;

/**
 * User: rnentjes
 * Date: 5/2/12
 * Time: 2:16 PM
 */
public class TransactionDetail extends TemplatePage {
    
    private Page previous;
    private TransactionEntry transaction;
    
    public TransactionDetail(Page previous, TransactionEntry entry) {
        this.previous = previous;
        this.transaction = entry;
    }

    @Override
    public Page processRequest(HttpServletRequest request) {
        Page result = this;

        if ("stacktrace".equals(request.getParameter("action"))) {
            long timestamp = Long.parseLong(request.getParameter("actionValue"));
            
            JdbcLogger.LogEntry found = null;
            for (JdbcLogger.LogEntry entry : transaction.getQueries()) {
                if (entry.getTimestamp() == timestamp) {
                    found = entry;
                    break;
                }
            }
    
            if (found != null) {
                result = new ShowStacktrace(this, found);
            } else {
                Warnings.get(request).addMessage(Warnings.Message.Type.ERROR, "Stacktrace not found!", "Query stacktrace not found!");
            }
        } else if ("back".equals(request.getParameter("action"))) {
            result = previous;
        }
        
        return result;
    }

    @Override
    public Map<String, Object> defineModel(HttpServletRequest request) {
        Map<String, Object> result = new HashMap<String, Object>();

        result.put("transaction", transaction);
        
        return result;
    }

}