package scrum.server.project;
import ilarkesto.base.time.Date;
import ilarkesto.base.time.DateAndTime;
import ilarkesto.core.logging.Log;
import java.util.Collection;
import scrum.server.admin.User;
import scrum.server.admin.UserDao;
public class ProjectDao extends GProjectDao {
private static final Log LOG = Log.get(ProjectDao.class);
// --- dependencies ---
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
// --- ---
@Override
public Project newEntityInstance() {
Project project = super.newEntityInstance();
project.setLastOpenedDateAndTime(DateAndTime.now());
return project;
}
public Project postProject(User admin) {
Project project = newEntityInstance();
project.setLabel("New Project");
project.addAdmin(admin);
saveEntity(project);
return project;
}
public void scanFiles() {
LOG.info("Scanning file repositories of all projects");
for (Project project : getEntities()) {
project.scanFiles();
}
}
// --- test data ---
public Project postExampleProject(User owner, User po, User sm) {
Collection<User> team = userDao.getEntities();
// team.remove(po);
// team.remove(sm);
Project project = postProject(owner);
project.setLabel("Example Project # " + DateAndTime.now());
project.setBegin(Date.today().addMonths(-2));
project.setEnd(Date.today().addMonths(5));
project.setSupportEmail("support@kunagi.org");
project.setIssueReplyTemplate("Hello ${issuer.name},\n" + "\n"
+ "Thank you for your feedback. You can check the status of your issue here: "
+ "${homepage.url}/${issue.reference}.html" + "\n" + "\nKind regards,\n" + "${user.name}");
project.addAdmin(owner);
project.addProductOwner(po);
project.addProductOwner(owner);
project.addScrumMaster(sm);
project.addScrumMaster(owner);
project.addTeamMember(owner);
project.addParticipants(project.getAdmins());
project.addParticipants(project.getTeamMembers());
project.addParticipants(project.getProductOwners());
project.addParticipants(project.getScrumMasters());
project.addTestSprints();
project.addTestRequirements();
project.addTestImpediments();
project.addTestRisks();
project.addTestQualitys();
project.addTestIssues();
project.addTestEvents();
project.addTestSimpleEvents();
project.getCurrentSprint().burndownTasksRandomly(Date.beforeDays(15), Date.today().addDays(-1));
po.setCurrentProject(project);
return project;
}
}