ItEr47S11CUVisualizacionResponsabilidadesTRaballoNaPlanificacionItEr46S12: When resizing a task it's reallocated if possible
This commit is contained in:
parent
106a3458a2
commit
f1bbab882c
5 changed files with 51 additions and 7 deletions
|
|
@ -478,4 +478,9 @@ public class Task extends TaskElement {
|
|||
return !getSatisfiedResourceAllocations().isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canBeResized() {
|
||||
return calculatedValue != CalculatedValue.END_DATE;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -137,4 +137,9 @@ public class TaskGroup extends TaskElement {
|
|||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canBeResized() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -114,4 +114,9 @@ public class TaskMilestone extends TaskElement {
|
|||
protected void initializeEndDate() {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canBeResized() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue