daily commit
This commit is contained in:
parent
d222f0c4cd
commit
85480e30f2
114
src/main/java/se/su/dsv/scipro/util/TemplateGenerator.java
Normal file
114
src/main/java/se/su/dsv/scipro/util/TemplateGenerator.java
Normal file
@ -0,0 +1,114 @@
|
||||
package se.su.dsv.scipro.util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.wicket.injection.web.InjectorHolder;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import org.joda.time.DateMidnight;
|
||||
import org.joda.time.DateTimeConstants;
|
||||
import org.joda.time.Days;
|
||||
|
||||
import se.su.dsv.scipro.SciProSession;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ProjectScheduleDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.Project;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectEvent;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectEventTemplate;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectSchedule;
|
||||
import se.su.dsv.scipro.data.dataobjects.ScheduleTemplate;
|
||||
|
||||
public class TemplateGenerator { //shamelessly taken alot from ScheduleGenerator
|
||||
|
||||
@SpringBean
|
||||
private ProjectScheduleDao scheduleTemplateDao;
|
||||
|
||||
@SpringBean
|
||||
private ProjectDao projectDao;
|
||||
|
||||
private Project project;
|
||||
private ProjectSchedule schedule;
|
||||
private Set<ProjectEvent> projectEvents;
|
||||
private List<ProjectEventTemplate> projectEventTemplate;
|
||||
|
||||
private int templateEstimatedDays = 0;
|
||||
private int durationInDays = 0;
|
||||
|
||||
private DateMidnight startDate;
|
||||
private DateMidnight endDate;
|
||||
|
||||
|
||||
public TemplateGenerator(Long templateId, Long projectId, Date startDate, Date endDate){
|
||||
InjectorHolder.getInjector().inject(this);
|
||||
this.startDate = new DateMidnight(startDate);
|
||||
this.endDate = new DateMidnight(endDate);
|
||||
|
||||
project = projectDao.load(projectId);
|
||||
if(project == null){
|
||||
throw new IllegalArgumentException("The template generator did not find the provided project from db");
|
||||
}
|
||||
|
||||
schedule = project.getProjectSchedule();
|
||||
projectEvents = schedule.getProjectEvents();
|
||||
}
|
||||
|
||||
public ScheduleTemplate generate(){
|
||||
|
||||
ScheduleTemplate template;
|
||||
|
||||
DateMidnight datePointer = new DateMidnight(startDate);
|
||||
projectEventTemplate = new ArrayList<ProjectEventTemplate>();
|
||||
int counter = 0;
|
||||
|
||||
for(ProjectEvent pe : projectEvents){
|
||||
counter ++;
|
||||
if(isMilestone(pe)){
|
||||
durationInDays = (startDate.getDayOfYear() - (new DateMidnight(pe.getDueDate()).getDayOfYear()));
|
||||
}else{
|
||||
durationInDays = 0;
|
||||
}
|
||||
|
||||
ProjectEventTemplate pet = new ProjectEventTemplate();
|
||||
pet.setTitle(pe.getTitle());
|
||||
pet.setDescription(pe.getDescription());
|
||||
pet.setTemplateCreator(SciProSession.get().getUser());
|
||||
pet.setEstimatedTimeConsumption(durationInDays);
|
||||
pet.setNumberInOrder(counter);
|
||||
pet.setRequireHandIn(pe.isRequireHandIn());
|
||||
|
||||
datePointer = datePointer.plusDays(durationInDays);
|
||||
templateEstimatedDays += durationInDays;
|
||||
projectEventTemplate.add(pet);
|
||||
}
|
||||
|
||||
template = new ScheduleTemplate();
|
||||
template.setCreator(SciProSession.get().getUser());
|
||||
template.setSysAdminTemplate(false);
|
||||
template.setProjectEventTemplates(projectEventTemplate);
|
||||
|
||||
return template;
|
||||
|
||||
}
|
||||
|
||||
public boolean isMilestone(ProjectEvent pe){ // events from templates have no participants and such events are milestones
|
||||
return pe.getParticipants().isEmpty();
|
||||
}
|
||||
|
||||
public Date getStartDate() {
|
||||
return startDate.toDate();
|
||||
}
|
||||
|
||||
public void setStartDate(Date startDate) {
|
||||
this.startDate = new DateMidnight(startDate);
|
||||
}
|
||||
|
||||
public Date getEndDate() {
|
||||
return endDate.toDate();
|
||||
}
|
||||
|
||||
public void setEndDate(Date endDate) {
|
||||
this.endDate = new DateMidnight(endDate);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user