package com.diodesoftware.scb; import java.sql.*; import com.diodesoftware.dbmapper.*; import org.apache.log4j.Logger; public class ClipCounter implements Runnable { private Logger log = Logger.getLogger(ClipCounter.class); private int count = 0; private DBConnectionMgr dbMgr; private boolean stopRequested; private Object waiter = new Object(); public ClipCounter(DBConnectionMgr dbMgr) { /* this.dbMgr = dbMgr; Thread t = new Thread(this); t.setName("Cl1p Counter"); t.start(); */ } public int getCount() { return count; } public void stop() { stopRequested = true; synchronized (waiter) { waiter.notifyAll(); } } public void run() { try { while (!stopRequested) { updateCount(); synchronized (waiter) { waiter.wait(60 * 60 * 1000); } } } catch (InterruptedException e) { // Thread interupted. shutdown } catch (Exception e) { e.printStackTrace(); log.error("ClipCounter Thread Failure", e); } } private void updateCount() throws SQLException { Connection con = dbMgr.getConnection(); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("Select max(Number) from Clip"); if (rs.next()) { count = rs.getInt(1); } rs.close(); stmt.close(); con.close(); } }