/** * Created by IntelliJ IDEA. * User: Rob * Date: Sep 8, 2003 * Time: 7:47:23 PM * To change this template use Options | File Templates. */ package com.diodesoftware.scb.agents; import com.diodesoftware.dbmapper.DBMapper; import com.diodesoftware.scb.tables.UserVisit; import com.diodesoftware.scb.tables.UserVisitHit; import java.sql.PreparedStatement; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import java.sql.ResultSet; import java.util.Calendar; import org.apache.log4j.Logger; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; public class StatsAgent { private static StatsAgent instance = null; private DBMapper dbMapper = null; private Logger log = Logger.getLogger(StatsAgent.class); public static synchronized void initialize(DBMapper mapper) { instance = new StatsAgent(mapper); } public static StatsAgent getInstance() { return instance; } private StatsAgent(DBMapper dbMappper) { this.dbMapper = dbMappper; } public int getPageHits(Connection con) { String sql = "SELECT MAX(Number) from Visitor"; int hitCount = 0; try { Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(sql); if(rs.next()) { hitCount = rs.getInt(1); } rs.close(); stmt.close(); }catch(SQLException e) { log.error("Error running SQL [" + sql + "]", e); } return hitCount; } /* public void savePageHit(ClipRequest request, Connection con) { HttpServletRequest httpRequest = request.getRequest(); Visitor visitor = new Visitor(); visitor.setAgentString(httpRequest.getHeader("User-Agent")); visitor.setIp(httpRequest.getRemoteAddr()); visitor.setUrl(httpRequest.getRequestURL().toString()); visitor.setVisitDate(Calendar.getInstance()); dbMapper.save(visitor, con); }*/ public void track(HttpServletRequest request, Connection con){ UserVisit userVisit = loadUserVisit(request, con); userVisit.addHit(); Calendar now = Calendar.getInstance(); userVisit.setVisitEnd(now); UserVisitHit userVisitHit = new UserVisitHit(request); dbMapper.save(userVisit,con); userVisitHit.setUserVisitId(userVisit.getNumber()); dbMapper.save(userVisitHit,con); } private UserVisit loadUserVisit(HttpServletRequest request, Connection con){ UserVisit result = new UserVisit(request); String sql = "Select * from UserVisit where SessionId = ?"; try{ PreparedStatement prepStmt = con.prepareStatement(sql); prepStmt.setString(1, result.getSessionId()); ResultSet rs = prepStmt.executeQuery(); if(rs.next()){ result = (UserVisit)dbMapper.loadSingle(UserVisit.class, rs); } rs.close(); prepStmt.close(); }catch(SQLException e){ log.error("Error running SQL[" + sql + "]", e); } return result; } }