Skip to content

Commit

Permalink
work items power donor functionality fix
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Jul 3, 2019
1 parent b85ae4a commit 468985a
Show file tree
Hide file tree
Showing 7 changed files with 117 additions and 160 deletions.
Expand Up @@ -1860,6 +1860,7 @@ public String getBubbleLabel() {
addMenuItem(item, "PageAdmin.menu.top.cases.listAll", GuiStyleConstants.EVO_CASE_OBJECT_ICON, PageCases.class);
addMenuItem(item, "PageAdmin.menu.top.caseWorkItems.listAll", GuiStyleConstants.CLASS_OBJECT_WORK_ITEM_ICON, PageCaseWorkItemsAll.class);
addMenuItem(item, "PageAdmin.menu.top.caseWorkItems.list", PageCaseWorkItemsAllocatedToMe.class);
addMenuItem(item, "PageAdmin.menu.top.workItems.listAttorney", PageAttorneySelection.class);

addCollectionsMenuItems(item.getItems(), CaseType.COMPLEX_TYPE, PageCases.class);

Expand Down
Expand Up @@ -468,6 +468,26 @@ public IModel<String> getDataModel(IModel<PrismContainerValueWrapper<CaseWorkIte


});
columns.add(new AbstractExportableColumn<PrismContainerValueWrapper<CaseWorkItemType>, String>(
createStringResource("pageCases.table.state")) {
private static final long serialVersionUID = 1L;

@Override
public void populateItem(Item<ICellPopulator<PrismContainerValueWrapper<CaseWorkItemType>>> cellItem,
String componentId, IModel<PrismContainerValueWrapper<CaseWorkItemType>> rowModel) {
CaseType parentCase = CaseTypeUtil.getCase(unwrapRowModel(rowModel));
cellItem.add(new Label(componentId, parentCase != null ? parentCase.getState() : ""));
}

@Override
public IModel<String> getDataModel(IModel<PrismContainerValueWrapper<CaseWorkItemType>> rowModel) {
CaseType parentCase = CaseTypeUtil.getCase(unwrapRowModel(rowModel));
return Model.of(parentCase != null ? parentCase.getState() : "");
}


});

columns.add(new LinkColumn<PrismContainerValueWrapper<CaseWorkItemType>>(createStringResource("WorkItemsPanel.object")) {
private static final long serialVersionUID = 1L;

Expand Down
Expand Up @@ -19,6 +19,7 @@
import com.evolveum.midpoint.gui.api.component.ObjectBrowserPanel;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.CaseTypeUtil;
Expand Down Expand Up @@ -220,15 +221,21 @@ protected Component getCustomForm() {
}

private void assumePowerOfAttorneyIfRequested(OperationResult result) {
// if (powerDonor != null) {
// WebModelServiceUtils.assumePowerOfAttorney(powerDonor, getModelInteractionService(), getTaskManager(), result);
// }
PrismObject<UserType> powerDonor = getPowerDonor();
if (powerDonor != null) {
WebModelServiceUtils.assumePowerOfAttorney(powerDonor, getPageBase().getModelInteractionService(), getPageBase().getTaskManager(), result);
}
}

private void dropPowerOfAttorneyIfRequested(OperationResult result) {
// if (powerDonor != null) {
// WebModelServiceUtils.dropPowerOfAttorney(getModelInteractionService(), getTaskManager(), result);
// }
PrismObject<UserType> powerDonor = getPowerDonor();
if (powerDonor != null) {
WebModelServiceUtils.dropPowerOfAttorney(getPageBase().getModelInteractionService(), getPageBase().getTaskManager(), result);
}
}

public PrismObject<UserType> getPowerDonor() {
return null;
}

private IModel<String> getApproveButtonTitleModel(){
Expand Down
Expand Up @@ -30,13 +30,15 @@
import com.evolveum.midpoint.web.component.data.column.IconColumn;
import com.evolveum.midpoint.web.component.data.column.LinkColumn;
import com.evolveum.midpoint.web.component.wf.WorkItemsPanel;
import com.evolveum.midpoint.web.page.admin.workflow.PageAttorneySelection;
import com.evolveum.midpoint.web.session.PageStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractWorkItemType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseWorkItemType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.DisplayType;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.model.IModel;
Expand All @@ -63,12 +65,19 @@ public enum View {
}

private View view;
private PageParameters pageParameters;

public CaseWorkItemsPanel(String id, View view){
super(id);
this.view = view;
}

public CaseWorkItemsPanel(String id, View view, PageParameters pageParameters){
super(id);
this.view = view;
this.pageParameters = pageParameters;
}

@Override
protected void onInitialize(){
super.onInitialize();
Expand Down Expand Up @@ -151,12 +160,16 @@ public boolean isEnabled(IModel<PrismContainerValueWrapper<CaseWorkItemType>> ro

@Override
public void onClick(AjaxRequestTarget target, IModel<PrismContainerValueWrapper<CaseWorkItemType>> rowModel) {
PageParameters pageParameters = new PageParameters();
PageParameters workItemPageParameters = new PageParameters();
CaseWorkItemType caseWorkItemType = rowModel.getObject().getRealValue();
CaseType parentCase = CaseTypeUtil.getCase(caseWorkItemType);
WorkItemId workItemId = WorkItemId.create(parentCase != null ? parentCase.getOid() : "", caseWorkItemType.getId());
pageParameters.add(OnePageParameterEncoder.PARAMETER, workItemId.asString());
CaseWorkItemsPanel.this.getPageBase().navigateToNext(PageCaseWorkItem.class, pageParameters);
workItemPageParameters.add(OnePageParameterEncoder.PARAMETER, workItemId.asString());
if (pageParameters != null && pageParameters.get(PageAttorneySelection.PARAMETER_DONOR_OID) != null &&
StringUtils.isNotEmpty(pageParameters.get(PageAttorneySelection.PARAMETER_DONOR_OID).toString())){
workItemPageParameters.add(PageAttorneySelection.PARAMETER_DONOR_OID, pageParameters.get(PageAttorneySelection.PARAMETER_DONOR_OID));
}
CaseWorkItemsPanel.this.getPageBase().navigateToNext(PageCaseWorkItem.class, workItemPageParameters);
}
});

Expand Down
Expand Up @@ -33,6 +33,8 @@
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.page.admin.workflow.CaseWorkItemSummaryPanel;
import com.evolveum.midpoint.web.page.admin.workflow.PageAttorneySelection;
import com.evolveum.midpoint.web.page.admin.workflow.PageWorkItems;
import com.evolveum.midpoint.web.page.admin.workflow.WorkItemDetailsPanel;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
Expand All @@ -43,6 +45,7 @@
import org.apache.wicket.model.Model;
import org.apache.wicket.request.mapper.parameter.PageParameters;

import java.util.ArrayList;
import java.util.List;

import static com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType.F_OBJECT_REF;
Expand All @@ -62,6 +65,7 @@ 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";
Expand Down Expand Up @@ -98,8 +102,10 @@ public class PageCaseWorkItem extends PageAdminCaseWorkItems {
private LoadableModel<CaseType> caseModel;
private LoadableModel<CaseWorkItemType> caseWorkItemModel;
private WorkItemId workItemId;
private PageParameters pageParameters;

public PageCaseWorkItem(PageParameters parameters) {
this.pageParameters = parameters;

String caseId = parameters.get(OnePageParameterEncoder.PARAMETER).toString();
if (StringUtils.isEmpty(caseId)) {
Expand Down Expand Up @@ -222,6 +228,11 @@ protected Component getCustomForm(){
return workItemDetailsPanel.getCustomForm();
}

@Override
public PrismObject<UserType> getPowerDonor() {
return PageCaseWorkItem.this.getPowerDonor();
}

};
actionsPanel.setOutputMarkupId(true);
actionsPanel.add(new VisibleBehaviour(() -> !SchemaConstants.CASE_STATE_CLOSED.equals(caseModel.getObject().getState())));
Expand All @@ -233,150 +244,22 @@ private void cancelPerformed() {
redirectBack();
}

// private void initLayout() {
// LOGGER.trace("BEGIN PageCaseWorkItem::initLayout");
//
// Form mainForm = new Form(ID_MAIN_FORM);
// add(mainForm);
//
// // Case Details
//// mainForm.add(new Label(ID_CASE_NAME, new PropertyModel<>(caseModel, CaseDto.F_NAME)));
// mainForm.add(new Label(ID_CASE_DESCRIPTION, new PropertyModel<>(caseModel, CaseDto.F_DESCRIPTION)));
// mainForm.add(new Label(ID_CASE_RESOURCE, new PropertyModel<>(caseModel, CaseDto.F_OBJECT_NAME)));
// mainForm.add(new Label(ID_CASE_TARGET, new PropertyModel<>(caseModel, CaseDto.F_TARGET_NAME)));
//// mainForm.add(new Label(ID_CASE_EVENT, new PropertyModel<>(caseModel, CaseDto.F_EVENT)));
// mainForm.add(new Label(ID_CASE_OUTCOME, new PropertyModel<>(caseModel, CaseDto.F_OUTCOME)));
// mainForm.add(new Label(ID_CASE_OPEN_TIMESTAMP, new PropertyModel<>(caseModel, CaseDto.F_OPEN_TIMESTAMP)));
// mainForm.add(new Label(ID_CASE_CLOSE_TIMESTAMP, new PropertyModel<>(caseModel, CaseDto.F_CLOSE_TIMESTAMP)));
// mainForm.add(new Label(ID_CASE_STATE, new PropertyModel<>(caseModel, CaseDto.F_STATE)));
//
// // Case Work Item Details
// mainForm.add(new Label(ID_CASE_WORK_ITEM_ASSIGNEES, new PropertyModel<>(caseWorkItemModel, CaseWorkItemDto.F_ASSIGNEES)));
// mainForm.add(new Label(ID_CASE_WORK_ITEM_ORIGINAL_ASSIGNEE, new PropertyModel<>(caseWorkItemModel, CaseWorkItemDto.F_ORIGINAL_ASSIGNEE)));
// mainForm.add(new Label(ID_CASE_WORK_ITEM_CLOSE_TIMESTAMP, new PropertyModel<>(caseWorkItemModel, CaseWorkItemDto.F_CLOSE_TIMESTAMP)));
// mainForm.add(new Label(ID_CASE_WORK_ITEM_DEADLINE, new PropertyModel<>(caseWorkItemModel, CaseWorkItemDto.F_DEADLINE)));
// mainForm.add(new Label(ID_CASE_WORK_ITEM_OUTCOME, new PropertyModel<>(caseWorkItemModel, CaseWorkItemDto.F_OUTCOME)));
// mainForm.add(new Label(ID_CASE_WORK_ITEM_COMMENT, new PropertyModel<>(caseWorkItemModel, CaseWorkItemDto.F_COMMENT)));
// UploadDownloadPanel evidencePanel = new UploadDownloadPanel(ID_CASE_WORK_ITEM_EVIDENCE, true){
// private static final long serialVersionUID = 1L;
//
// @Override
// public InputStream getStream() {
// return new ByteArrayInputStream(caseWorkItemModel.getObject().getEvidence());
// }
//
// @Override
// public String getDownloadFileName() {
// return caseWorkItemModel.getObject().getEvidenceFilename();
// }
//
// @Override
// public String getDownloadContentType() {
// return caseWorkItemModel.getObject().getEvidenceContentType();
// }
// };
// evidencePanel.add(new VisibleEnableBehaviour() {
// private static final long serialVersionUID = 1L;
//
// @Override
// public boolean isVisible() {
// return caseWorkItemModel.getObject().getEvidence() != null;
// }
// });
// mainForm.add(evidencePanel);
//
// // Case Work Item Form
// WebMarkupContainer caseWorkItemForm = new WebMarkupContainer(ID_CASE_WORK_ITEM_FORM);
// TextArea commentField = new TextArea<>(ID_CASE_WORK_ITEM_FORM_COMMENT, new PropertyModel<String>(caseWorkItemModel, CaseWorkItemDto.F_COMMENT));
// caseWorkItemForm.add(commentField);
// FileUploadField evidenceUpload = new FileUploadField(ID_CASE_WORK_ITEM_FORM_EVIDENCE);
// caseWorkItemForm.add(evidenceUpload);
// caseWorkItemForm.add(new VisibleEnableBehaviour() {
// private static final long serialVersionUID = 1L;
//
// @Override
// public boolean isVisible() {
// return caseModel.getObject().getState() == null || !caseModel.getObject().getState().equals(SchemaConstants.CASE_STATE_CLOSED);
// }
// });
// mainForm.add(caseWorkItemForm);
//
// initDeltaPanel(mainForm);
// initButtons(mainForm);
// LOGGER.trace("END PageCaseWorkItem::initLayout");
// }
//
// private void initDeltaPanel(Form mainForm){
// CaseDto caseDto = caseModel.getObject();
// String shadowName = caseDto.getTargetName();
// ObjectDeltaType deltaType = caseDto.getObjectChange();
// RepeatingView deltaScene = new RepeatingView(ID_DELTA_PANEL);
//
// if (deltaType != null) {
// ObjectDeltaOperationType delta = new ObjectDeltaOperationType().objectDelta(deltaType).resourceOid(caseModel.getObject().getObjectOid());
// delta.setResourceName(new PolyStringType(caseModel.getObject().getObjectName()));
// delta.setObjectName(new PolyStringType(shadowName));
// OperationResultType result = new OperationResultType();
// result.setStatus(OperationResultStatusType.IN_PROGRESS);
// delta.setExecutionResult(result);
//
// ObjectDeltaOperationPanel deltaPanel = new ObjectDeltaOperationPanel(deltaScene.newChildId(), Model.of(delta), this);
// deltaPanel.setOutputMarkupId(true);
// deltaScene.add(deltaPanel);
// }
// mainForm.add(deltaScene);
// }
//
// private void initButtons(Form mainForm) {
// AjaxButton back = new AjaxButton(ID_BACK_BUTTON, createStringResource("pageCase.button.back")) {
// private static final long serialVersionUID = 1L;
//
// @Override
// public void onClick(AjaxRequestTarget target) {
// cancelPerformed();
// }
// };
// mainForm.add(back);
//
// AjaxSubmitButton closeCase = new DefaultAjaxSubmitButton(ID_CLOSE_CASE_BUTTON, createStringResource("PageCaseWorkItem.button.closeCase"),
// this, (target, form) -> closeCaseWorkItemPerformed(target));
// closeCase.add(new VisibleEnableBehaviour() {
// @Override
// public boolean isVisible() {
// return caseModel.getObject().getState() == null || !caseModel.getObject().getState().equals(SchemaConstants.CASE_STATE_CLOSED);
// }
// });
// mainForm.add(closeCase);
// }
//
// private void cancelPerformed() {
// redirectBack();
// }
//
// private void closeCaseWorkItemPerformed(AjaxRequestTarget target) {
// OperationResult result = new OperationResult(OPERATION_SAVE_CASE_WORK_ITEM);
// Task task = createSimpleTask(OPERATION_SAVE_CASE_WORK_ITEM);
// try {
//
// CaseWorkItemDto dto = caseWorkItemModel.getObject();
// CaseManagementService cms = getCaseManagementService();
// AbstractWorkItemOutputType output = new AbstractWorkItemOutputType()
// .comment(dto.getComment())
// .outcome(OperationResultStatusType.SUCCESS.value());
// FileUploadField evidenceUploadField = (FileUploadField) get(ID_MAIN_FORM).get(ID_CASE_WORK_ITEM_FORM).get(ID_CASE_WORK_ITEM_FORM_EVIDENCE);
// if (evidenceUploadField != null) {
// FileUpload evidence = evidenceUploadField.getFileUpload();
// if (evidence != null) {
// String filename = evidence.getClientFileName();
// String contentType = evidence.getContentType();
// output = output.evidence(evidence.getBytes()).evidenceContentType(contentType).evidenceFilename(filename);
// }
// }
// cms.completeWorkItem(caseId, caseWorkItemId, output, task, result);
// } catch (Exception ex) {
// result.recordFatalError("Couldn't close case work item.", ex);
// LoggingUtils.logUnexpectedException(LOGGER, "Couldn't close case work item", ex);
// }
// processResult(target, result, false);
// }
protected PrismObject<UserType> getPowerDonor(){
if (pageParameters != null && pageParameters.get(PageAttorneySelection.PARAMETER_DONOR_OID) != null &&
StringUtils.isNotEmpty(pageParameters.get(PageAttorneySelection.PARAMETER_DONOR_OID).toString())){
String powerDonorOid = pageParameters.get(PageAttorneySelection.PARAMETER_DONOR_OID).toString();
if (StringUtils.isEmpty(powerDonorOid)){
return null;
}
Task task = createSimpleTask(OPERATION_LOAD_DONOR);
OperationResult result = task.getResult();

PrismObject<UserType> donor = WebModelServiceUtils.loadObject(UserType.class, powerDonorOid,
new ArrayList<>(), PageCaseWorkItem.this, task, result);

return donor;

}
return null;
}
}

0 comments on commit 468985a

Please sign in to comment.