Skip to content

Commit

Permalink
MID-7124 refactoring and fixing work item details panel
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Jul 21, 2021
1 parent f393ede commit 358fa6a
Show file tree
Hide file tree
Showing 7 changed files with 34 additions and 105 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4291,26 +4291,26 @@ public static SceneDto createSceneDtoForManualCase(CaseType caseObject, PageBase
return null;
}

public static void workItemApproveActionPerformed(AjaxRequestTarget target, CaseWorkItemType workItem, AbstractWorkItemOutputType workItemOutput,
public static void workItemApproveActionPerformed(AjaxRequestTarget target, CaseWorkItemType workItem,
Component formPanel, PrismObject<UserType> powerDonor, boolean approved, OperationResult result, PageBase pageBase) {
if (workItem == null) {
return;
}
CaseType parentCase = CaseWorkItemUtil.getCase(workItem);
AbstractWorkItemOutputType output = workItem.getOutput();
if (output == null) {
output = new AbstractWorkItemOutputType(pageBase.getPrismContext());
}
output.setOutcome(ApprovalUtils.toUri(approved));
if (WorkItemTypeUtil.getComment(workItem) != null) {
output.setComment(WorkItemTypeUtil.getComment(workItem));
}
if (WorkItemTypeUtil.getEvidence(workItem) != null) {
output.setEvidence(WorkItemTypeUtil.getEvidence(workItem));
}
if (CaseTypeUtil.isManualProvisioningCase(parentCase)) {
Task task = pageBase.createSimpleTask(result.getOperation());
try {
AbstractWorkItemOutputType output = workItem.getOutput();
if (output == null) {
output = new AbstractWorkItemOutputType(pageBase.getPrismContext());
}
output.setOutcome(ApprovalUtils.toUri(approved));
if (workItemOutput != null && workItemOutput.getComment() != null) {
output.setComment(workItemOutput.getComment());
}
if (workItemOutput != null && workItemOutput.getEvidence() != null) {
output.setEvidence(workItemOutput.getEvidence());
}
WorkItemId workItemId = WorkItemId.create(parentCase.getOid(), workItem.getId());
pageBase.getWorkflowService().completeWorkItem(workItemId, output, task, result);
} catch (Exception ex) {
Expand Down Expand Up @@ -4338,8 +4338,7 @@ public static void workItemApproveActionPerformed(AjaxRequestTarget target, Case
}
assumePowerOfAttorneyIfRequested(result, powerDonor, pageBase);
pageBase.getWorkflowService().completeWorkItem(WorkItemId.of(workItem),
workItemOutput,
additionalDelta, task, result);
output, additionalDelta, task, result);
} finally {
dropPowerOfAttorneyIfRequested(result, powerDonor, pageBase);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,7 @@
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.CaseTypeUtil;
import com.evolveum.midpoint.schema.util.CaseWorkItemUtil;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
import com.evolveum.midpoint.schema.util.WorkItemId;
import com.evolveum.midpoint.schema.util.*;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
Expand Down Expand Up @@ -78,7 +75,7 @@ private void initLayout() {
@Override
public void onClick(AjaxRequestTarget ajaxRequestTarget) {
OperationResult completionResult = new OperationResult(OPERATION_COMPLETE_WORK_ITEM);
WebComponentUtil.workItemApproveActionPerformed(ajaxRequestTarget, getCaseWorkItemModelObject(), getWorkItemOutput(true),
WebComponentUtil.workItemApproveActionPerformed(ajaxRequestTarget, getCaseWorkItemModelObject(),
getCustomForm(), getPowerDonor(), true, completionResult, getPageBase());
afterActionFinished(ajaxRequestTarget);

Expand All @@ -94,7 +91,7 @@ public void onClick(AjaxRequestTarget ajaxRequestTarget) {
@Override
public void onClick(AjaxRequestTarget ajaxRequestTarget) {
OperationResult completionResult = new OperationResult(OPERATION_COMPLETE_WORK_ITEM);
WebComponentUtil.workItemApproveActionPerformed(ajaxRequestTarget, getCaseWorkItemModelObject(), getWorkItemOutput(false),
WebComponentUtil.workItemApproveActionPerformed(ajaxRequestTarget, getCaseWorkItemModelObject(),
getCustomForm(), getPowerDonor(), false, completionResult, getPageBase());
afterActionFinished(ajaxRequestTarget);
}
Expand Down Expand Up @@ -135,11 +132,6 @@ private CaseWorkItemType getCaseWorkItemModelObject(){
return getModelObject();
}

protected AbstractWorkItemOutputType getWorkItemOutput(boolean approved) {
return new AbstractWorkItemOutputType(getPrismContext())
.outcome(ApprovalUtils.toUri(approved));
}

protected WorkItemDelegationRequestType getDelegationRequest(UserType delegate) {
PrismContext prismContext = getPrismContext();
return new WorkItemDelegationRequestType(prismContext)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import java.util.ArrayList;
import java.util.List;

import com.evolveum.midpoint.schema.util.WorkItemTypeUtil;

import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
Expand Down Expand Up @@ -81,19 +83,10 @@ protected CaseWorkItemType load() {
}) {
private static final long serialVersionUID = 1L;

@Override
protected AbstractWorkItemOutputType getWorkItemOutput(boolean approved) {
String comment = workItemDetails != null ? workItemDetails.getApproverComment() : null;
byte[] evidence = workItemDetails != null ? workItemDetails.getWorkItemEvidence() : null;
return super.getWorkItemOutput(approved)
.comment(comment)
.evidence(evidence);
}

@Override
protected WorkItemDelegationRequestType getDelegationRequest(UserType delegate) {
return super.getDelegationRequest(delegate)
.comment(workItemDetails != null ? workItemDetails.getApproverComment() : null);
.comment(WorkItemTypeUtil.getComment(getModelObject()));
}

@Override
Expand Down Expand Up @@ -172,14 +165,6 @@ protected IModel<String> getDescriptionLabelModel() {
};
}

// @Override
// protected AbstractTab addBasicContainerValuePanel(String idPanel) {
// //todo fix implement with WorkItemDetailsPanelFactory
// workItemDetails = new WorkItemDetailsPanel(idPanel, Model.of(item.getModel().getObject().getRealValue()));
// workItemDetails.setOutputMarkupId(true);
// add(workItemDetails);
// }

};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,6 @@ private void workItemActionPerformed(IModel<PrismContainerValueWrapper<CaseWorkI
OperationResult completeWorkItemResult = new OperationResult(OPERATION_COMPLETE_WORK_ITEM);
selectedWorkItems.forEach(workItemToReject -> {
WebComponentUtil.workItemApproveActionPerformed(target, workItemToReject.getRealValue(),
new AbstractWorkItemOutputType(getPrismContext()).outcome(ApprovalUtils.toUri(approved)),
null, powerDonor, approved, completeWorkItemResult, CaseWorkItemsPanel.this.getPageBase());
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import java.util.ArrayList;
import java.util.List;

import com.evolveum.midpoint.schema.util.WorkItemTypeUtil;

import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.RestartResponseException;
Expand Down Expand Up @@ -58,38 +60,12 @@ public class PageCaseWorkItem extends PageAdminCaseWorkItems {
private static final String DOT_CLASS = PageCaseWorkItem.class.getName() + ".";
private static final String OPERATION_LOAD_CASE = DOT_CLASS + "loadCase";
private static final String OPERATION_LOAD_DONOR = DOT_CLASS + "loadPowerDonor";
private static final String OPERATION_SAVE_CASE_WORK_ITEM = DOT_CLASS + "closeCaseWorkItem";
private static final String PARAMETER_CASE_ID = "caseId";
private static final String PARAMETER_CASE_WORK_ITEM_ID = "caseWorkItemId";

private static final Trace LOGGER = TraceManager.getTrace(PageCaseWorkItem.class);
private static final String ID_WORK_ITEM_DETAILS = "workItemDetails";
private static final String ID_SUMMARY_PANEL = "summaryPanel";
private static final String ID_CASE_WORK_ITEM_ACTIONS_PANEL = "caseWorkItemActionsPanel";
private static final String ID_DELTA_PANEL = "deltaPanel";
private static final String ID_MAIN_FORM = "mainForm";
private static final String ID_CASE_WORK_ITEM_FORM = "caseWorkItemForm";
private static final String ID_CASE_NAME = "caseName";
private static final String ID_CASE_DESCRIPTION = "caseDescription";
private static final String ID_CASE_RESOURCE = "caseResource";
private static final String ID_CASE_TARGET = "caseTarget";
private static final String ID_CASE_EVENT = "caseEvent";
private static final String ID_CASE_OUTCOME = "caseOutcome";
private static final String ID_CASE_OPEN_TIMESTAMP = "caseOpenTimestamp";
private static final String ID_CASE_CLOSE_TIMESTAMP = "caseCloseTimestamp";
private static final String ID_CASE_STATE = "caseState";
private static final String ID_CASE_WORK_ITEM_NAME = "caseWorkItemName";
private static final String ID_CASE_WORK_ITEM_ASSIGNEES = "caseWorkItemAssignees";
private static final String ID_CASE_WORK_ITEM_ORIGINAL_ASSIGNEE = "caseWorkItemOriginalAssignee";
private static final String ID_CASE_WORK_ITEM_CLOSE_TIMESTAMP = "caseWorkItemCloseTimestamp";
private static final String ID_CASE_WORK_ITEM_DEADLINE = "caseWorkItemDeadline";
private static final String ID_CASE_WORK_ITEM_OUTCOME = "caseWorkItemOutcome";
private static final String ID_CASE_WORK_ITEM_COMMENT = "caseWorkItemComment";
private static final String ID_CASE_WORK_ITEM_FORM_COMMENT = "caseWorkItemFormComment";
private static final String ID_CASE_WORK_ITEM_FORM_EVIDENCE = "caseWorkItemFormEvidence";
private static final String ID_CASE_WORK_ITEM_EVIDENCE = "caseWorkItemEvidence";
private static final String ID_BACK_BUTTON = "backButton";
private static final String ID_CLOSE_CASE_BUTTON = "closeCaseButton";

private final LoadableModel<CaseWorkItemType> caseWorkItemModel;
private final PageParameters pageParameters;
Expand Down Expand Up @@ -240,17 +216,10 @@ public void onClick(AjaxRequestTarget target) {
CaseWorkItemActionsPanel actionsPanel = new CaseWorkItemActionsPanel(ID_CASE_WORK_ITEM_ACTIONS_PANEL, caseWorkItemModel) {
private static final long serialVersionUID = 1L;

@Override
protected AbstractWorkItemOutputType getWorkItemOutput(boolean approved) {
return super.getWorkItemOutput(approved)
.comment(workItemDetailsPanel.getApproverComment())
.evidence(workItemDetailsPanel.getWorkItemEvidence());
}

@Override
protected WorkItemDelegationRequestType getDelegationRequest(UserType delegate) {
return super.getDelegationRequest(delegate)
.comment(workItemDetailsPanel.getApproverComment());
.comment(WorkItemTypeUtil.getComment(getModelObject()));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,6 @@ public class WorkItemDetailsPanel extends BasePanel<CaseWorkItemType> {


private IModel<SceneDto> sceneModel;
private String approverCommentValue = null;
private byte[] evidenceFile = null;

public WorkItemDetailsPanel(String id, IModel<CaseWorkItemType> caseWorkItemTypeIModel) {
super(id, caseWorkItemTypeIModel);
}
Expand All @@ -119,8 +116,6 @@ protected SceneDto load() {
}
}
};
evidenceFile = WorkItemTypeUtil.getEvidence(getModelObject());
approverCommentValue = WorkItemTypeUtil.getComment(getModelObject());
}

private void initLayout(){
Expand Down Expand Up @@ -260,12 +255,13 @@ public boolean isVisible() {
@Override
public void updateValue(byte[] file) {
if (file != null) {
evidenceFile = Arrays.copyOf(file, file.length);
WorkItemTypeUtil.setEvidence(getModelObject(), file);
}
}

@Override
public InputStream getStream() {
byte[] evidenceFile = WorkItemTypeUtil.getEvidence(getModelObject());
return evidenceFile != null ? new ByteArrayInputStream((byte[]) evidenceFile) : new ByteArrayInputStream(new byte[0]);
}

Expand Down Expand Up @@ -294,19 +290,6 @@ public boolean isVisible() {
add(commentContainer);

TextArea<String> approverComment = new TextArea<String>(ID_APPROVER_COMMENT, new PropertyModel<>(getModel(), "output.comment"));
// new IModel<String>() {
// private static final long serialVersionUID = 1L;
//
// @Override
// public void setObject(String newValue) {
// approverCommentValue = newValue;
// }
//
// @Override
// public String getObject() {
// return approverCommentValue;
// }
// });
approverComment.add(new EnableBehaviour(() -> !SchemaConstants.CASE_STATE_CLOSED.equals(parentCase.getState())));
approverComment.setOutputMarkupId(true);
approverComment.add(new EmptyOnBlurAjaxFormUpdatingBehaviour());
Expand Down Expand Up @@ -373,14 +356,6 @@ public ObjectType getCaseFocusObject(CaseType caseType) {
return focus;
}

public String getApproverComment(){
return approverCommentValue;
}

public byte[] getWorkItemEvidence(){
return evidenceFile;
}

public Component getCustomForm(){
return get(createComponentPath(ID_ADDITIONAL_ATTRIBUTES, ID_CUSTOM_FORM));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,16 @@ public static String getComment(AbstractWorkItemOutputType output) {
return output != null ? output.getComment() : null;
}

public static void setEvidence(AbstractWorkItemType workItem, byte[] file) {
if (workItem == null) {
return;
}
if (workItem.getOutput() == null) {
workItem.setOutput(new AbstractWorkItemOutputType());
}
workItem.getOutput().setEvidence(file);
}

public static byte[] getEvidence(AbstractWorkItemType workItem) {
return getEvidence(getOutput(workItem));
}
Expand Down

0 comments on commit 358fa6a

Please sign in to comment.