Skip to content

Commit

Permalink
Deltas in approvals are not refreshed unless really changed.
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Apr 20, 2016
1 parent 8237c03 commit 9fd47fa
Show file tree
Hide file tree
Showing 17 changed files with 361 additions and 48 deletions.
Expand Up @@ -136,4 +136,31 @@ public String getBoxClassOverride() {
public void setBoxClassOverride(String boxClassOverride) {
this.boxClassOverride = boxClassOverride;
}

// minimized is NOT included in equality check - because the SceneDto's are compared in order to determine
// whether they should be redrawn (i.e. their content is important, not the presentation)

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

SceneDto sceneDto = (SceneDto) o;

if (scene != null ? !scene.equals(sceneDto.scene) : sceneDto.scene != null) return false;
if (boxClassOverride != null ? !boxClassOverride.equals(sceneDto.boxClassOverride) : sceneDto.boxClassOverride != null)
return false;
if (items != null ? !items.equals(sceneDto.items) : sceneDto.items != null) return false;
return !(partialScenes != null ? !partialScenes.equals(sceneDto.partialScenes) : sceneDto.partialScenes != null);

}

@Override
public int hashCode() {
int result = scene != null ? scene.hashCode() : 0;
result = 31 * result + (boxClassOverride != null ? boxClassOverride.hashCode() : 0);
result = 31 * result + (items != null ? items.hashCode() : 0);
result = 31 * result + (partialScenes != null ? partialScenes.hashCode() : 0);
return result;
}
}
Expand Up @@ -95,4 +95,23 @@ public boolean isDelta() {
public boolean isDeltaScene() {
return sceneDto.containsDeltaItems();
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

SceneItemDto that = (SceneItemDto) o;

if (!sceneItem.equals(that.sceneItem)) return false;
return lines.equals(that.lines);

}

@Override
public int hashCode() {
int result = sceneItem.hashCode();
result = 31 * result + lines.hashCode();
return result;
}
}
Expand Up @@ -71,4 +71,29 @@ public boolean isDelta() {
public boolean isDeltaScene() {
return sceneItemDto.isDeltaScene();
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

SceneItemLineDto that = (SceneItemLineDto) o;

if (index != that.index) return false;
if (isDelta != that.isDelta) return false;
if (sceneItemOldValue != null ? !sceneItemOldValue.equals(that.sceneItemOldValue) : that.sceneItemOldValue != null)
return false;
return !(sceneItemNewValue != null ? !sceneItemNewValue.equals(that.sceneItemNewValue) : that.sceneItemNewValue != null);

}

@Override
public int hashCode() {
int result = 1;
result = 31 * result + (sceneItemOldValue != null ? sceneItemOldValue.hashCode() : 0);
result = 31 * result + (sceneItemNewValue != null ? sceneItemNewValue.hashCode() : 0);
result = 31 * result + index;
result = 31 * result + (isDelta ? 1 : 0);
return result;
}
}
Expand Up @@ -27,6 +27,7 @@
import com.evolveum.midpoint.util.DebugUtil;
import org.jetbrains.annotations.NotNull;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

Expand Down Expand Up @@ -156,4 +157,27 @@ public String debugDump() {
public String debugDump(int indent) {
return DebugUtil.debugDump(partialScenes, indent);
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

WrapperScene that = (WrapperScene) o;

if (displayNameKey != null ? !displayNameKey.equals(that.displayNameKey) : that.displayNameKey != null)
return false;
// Probably incorrect - comparing Object[] arrays with Arrays.equals
if (!Arrays.equals(displayNameParameters, that.displayNameParameters)) return false;
return !(partialScenes != null ? !partialScenes.equals(that.partialScenes) : that.partialScenes != null);

}

@Override
public int hashCode() {
int result = displayNameKey != null ? displayNameKey.hashCode() : 0;
result = 31 * result + (displayNameParameters != null ? Arrays.hashCode(displayNameParameters) : 0);
result = 31 * result + (partialScenes != null ? partialScenes.hashCode() : 0);
return result;
}
}
Expand Up @@ -97,6 +97,8 @@ public class PageTaskEdit extends PageAdmin implements Refreshable {
private LoadableModel<ObjectWrapper<TaskType>> objectWrapperModel;
private boolean edit = false;

private TaskDto currentTaskDto, previousTaskDto;

private PageTaskController controller = new PageTaskController(this);

private TaskMainPanel mainPanel;
Expand All @@ -110,10 +112,12 @@ public PageTaskEdit(PageParameters parameters) {
@Override
protected TaskDto load() {
try {
previousTaskDto = currentTaskDto;
final OperationResult result = new OperationResult(OPERATION_LOAD_TASK);
final Task operationTask = getTaskManager().createTaskInstance(OPERATION_LOAD_TASK);
final TaskType taskType = loadTaskTypeChecked(taskOid, operationTask, result);
return prepareTaskDto(taskType, operationTask, result);
currentTaskDto = prepareTaskDto(taskType, operationTask, result);
return currentTaskDto;
} catch (SchemaException|ObjectNotFoundException e) {
throw new SystemException("Couldn't prepare task DTO: " + e.getMessage(), e);
}
Expand Down Expand Up @@ -268,6 +272,14 @@ public void refresh(AjaxRequestTarget target) {
}
}

public TaskDto getCurrentTaskDto() {
return currentTaskDto;
}

public TaskDto getPreviousTaskDto() {
return previousTaskDto;
}

@Override
public Component getRefreshingBehaviorParent() {
return getRefreshPanel();
Expand All @@ -288,6 +300,8 @@ public void refreshTaskModels() {
TaskType taskType = loadTaskType(oldTaskDto.getOid(), operationTask, result);
TaskDto newTaskDto = prepareTaskDto(taskType, operationTask, result);
final ObjectWrapper<TaskType> newWrapper = loadObjectWrapper(taskType.asPrismObject(), result);
previousTaskDto = currentTaskDto;
currentTaskDto = newTaskDto;
taskDtoModel.setObject(newTaskDto);
objectWrapperModel.setObject(newWrapper);
} catch (ObjectNotFoundException|SchemaException|RuntimeException e) {
Expand Down
Expand Up @@ -42,6 +42,7 @@ public class TaskApprovalsTabPanel extends AbstractObjectTabPanel<TaskType> impl
private PageTaskEdit parentPage;

private TaskWfChildPanel childPanel;
private TaskWfParentPanel parentPanel;

private static final Trace LOGGER = TraceManager.getTrace(TaskApprovalsTabPanel.class);

Expand All @@ -65,7 +66,7 @@ public boolean isVisible() {
});
add(childPanel);

TaskWfParentPanel parentPanel = new TaskWfParentPanel(ID_WORKFLOW_PARENT_PANEL, taskDtoModel, parentPage);
parentPanel = new TaskWfParentPanel(ID_WORKFLOW_PARENT_PANEL, taskDtoModel, parentPage);
parentPanel.add(new VisibleEnableBehaviour() {
@Override
public boolean isVisible() {
Expand All @@ -79,7 +80,10 @@ public boolean isVisible() {
public Collection<Component> getComponentsToUpdate() {
if (parentPage.getTaskDto().isWorkflowChild()) {
return childPanel.getComponentsToUpdate();
} else if (parentPage.getTaskDto().isWorkflowParent()) {
return parentPanel.getComponentsToUpdate();
} else {
// shouldn't occur
return Collections.<Component>singleton(this);
}
}
Expand Down
Expand Up @@ -21,7 +21,7 @@
<wicket:panel>
<div class="row">
<div class="col-md-5">
<div wicket:id="deltasToBeApproved" />
<div wicket:id="changes" />
</div>
<div class="col-md-7">
<div class="box box-info">
Expand Down
Expand Up @@ -16,14 +16,14 @@

package com.evolveum.midpoint.web.page.admin.server;

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.util.ListDataProvider;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.component.wf.WorkItemsPanel;
import com.evolveum.midpoint.web.component.wf.processes.itemApproval.ItemApprovalHistoryPanel;
import com.evolveum.midpoint.web.page.admin.server.dto.TaskChangesDto;
import com.evolveum.midpoint.web.page.admin.server.dto.TaskDto;
import com.evolveum.midpoint.web.page.admin.workflow.WorkflowRequestsPanel;
import com.evolveum.midpoint.web.page.admin.workflow.dto.ProcessInstanceDto;
Expand All @@ -42,7 +42,7 @@
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;

import java.util.Arrays;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

Expand All @@ -53,7 +53,7 @@ public class TaskWfChildPanel extends Panel {

private static final long serialVersionUID = 1L;

private static final String ID_DELTAS_TO_BE_APPROVED = "deltasToBeApproved";
private static final String ID_CHANGES = "changes";
private static final String ID_HISTORY = "history";
private static final String ID_HISTORY_HELP = "approvalHistoryHelp";
private static final String ID_CURRENT_WORK_ITEMS_CONTAINER = "currentWorkItemsContainer";
Expand All @@ -67,22 +67,27 @@ public class TaskWfChildPanel extends Panel {

private static final Trace LOGGER = TraceManager.getTrace(TaskApprovalsTabPanel.class);

public TaskWfChildPanel(String id, IModel<TaskDto> taskDtoModel, PageBase pageBase) {
private PropertyModel<TaskChangesDto> changesModel;
private PageTaskEdit parentPage;

public TaskWfChildPanel(String id, IModel<TaskDto> taskDtoModel, PageTaskEdit parentPage) {
super(id);
initLayout(taskDtoModel, pageBase);
this.parentPage = parentPage;
initLayout(taskDtoModel);
setOutputMarkupId(true);
}

private void initLayout(final IModel<TaskDto> taskDtoModel, PageBase pageBase) {
private void initLayout(final IModel<TaskDto> taskDtoModel) {

TaskChangesPanel deltasToBeApproved = new TaskChangesPanel(ID_DELTAS_TO_BE_APPROVED, new PropertyModel(taskDtoModel, TaskDto.F_CHANGE_BEING_APPROVED));
deltasToBeApproved.setOutputMarkupId(true);
add(deltasToBeApproved);
changesModel = new PropertyModel<>(taskDtoModel, TaskDto.F_CHANGE_BEING_APPROVED);
TaskChangesPanel changesPanel = new TaskChangesPanel(ID_CHANGES, changesModel);
changesPanel.setOutputMarkupId(true);
add(changesPanel);

final ItemApprovalHistoryPanel history = new ItemApprovalHistoryPanel(ID_HISTORY,
new PropertyModel<WfContextType>(taskDtoModel, TaskDto.F_WORKFLOW_CONTEXT),
UserProfileStorage.TableId.PAGE_TASK_HISTORY_PANEL,
(int) pageBase.getItemsPerPage(UserProfileStorage.TableId.PAGE_TASK_HISTORY_PANEL));
(int) parentPage.getItemsPerPage(UserProfileStorage.TableId.PAGE_TASK_HISTORY_PANEL));
history.setOutputMarkupId(true);
add(history);
add(WebComponentUtil.createHelp(ID_HISTORY_HELP));
Expand All @@ -91,7 +96,7 @@ private void initLayout(final IModel<TaskDto> taskDtoModel, PageBase pageBase) {
final ISortableDataProvider<WorkItemDto, String> provider = new ListDataProvider(this, new PropertyModel<List<WorkItemDto>>(taskDtoModel, TaskDto.F_WORK_ITEMS));
final WorkItemsPanel workItemsPanel = new WorkItemsPanel(ID_CURRENT_WORK_ITEMS, provider,
UserProfileStorage.TableId.PAGE_TASK_CURRENT_WORK_ITEMS_PANEL,
(int) pageBase.getItemsPerPage(UserProfileStorage.TableId.PAGE_TASK_CURRENT_WORK_ITEMS_PANEL),
(int) parentPage.getItemsPerPage(UserProfileStorage.TableId.PAGE_TASK_CURRENT_WORK_ITEMS_PANEL),
WorkItemsPanel.View.ITEMS_FOR_PROCESS);
workItemsPanel.setOutputMarkupId(true);
workItemsContainer.add(workItemsPanel);
Expand Down Expand Up @@ -135,12 +140,18 @@ public void onClick(AjaxRequestTarget target) {
}

public Collection<Component> getComponentsToUpdate() {
return Arrays.asList(
get(ID_DELTAS_TO_BE_APPROVED),
get(ID_HISTORY),
get(ID_CURRENT_WORK_ITEMS_CONTAINER),
get(ID_RELATED_REQUESTS_CONTAINER)
);
// exclude 'show parent' link

TaskDto curr = parentPage.getCurrentTaskDto();
TaskDto prev = parentPage.getPreviousTaskDto();
boolean changesChanged = prev == null || prev.getChangesBeingApproved() == null || !prev.getChangesBeingApproved().equals(curr.getChangesBeingApproved());

List<Component> rv = new ArrayList<>();
if (changesChanged) {
rv.add(get(ID_CHANGES));
}
rv.add(get(ID_HISTORY));
rv.add(get(ID_CURRENT_WORK_ITEMS_CONTAINER));
rv.add(get(ID_RELATED_REQUESTS_CONTAINER));
return rv; // we exclude 'show parent' link
}
}
Expand Up @@ -19,28 +19,30 @@
xmlns:wicket="http://wicket.apache.org">
<body>
<wicket:panel>
<div class="row" style="margin-bottom: 10px">
<div class="col-md-6" wicket:id="changes1">
<div wicket:id="changes1Content"/>
</div>
<div class="col-md-6" wicket:id="changes2">
<div wicket:id="changes2Content"/>
</div>
</div>
<div class="row" style="margin-bottom: 10px">
<div class="col-md-6" wicket:id="changes3">
<div wicket:id="changes3Content"/>
</div>
<div class="col-md-6" wicket:id="changes4">
<div wicket:id="changes4Content"/>
</div>
</div>
<div class="row">
<div class="col-md-6" wicket:id="changes5">
<div wicket:id="changes5Content"/>
</div>
<div class="col-md-6" wicket:id="changes6">
<div wicket:id="changes6Content"/>
<div wicket:id="changesContainer">
<div class="row" style="margin-bottom: 10px">
<div class="col-md-6" wicket:id="changes1">
<div wicket:id="changes1Content"/>
</div>
<div class="col-md-6" wicket:id="changes2">
<div wicket:id="changes2Content"/>
</div>
</div>
<div class="row" style="margin-bottom: 10px">
<div class="col-md-6" wicket:id="changes3">
<div wicket:id="changes3Content"/>
</div>
<div class="col-md-6" wicket:id="changes4">
<div wicket:id="changes4Content"/>
</div>
</div>
<div class="row">
<div class="col-md-6" wicket:id="changes5">
<div wicket:id="changes5Content"/>
</div>
<div class="col-md-6" wicket:id="changes6">
<div wicket:id="changes6Content"/>
</div>
</div>
</div>

Expand Down

0 comments on commit 9fd47fa

Please sign in to comment.