package scrum.server.sprint;
import scrum.server.admin.User;
import scrum.server.common.Numbered;
import scrum.server.project.Project;
public class Task extends GTask implements Numbered {
public String getReferenceAndLabel() {
return getReference() + " " + getLabel();
}
public String getReference() {
return scrum.client.sprint.Task.REFERENCE_PREFIX + getNumber();
}
public void updateNumber() {
if (getNumber() == 0) setNumber(getRequirement().getProject().generateTaskNumber());
}
public boolean isProject(Project project) {
return getRequirement().isProject(project);
}
public boolean isClosed() {
return getRemainingWork() == 0;
}
public boolean isSprint(Sprint sprint) {
return getRequirement().isSprint(sprint);
}
public void reset() {
setOwner(null);
setBurnedWork(0);
}
@Override
public void ensureIntegrity() {
super.ensureIntegrity();
updateNumber();
if (!getRequirement().isInCurrentSprint()) {
if (getRequirement().isClosed()) {
getDao().deleteEntity(this);
} else {
reset();
}
}
}
public Project getProject() {
return getRequirement().getProject();
}
public boolean isVisibleFor(User user) {
return getProject().isVisibleFor(user);
}
@Override
public String toString() {
return getReferenceAndLabel();
}
}