package com.mechinn.android.ouralliance.data;
import com.activeandroid.annotation.Column;
import com.activeandroid.query.Select;
import com.mechinn.android.ouralliance.Prefs;
import java.util.List;
import de.greenrobot.event.EventBus;
import de.greenrobot.event.util.AsyncExecutor;
public abstract class TeamScouting extends OurAllianceObject implements Comparable<TeamScouting>, java.io.Serializable {
public final static String TAG = "TeamScouting";
public final static String TEAM = Team.TAG;
public final static String NOTES = "notes";
@Column(name=TEAM, onDelete = Column.ForeignKeyAction.CASCADE, notNull = true, onNullConflict = Column.ConflictAction.FAIL, unique = true, onUniqueConflict = Column.ConflictAction.FAIL)
private Team team;
@Column(name=NOTES)
private String notes;
public Team getTeam() {
return team;
}
public void setTeam(Team team) {
if (null==team && null!=this.team || null!=team && !team.equals(this.team)) {
this.team = team;
changedData();
}
}
public void replaceTeam(Team team) {
this.team = team;
}
public String getNotes() {
return notes;
}
public void setNotes(String notes) {
if (null==notes && null!=this.notes || null!=notes && !notes.equals(this.notes)) {
this.notes = notes;
changedData();
}
}
public abstract List<? extends Wheel> getWheels();
public abstract List<? extends MatchScouting> getMatches();
public String toString() {
return "ID: "+this.getId()+
" Mod: "+this.getModified()+
" Notes: "+this.getNotes();
}
public int compareTo(TeamScouting another) {
return this.getTeam().compareTo(another.getTeam());
}
public boolean copy(TeamScouting data) {
if(this.equals(data)) {
super.copy(data);
this.setNotes(data.getNotes());
return true;
}
return false;
}
public void saveMod() {
if (null == this.getId()) {
this.getTeam().saveMod();
if(-1==this.getTeam().getId()) {
this.replaceTeam(Team.load(this.getTeam().getTeamNumber()));
}
}
super.saveMod();
}
public void saveEvent() {
EventBus.getDefault().post(this.getTeam());
super.saveEvent();
}
public boolean equals(Object data) {
if (!(data instanceof TeamScouting)) {
return false;
}
try {
return getTeam().equals(((TeamScouting) data).getTeam());
} catch (NullPointerException e) {
return false;
}
}
public void asyncSave() {
AsyncExecutor.create().execute(new AsyncExecutor.RunnableEx() {
@Override
public void run() throws Exception {
saveMod();
EventBus.getDefault().post(TeamScouting.this);
}
});
}
public void asyncDelete() {
AsyncExecutor.create().execute(new AsyncExecutor.RunnableEx() {
@Override
public void run() throws Exception {
delete();
EventBus.getDefault().post(TeamScouting.this);
}
});
}
}