ItEr48S04ValidacionEProbasFuncionaisItEr47S04: Providing progress feedback when doing reassignments
This commit is contained in:
parent
5af0a1acde
commit
3af8521e2f
2 changed files with 99 additions and 31 deletions
|
|
@ -46,6 +46,12 @@ import org.springframework.stereotype.Component;
|
|||
import org.zkoss.ganttz.adapters.IDomainAndBeansMapper;
|
||||
import org.zkoss.ganttz.data.Task;
|
||||
import org.zkoss.ganttz.extensions.IContext;
|
||||
import org.zkoss.ganttz.util.LongOperationFeedback;
|
||||
import org.zkoss.ganttz.util.LongOperationFeedback.IBackGroundOperation;
|
||||
import org.zkoss.ganttz.util.LongOperationFeedback.IDesktopUpdate;
|
||||
import org.zkoss.ganttz.util.LongOperationFeedback.IDesktopUpdatesEmitter;
|
||||
import org.zkoss.zk.ui.Desktop;
|
||||
import org.zkoss.zk.ui.util.Clients;
|
||||
|
||||
/**
|
||||
* @author Óscar González Fernández <ogonzalez@igalia.com>
|
||||
|
|
@ -84,14 +90,98 @@ public class ReassignCommand implements IReassignCommand {
|
|||
new IConfigurationResult() {
|
||||
@Override
|
||||
public void result(final ReassignConfiguration configuration) {
|
||||
List<WithAssociatedEntity> reassignations = getReassignations(
|
||||
final List<WithAssociatedEntity> reassignations = getReassignations(
|
||||
context, configuration);
|
||||
doReassignations(reassignations);
|
||||
context.reloadCharts();
|
||||
LongOperationFeedback.progressive(getDesktop(context),
|
||||
reassignations(context, reassignations));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private IBackGroundOperation<IDesktopUpdate> reassignations(
|
||||
final IContext<TaskElement> context,
|
||||
final List<WithAssociatedEntity> reassignations) {
|
||||
return new IBackGroundOperation<IDesktopUpdate>() {
|
||||
|
||||
@Override
|
||||
public void doOperation(
|
||||
IDesktopUpdatesEmitter<IDesktopUpdate> updater) {
|
||||
updater.doUpdate(showStart(reassignations.size()));
|
||||
try {
|
||||
doReassignations(reassignations, updater);
|
||||
updater.doUpdate(reloadCharts(context));
|
||||
} finally {
|
||||
updater.doUpdate(showEnd());
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private void doReassignations(
|
||||
final List<WithAssociatedEntity> reassignations,
|
||||
IDesktopUpdatesEmitter<IDesktopUpdate> updater) {
|
||||
int i = 1;
|
||||
final int total = reassignations.size();
|
||||
for (final WithAssociatedEntity each : reassignations) {
|
||||
IDesktopUpdate notifyChanges = changesNotificatorFor(each.ganntTask);
|
||||
transactionService
|
||||
.runOnReadOnlyTransaction(reassignmentTransaction(each));
|
||||
updater.doUpdate(notifyChanges);
|
||||
updater.doUpdate(showCompleted(i, total));
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
private IDesktopUpdate changesNotificatorFor(final Task ganttTask) {
|
||||
final Date previousBeginDate = ganttTask.getBeginDate();
|
||||
final long previousLength = ganttTask.getLengthMilliseconds();
|
||||
return new IDesktopUpdate() {
|
||||
@Override
|
||||
public void doUpdate() {
|
||||
ganttTask.fireChangesForPreviousValues(previousBeginDate,
|
||||
previousLength);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private IDesktopUpdate showStart(final int total) {
|
||||
return new IDesktopUpdate() {
|
||||
@Override
|
||||
public void doUpdate() {
|
||||
Clients.showBusy(_("Doing {0} reassignations", total), true);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private IDesktopUpdate showCompleted(final int number, final int total) {
|
||||
return new IDesktopUpdate() {
|
||||
|
||||
@Override
|
||||
public void doUpdate() {
|
||||
Clients.showBusy(_("Done {0} of {1}", number, total), true);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private IDesktopUpdate reloadCharts(final IContext<?> context) {
|
||||
return new IDesktopUpdate() {
|
||||
@Override
|
||||
public void doUpdate() {
|
||||
context.reloadCharts();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private IDesktopUpdate showEnd() {
|
||||
return new IDesktopUpdate() {
|
||||
|
||||
@Override
|
||||
public void doUpdate() {
|
||||
Clients.showBusy(null, false);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static class WithAssociatedEntity {
|
||||
static WithAssociatedEntity create(
|
||||
IDomainAndBeansMapper<TaskElement> mapper, Task each) {
|
||||
|
|
@ -130,18 +220,6 @@ public class ReassignCommand implements IReassignCommand {
|
|||
return result;
|
||||
}
|
||||
|
||||
private void doReassignations(List<WithAssociatedEntity> reassignations) {
|
||||
for (final WithAssociatedEntity each : reassignations) {
|
||||
Date previousBeginDate = each.ganntTask.getBeginDate();
|
||||
long previousLength = each.ganntTask.getLengthMilliseconds();
|
||||
transactionService
|
||||
.runOnReadOnlyTransaction(reassignmentTransaction(each));
|
||||
each.ganntTask.fireChangesForPreviousValues(previousBeginDate,
|
||||
previousLength);
|
||||
each.ganntTask.reloadResourcesText();
|
||||
}
|
||||
}
|
||||
|
||||
private IOnTransaction<Void> reassignmentTransaction(
|
||||
final WithAssociatedEntity withAssociatedEntity) {
|
||||
return new IOnTransaction<Void>() {
|
||||
|
|
@ -182,7 +260,6 @@ public class ReassignCommand implements IReassignCommand {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
private void reassign(TaskElement taskElement) {
|
||||
org.navalplanner.business.planner.entities.Task t = (org.navalplanner.business.planner.entities.Task) taskElement;
|
||||
t.reassignAllocationsWithNewResources(resourceDAO);
|
||||
|
|
@ -198,4 +275,8 @@ public class ReassignCommand implements IReassignCommand {
|
|||
return "/common/img/ico_reassign.png";
|
||||
}
|
||||
|
||||
private Desktop getDesktop(final IContext<TaskElement> context) {
|
||||
return context.getRelativeTo().getDesktop();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,8 +32,6 @@ import org.springframework.context.annotation.Scope;
|
|||
import org.springframework.stereotype.Component;
|
||||
import org.zkoss.ganttz.timetracker.ICellForDetailItemRenderer;
|
||||
import org.zkoss.ganttz.timetracker.OnColumnsRowRenderer;
|
||||
import org.zkoss.ganttz.util.LongOperationFeedback;
|
||||
import org.zkoss.ganttz.util.LongOperationFeedback.ILongOperation;
|
||||
import org.zkoss.zk.ui.Executions;
|
||||
import org.zkoss.zk.ui.WrongValueException;
|
||||
import org.zkoss.zk.ui.event.Event;
|
||||
|
|
@ -148,19 +146,8 @@ public class ReassignController extends GenericForwardComposer {
|
|||
final LocalDate associatedDate = this.associatedDate.getValue() != null ? LocalDate
|
||||
.fromDateFields(this.associatedDate.getValue())
|
||||
: null;
|
||||
LongOperationFeedback.execute(window, new ILongOperation() {
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return _("Doing Reassignation");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doAction() throws Exception {
|
||||
configurationResult.result(ReassignConfiguration.create(
|
||||
currentType, associatedDate));
|
||||
}
|
||||
});
|
||||
configurationResult.result(ReassignConfiguration.create(currentType,
|
||||
associatedDate));
|
||||
}
|
||||
|
||||
public void cancel() {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue