avatar

590

Fix event logging; events were being referred to by entry_id, but we were filling in entry_id with the auction identifier. by mrs, 07 Aug, 2008 05:09 PM
Diff this changeset:
EventStatus.java
      package com.jbidwatcher.auction.event;

import com.jbidwatcher.util.db.ActiveRecord;
import com.jbidwatcher.util.db.Table;

import java.util.Date;
import java.util.List;
import java.util.ArrayList;

/**
 * Created by IntelliJ IDEA.
* User: Morgan
* Date: Jan 28, 2008
* Time: 10:07:20 AM
* To change this template use File | Settings | File Templates.
*/

/*!@class EventLogger
 *
 * @brief A single 'event'.
 *
 * This contains a single event, a string saying 'what' happened, a
 * date for when it happened first, and a count of times that it has
 * happened.
 *
 */
public class EventStatus extends ActiveRecord {
  private String mAuctionIdentifier;

  //  For ActiveRecord construction.
  public EventStatus() { }

  public EventStatus(String what, Date when) {
    setMessage(what);
    setLoggedAt(when);
    setRepeatCount(1);
  }

  public EventStatus(String what, Date when, Integer entryId, String identifier, String title) {
    setMessage(what);
    setLoggedAt(when);
    setRepeatCount(1);
    setEntryId(entryId);
    setAuctionIdentifier(identifier);
    setTitle(title);
  }

  public String toBulkString() {
    String count = "";
    if(getRepeatCount() > 1) count = " (" + getRepeatCount() + ")";
    String outStatus = getLoggedAt() + ": " + getMessage() + count;

    return(outStatus);
  }

  public String toString() {
    String count = "";
    if (getRepeatCount() > 1) count = " (" + getRepeatCount() + ")";
    String outStatus = getLoggedAt() + ": " + getAuctionIdentifier() + " (" + getTitle() + ") - " + getMessage() + count;

    return(outStatus);
  }

  /*************************/
  /* Database access stuff */
  /**
   * *********************
   */
  private static Table sDB = null;
  protected static String getTableName() { return "events"; }
  protected Table getDatabase() {
    if (sDB == null) {
      sDB = openDB(getTableName());
    }
    return sDB;
  }

  public static EventStatus findFirstBy(String key, String value) {
    return (EventStatus) ActiveRecord.findFirstBy(EventStatus.class, key, value);
  }

  public static EventStatus find(Integer id) {
    return (EventStatus) ActiveRecord.findFirstBy(EventStatus.class, "id", Integer.toString(id));
  }

  public static List<EventStatus> findAllByEntry(Integer entryId, String identifier) {
    List<ActiveRecord> records = ActiveRecord.findAllBy(EventStatus.class, "entry_id", Integer.toString(entryId), "created_at ASC");

    if(records != null) {
      List<EventStatus> results = new ArrayList<EventStatus>(records.size());
      for(ActiveRecord record : records) {
        EventStatus es = (EventStatus)record;
        es.setAuctionIdentifier(identifier);
        results.add(es);
      }

      return results;
    }
    return null;
  }

  private String getAuctionIdentifier() {
    return mAuctionIdentifier;
  }

  public void setAuctionIdentifier(String identifier) {
    mAuctionIdentifier = identifier;
  }

  public String getMessage() { return getString("message"); }
  public Date getLoggedAt() { return getDate("created_at"); }
  public int getRepeatCount() { return getInteger("repeat_count", 1); }
  public String getTitle() { return getString("title"); }
  public String getEntryId() { return getString("entry_id"); }

  public void setMessage(String message) { setString("message", message); }
  public void setLoggedAt(Date loggedAt) { setDate("created_at", loggedAt); }
  public void setRepeatCount(int repeatCount) { setInteger("repeat_count", repeatCount); }
  public void setTitle(String title) { setString("title", title); }
  public void setEntryId(Integer entryId) { setInteger("entry_id", entryId); }

  public boolean deleteForEntry(int id) {
    return deleteAllEntries(Integer.toString(id));
  }

  public boolean deleteAllEntries(String entries) {
    return getDatabase().deleteBy("entry_id IN (" + entries + ")");
  }
}

    

Check out the code: svn co jbidwatcher/trunk/src/com/jbidwatcher/auction/event/EventStatus.java