From 3b25bed168edc1066109467c8c5f2f6e81a6d75e Mon Sep 17 00:00:00 2001 From: Fredrik Norberg <fnorbe@dsv.su.se> Date: Mon, 25 Jul 2011 16:20:36 +0200 Subject: [PATCH 1/3] added daysOffset to projecteventtemplate --- .../data/dataobjects/ProjectEventTemplate.java | 15 +++++++++++++++ .../se/su/dsv/scipro/util/TemplateGenerator.java | 7 ++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/se/su/dsv/scipro/data/dataobjects/ProjectEventTemplate.java b/src/main/java/se/su/dsv/scipro/data/dataobjects/ProjectEventTemplate.java index 38811fcf5b..9e5f128247 100644 --- a/src/main/java/se/su/dsv/scipro/data/dataobjects/ProjectEventTemplate.java +++ b/src/main/java/se/su/dsv/scipro/data/dataobjects/ProjectEventTemplate.java @@ -38,6 +38,9 @@ public class ProjectEventTemplate extends DomainObject implements Comparable<Pro @Column(nullable=false) private long estimatedTimeConsumption = 0; + @Column(nullable=false) + private int daysOffset; + @Column(nullable=false) private boolean requireHandIn = false; @@ -46,6 +49,10 @@ public class ProjectEventTemplate extends DomainObject implements Comparable<Pro public ProjectEventTemplate(){} + public ProjectEventTemplate(int daysOffset){ + this.daysOffset = daysOffset; + } + public Long getId() { return id; } @@ -53,6 +60,14 @@ public class ProjectEventTemplate extends DomainObject implements Comparable<Pro public void setId(Long id) { this.id = id; } + + public void setdaysOffset(int daysOffset){ + this.daysOffset = daysOffset; + } + + public int getDaysOffset(){ + return daysOffset; + } public String getTitle() { return title; 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 5ef62a4209..88b60484a9 100644 --- a/src/main/java/se/su/dsv/scipro/util/TemplateGenerator.java +++ b/src/main/java/se/su/dsv/scipro/util/TemplateGenerator.java @@ -38,6 +38,7 @@ public class TemplateGenerator { //based on ScheduleGenerator private int templateEstimatedDays = 0; private int durationInDays = 0; + private int daysOffset; private DateMidnight startDate; @@ -58,10 +59,6 @@ public class TemplateGenerator { //based on ScheduleGenerator }else{ this.startDate = new DateMidnight(projectEvents.first().getDueDate()); } - - - - } public ScheduleTemplate generate(){ @@ -93,7 +90,7 @@ public class TemplateGenerator { //based on ScheduleGenerator pet.setNumberInOrder(counter); pet.setRequireHandIn(pe.isRequireHandIn()); pet.setScheduleTemplate(template); - + måste få in daysOffset i projectEventTemplate datePointer = datePointer.plusDays(durationInDays); templateEstimatedDays += durationInDays; 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 2/3] 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; + } + } From 2bcb9d03ba5479441848bad7e48c709ba79833ac Mon Sep 17 00:00:00 2001 From: Fredrik Norberg <fnorbe@dsv.su.se> Date: Wed, 27 Jul 2011 11:29:55 +0200 Subject: [PATCH 3/3] a new version of saving schedules as templates that supports simultaneus events --- .../su/dsv/scipro/data/dataobjects/Event.java | 12 +----------- .../su/dsv/scipro/util/ScheduleGenerator.java | 18 ++++++------------ 2 files changed, 7 insertions(+), 23 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 ca75e3d9f3..413633c472 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 @@ -154,17 +154,7 @@ public abstract class Event extends LazyDeletableDomainObject @Override public int compareTo(Event other) { - int dcomp = dueDate.compareTo(other.dueDate); - if(dcomp == 0){ - /*if(id == null){ - return -1; - } - else if (other.id == null){ - return 1; - }*/ - return id.compareTo(other.id); - }else - return dcomp; + return (int) (dueDate.getTime() - other.dueDate.getTime()); } public Panel getDisplayPanel(String id){ 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 90c11c461a..29252357f4 100644 --- a/src/main/java/se/su/dsv/scipro/util/ScheduleGenerator.java +++ b/src/main/java/se/su/dsv/scipro/util/ScheduleGenerator.java @@ -82,15 +82,13 @@ public class ScheduleGenerator { int totalDuration = 0; for(ProjectEventTemplate e : eventTemplates){ - tempPointer = datePointer; + tempPointer = new DateMidnight(datePointer); ProjectEvent event = e.createEventFromTemplate(); - event.setParticipants(project.getProjectParticipants()); - if(e.getEstimatedTimeConsumption() < 1){ + event.setParticipants(project.getProjectParticipants());//might have to remove this + if(e.getEstimatedTimeConsumption() <= 1){ datePointer = new DateMidnight(startDate).plusDays(e.getDaysOffset()); } double duration = (double) e.getEstimatedTimeConsumption() * ratio; - if(duration < 1.0) - duration = 1.0; datePointer = datePointer.plusDays((int) duration); totalDuration += (int)duration; @@ -104,14 +102,10 @@ 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); + if(e.getEstimatedTimeConsumption() <= 1){ + datePointer = tempPointer; + } } return new ScheduleGeneratorResult(template, events, totalDuration, templateEstimatedDays, startDate.toDate(), endDate.toDate()); }