package com.openseedbox.models;
import java.util.Date;
import java.util.List;
import siena.Column;
import siena.Table;
/**
* When a torrent is added, it gets put in a queue and processed by a job.
* Same for when its deleted. This class represents a torrent event.
* Note: The fields in this class are not on the Torrent object itself in case
* there were errors, we do not want the torrent to exist in the database if it was
* not successfully added
* @author Erin Drummond
*/
@Table("torrent_event")
public class TorrentEvent extends EventBase {
@Column("torrent_hash") private String torrentHash;
@Column("user_id") private User user;
@Column("event_type") private TorrentEventType eventType;
@Column("user_notified") private boolean userNotified;
public TorrentEvent(TorrentEventType type, User user) {
this.eventType = type;
this.user = user;
this.insert();
}
public static List<TorrentEvent> getIncompleteForUser(User u, TorrentEventType eventType) {
return TorrentEvent.all().filter("user", u)
.filter("completionDate", null).filter("eventType", eventType)
.order("eventType").order("startDate").fetch();
}
public static List<TorrentEvent> getOlderThanMinutes(int minutes) {
Date nowMinusMinutes = new Date(System.currentTimeMillis() - (minutes * 1000 * 60));
return TorrentEvent.all()
.filter("completionDate", null)
.filter("startDate <", nowMinusMinutes).fetch();
}
public enum TorrentEventType {
ADDING, REMOVING
}
/* Getters and Setters */
public String getTorrentHash() {
return torrentHash;
}
public void setTorrentHash(String torrentHash) {
this.torrentHash = torrentHash;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public TorrentEventType getEventType() {
return eventType;
}
public void setEventType(TorrentEventType eventType) {
this.eventType = eventType;
}
public boolean isUserNotified() {
return userNotified;
}
public void setUserNotified(boolean userNotified) {
this.userNotified = userNotified;
}
}