From 3a7314ed61481eae5d8cfa9af9ee69cb94744671 Mon Sep 17 00:00:00 2001 From: Fredrik Norberg <fnorbe@dsv.su.se> Date: Tue, 26 Jul 2011 17:24:26 +0200 Subject: [PATCH] started to add paralell schedule events --- .../su/dsv/scipro/data/dataobjects/Event.java | 10 +++++-- .../su/dsv/scipro/util/ScheduleGenerator.java | 18 +++++++++++++ .../su/dsv/scipro/util/TemplateGenerator.java | 26 ++++++++++++++++--- 3 files changed, 49 insertions(+), 5 deletions(-) diff --git a/src/main/java/se/su/dsv/scipro/data/dataobjects/Event.java b/src/main/java/se/su/dsv/scipro/data/dataobjects/Event.java index de3d93992e..ca75e3d9f3 100644 --- a/src/main/java/se/su/dsv/scipro/data/dataobjects/Event.java +++ b/src/main/java/se/su/dsv/scipro/data/dataobjects/Event.java @@ -155,9 +155,15 @@ public abstract class Event extends LazyDeletableDomainObject @Override public int compareTo(Event other) { int dcomp = dueDate.compareTo(other.dueDate); - if(dcomp == 0) + if(dcomp == 0){ + /*if(id == null){ + return -1; + } + else if (other.id == null){ + return 1; + }*/ return id.compareTo(other.id); - else + }else return dcomp; } diff --git a/src/main/java/se/su/dsv/scipro/util/ScheduleGenerator.java b/src/main/java/se/su/dsv/scipro/util/ScheduleGenerator.java index 527ba60e47..90c11c461a 100644 --- a/src/main/java/se/su/dsv/scipro/util/ScheduleGenerator.java +++ b/src/main/java/se/su/dsv/scipro/util/ScheduleGenerator.java @@ -11,7 +11,10 @@ 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.EventDao; import se.su.dsv.scipro.data.dao.interfaces.ProjectDao; +import se.su.dsv.scipro.data.dao.interfaces.ProjectEventDao; import se.su.dsv.scipro.data.dao.interfaces.ScheduleTemplateDao; import se.su.dsv.scipro.data.dataobjects.Project; import se.su.dsv.scipro.data.dataobjects.ProjectEvent; @@ -27,6 +30,9 @@ public class ScheduleGenerator { @SpringBean private ProjectDao projectDao; + @SpringBean + private ProjectEventDao projectEventDao; + private Project project; private ScheduleTemplate template; private List<ProjectEventTemplate> eventTemplates; @@ -72,11 +78,16 @@ public class ScheduleGenerator { List<ProjectEvent> events = new ArrayList<ProjectEvent>(); DateMidnight datePointer = new DateMidnight(startDate); + DateMidnight tempPointer; int totalDuration = 0; for(ProjectEventTemplate e : eventTemplates){ + tempPointer = datePointer; ProjectEvent event = e.createEventFromTemplate(); event.setParticipants(project.getProjectParticipants()); + if(e.getEstimatedTimeConsumption() < 1){ + datePointer = new DateMidnight(startDate).plusDays(e.getDaysOffset()); + } double duration = (double) e.getEstimatedTimeConsumption() * ratio; if(duration < 1.0) duration = 1.0; @@ -93,7 +104,14 @@ public class ScheduleGenerator { } } event.setDueDate(datePointer.toDate()); + event.setCreator(SciProSession.get().getUser()); + event.setProjectSchedule(projectSchedule); + event = projectEventDao.save(event); events.add(event); + + + datePointer = tempPointer; + System.out.println(event); } return new ScheduleGeneratorResult(template, events, totalDuration, templateEstimatedDays, startDate.toDate(), endDate.toDate()); } diff --git a/src/main/java/se/su/dsv/scipro/util/TemplateGenerator.java b/src/main/java/se/su/dsv/scipro/util/TemplateGenerator.java index 88b60484a9..b493c4068d 100644 --- a/src/main/java/se/su/dsv/scipro/util/TemplateGenerator.java +++ b/src/main/java/se/su/dsv/scipro/util/TemplateGenerator.java @@ -57,7 +57,8 @@ public class TemplateGenerator { //based on ScheduleGenerator if(schedule.getStartDate() != null){ this.startDate = new DateMidnight(schedule.getStartDate()); }else{ - this.startDate = new DateMidnight(projectEvents.first().getDueDate()); + int days = (new DateMidnight(projectEvents.first().getDueDate()).getDayOfYear() - new DateMidnight(schedule.getStartDate()).getDayOfYear()); + this.startDate = new DateMidnight(projectEvents.first().getDueDate()).minusDays(days); } } @@ -90,10 +91,13 @@ public class TemplateGenerator { //based on ScheduleGenerator pet.setNumberInOrder(counter); pet.setRequireHandIn(pe.isRequireHandIn()); pet.setScheduleTemplate(template); - måste få in daysOffset i projectEventTemplate + + int daysOffset = (new DateMidnight(pe.getDueDate()).getDayOfYear() - startDate.getDayOfYear()); + + pet.setdaysOffset(daysOffset); datePointer = datePointer.plusDays(durationInDays); - templateEstimatedDays += durationInDays; + setTemplateEstimatedDays(getTemplateEstimatedDays() + durationInDays); projectEventTemplate.add(pet); } @@ -155,5 +159,21 @@ public class TemplateGenerator { //based on ScheduleGenerator this.startDate = new DateMidnight(startDate); } + public int getTemplateEstimatedDays() { + return templateEstimatedDays; + } + + public void setTemplateEstimatedDays(int templateEstimatedDays) { + this.templateEstimatedDays = templateEstimatedDays; + } + + public int getDaysOffset() { + return daysOffset; + } + + public void setDaysOffset(int daysOffset) { + this.daysOffset = daysOffset; + } + }