/** * $Date: 2003/10/13 22:11:23 $ * $Author: Administrator $ * $Id: Clip.java,v 1.2 2003/10/13 22:11:23 Administrator Exp $ * $Revision: 1.2 $ * $Source: /mnt/flashdrive/cvshome/cl1p/web-inf/src/com/diodesoftware/scb/tables/Clip.java,v $ */ package com.diodesoftware.scb.tables; import com.diodesoftware.scb.GLOBAL; import com.diodesoftware.dbmapper.DatabaseEntry; import com.diodesoftware.dbmapper.DatabaseColumn; import com.diodesoftware.dbmapper.*; import java.sql.*; import javax.servlet.http.HttpServletRequest; import java.util.Calendar; import org.apache.log4j.Logger; public class DownloadCount implements DatabaseEntry { private static Logger log = Logger.getLogger(DownloadCount.class); private int number; private int clipId; private int count; private Calendar created = Calendar.getInstance(); private DatabaseColumn[] columns = new DatabaseColumn[]{ new DatabaseColumn("ClipId", DatabaseColumnType.DECIMAL), new DatabaseColumn("Count", DatabaseColumnType.DECIMAL), new DatabaseColumn("Created", DatabaseColumnType.DATE12) }; public int getNumber(){ return number; } public void setNumber(int i){ number = i; } public DatabaseColumn[] columns(){ return columns; } public int getClipId(){ return clipId; } public void setClipId(int i){ clipId = i; } public int getCount(){ return count; } public void setCount(int i){ count = i; } public Calendar getCreated(){ return created; } public void setCreated(Calendar c){ created = c; } public static int getDownloadsLeft(Clip clip, Connection con){ int max = GLOBAL.MAX_DOWNLOADS; int used = loadCount(clip, con); if( used == -1)return 0; return max - used; } public static int loadCount(Clip clip, Connection con){ if(clip.getNumber() < 2){ if(log.isDebugEnabled()) log.debug("Can't load clip count. Number is [" + clip.getNumber() + "] < 2"); return -1; } int result = -1; DownloadCount dc = loadCount(clip.getNumber(), con); int count = 0; if(dc != null){ count = dc.getCount(); }else{ if(log.isDebugEnabled()){ log.debug("Download Cound not found for clip [" + clip.getNumber() + "]"); } } return count; } private static DownloadCount loadCount(int clipId, Connection con){ DownloadCount dc = null; String sql = "Select * from DownloadCount where ClipId = ?"; try{ PreparedStatement prepStmt = con.prepareStatement(sql); prepStmt.setInt(1, clipId); ResultSet rs = prepStmt.executeQuery(); if(rs.next()){ dc = (DownloadCount)DBMapper.getInstance().loadSingle(DownloadCount.class, rs); } rs.close(); prepStmt.close(); }catch(SQLException e){ log.error("Error running SQL [" + sql + "]",e); } return dc; } public static void resetCount(Clip clip, Connection con){ if(clip.getNumber() < 2){ if(log.isDebugEnabled()) log.debug("Can't add clip count. Number is [" + clip.getNumber() + "] < 2"); return; } int result = -1; DownloadCount dc = loadCount(clip.getNumber(), con); int count = 0; if(dc == null){ dc = new DownloadCount(); dc.setClipId(clip.getNumber()); count = 0; } else{ count = dc.getCount(); } dc.setCount(0); DBMapper.getInstance().save(dc, con); if(log.isDebugEnabled()) log.debug("Reset clip count for clip [" + clip.getNumber() + "]"); } public static void addCount(Clip clip, Connection con){ if(clip.getNumber() < 2){ if(log.isDebugEnabled()) log.debug("Can't add clip count. Number is [" + clip.getNumber() + "] < 2"); return; } int result = -1; DownloadCount dc = loadCount(clip.getNumber(), con); int count = 0; if(dc == null){ dc = new DownloadCount(); dc.setClipId(clip.getNumber()); count = 0; } else{ count = dc.getCount(); } int next = count + 1; dc.setCount(next); DBMapper.getInstance().save(dc, con); if(log.isDebugEnabled()) log.debug("Saving clip count for clip [" + clip.getNumber() + "] count [" + next + "]"); } }