ItEr47S11CUVisualizacionResponsabilidadesTRaballoNaPlanificacionItEr46S12: When resizing a task it's reallocated if possible

This commit is contained in:
Óscar González Fernández 2010-02-08 23:33:02 +01:00
parent 106a3458a2
commit f1bbab882c
5 changed files with 51 additions and 7 deletions

View file

@ -478,4 +478,9 @@ public class Task extends TaskElement {
return !getSatisfiedResourceAllocations().isEmpty();
}
@Override
protected boolean canBeResized() {
return calculatedValue != CalculatedValue.END_DATE;
}
}

View file

@ -202,8 +202,7 @@ public abstract class TaskElement extends BaseEntity {
if (newStartDate == null) {
return;
}
boolean sameDay = new LocalDate(newStartDate).equals(new LocalDate(
startDate));
final boolean sameDay = areSameDay(newStartDate, startDate);
long durationMilliseconds = this.endDate.getTime()
- this.startDate.getTime();
this.startDate = newStartDate;
@ -213,6 +212,10 @@ public abstract class TaskElement extends BaseEntity {
}
}
private boolean areSameDay(Date one, Date other) {
return new LocalDate(one).equals(new LocalDate(other));
}
protected abstract void moveAllocations();
public Date getEndDate() {
@ -223,6 +226,19 @@ public abstract class TaskElement extends BaseEntity {
this.endDate = endDate != null ? new Date(endDate.getTime()) : null;
}
public void resizeTo(Date endDate) {
if (!canBeResized()) {
return;
}
boolean sameDay = areSameDay(this.endDate, endDate);
setEndDate(endDate);
if (!sameDay) {
moveAllocations();
}
}
protected abstract boolean canBeResized();
public LocalDate getDeadline() {
return deadline;
}

View file

@ -137,4 +137,9 @@ public class TaskGroup extends TaskElement {
}
return result;
}
@Override
protected boolean canBeResized() {
return false;
}
}

View file

@ -114,4 +114,9 @@ public class TaskMilestone extends TaskElement {
protected void initializeEndDate() {
// do nothing
}
@Override
protected boolean canBeResized() {
return false;
}
}

View file

@ -161,8 +161,7 @@ public class TaskElementAdapter implements ITaskElementAdapter {
.runOnReadOnlyTransaction(new IOnTransaction<Long>() {
@Override
public Long execute() {
taskDAO.reattach(taskElement);
reattachAllResourcesForTask();
stepsBeforePossibleReallocation();
Long result = setBeginDateInsideTransaction(beginDate);
fireTaskElementMoved(taskElement);
return result;
@ -206,12 +205,21 @@ public class TaskElementAdapter implements ITaskElementAdapter {
}
@Override
public void setLengthMilliseconds(long lengthMilliseconds) {
updateEndDate(lengthMilliseconds);
public void setLengthMilliseconds(final long lengthMilliseconds) {
transactionService
.runOnReadOnlyTransaction(new IOnTransaction<Void>() {
@Override
public Void execute() {
stepsBeforePossibleReallocation();
updateEndDate(lengthMilliseconds);
return null;
}
});
fireTaskElementMoved(taskElement);
}
private void updateEndDate(long lengthMilliseconds) {
taskElement.setEndDate(new Date(getBeginDate().getTime()
taskElement.resizeTo(new Date(getBeginDate().getTime()
+ lengthMilliseconds));
}
@ -534,6 +542,11 @@ public class TaskElementAdapter implements ITaskElementAdapter {
return taskElement.isSubcontracted();
}
private void stepsBeforePossibleReallocation() {
taskDAO.reattach(taskElement);
reattachAllResourcesForTask();
}
}
@Override