package models;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import play.data.validation.Required;
import play.db.jpa.Model;
@Entity
public class Report extends Model {
@Required
public Double latitude;
@Required
public Double longitude;
@Required
public Long date;
@Required
public String type;
@ManyToOne
public User user;
@Required
public boolean affectedSomeUser = false;
public transient float fade = 100.0f;
public Report(Double latitude, Double longitude, Long date, String type, User user) {
super();
this.latitude = latitude;
this.longitude = longitude;
this.date = date;
this.type = type;
this.user = user;
}
public String getDateString() {
return new Date(date).toLocaleString();
}
public static List<Report> getCloseReports(double latitude, double longitude) {
long now = System.currentTimeMillis();
List<Report> reports = Report.find("select r from Report r where r.date > ?", now - User.MAX_TIME_RECENT_REPORTS).fetch();
List<Report> result = new ArrayList<Report>();
for (Report report : reports) {
if (User.distanceBetweenCoords(latitude, longitude, report.latitude, report.longitude) <= User.MAX_DISTANCE_FOR_WARNING) {
result.add(report);
long timePassed = now - report.date;
report.fade = (100.0f - ((timePassed * 100.0f) / User.MAX_TIME_RECENT_REPORTS)) / 100.0f;
}
}
return result;
}
}