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) {
if(entryId == null) return null;
List<ActiveRecord> records = (List<ActiveRecord>) 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 + ")");
}
}