Skip to content

Commit

Permalink
CaseWorkItemUtil.getCaseRequired() migrated to CaseTypeUtil + cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
virgo47 committed May 4, 2022
1 parent 9631fde commit bc7ed5d
Show file tree
Hide file tree
Showing 18 changed files with 212 additions and 227 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -201,17 +201,17 @@ public PrismObject<UserType> getPowerDonor() {
private IModel<String> getApproveButtonTitleModel() {
return () -> {
CaseType parentCase = CaseTypeUtil.getCase(getCaseWorkItemModelObject());
return CaseTypeUtil.isManualProvisioningCase(parentCase) ?
createStringResource("pageWorkItem.button.manual.doneSuccessfully").getString() :
createStringResource("pageWorkItem.button.approve").getString();
return CaseTypeUtil.isManualProvisioningCase(parentCase)
? createStringResource("pageWorkItem.button.manual.doneSuccessfully").getString()
: createStringResource("pageWorkItem.button.approve").getString();
};
}

private IModel<String> getRejectButtonTitleModel() {
return () -> {
CaseType parentCase = CaseTypeUtil.getCase(getCaseWorkItemModelObject());
return CaseTypeUtil.isManualProvisioningCase(parentCase) ?
createStringResource("pageWorkItem.button.manual.operationFailed").getString()
return CaseTypeUtil.isManualProvisioningCase(parentCase)
? createStringResource("pageWorkItem.button.manual.operationFailed").getString()
: createStringResource("pageWorkItem.button.reject").getString();
};
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
/*
* Copyright (c) 2010-2019 Evolveum and contributors
* Copyright (C) 2010-2022 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/

package com.evolveum.midpoint.schema.util;

import com.evolveum.midpoint.schema.util.cases.CaseWorkItemUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseWorkItemType;
import org.jetbrains.annotations.NotNull;

import java.io.Serializable;
import java.util.Objects;

import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.schema.util.cases.CaseTypeUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseWorkItemType;

/**
* Uniquely identifies a work item.
* Uniquely identifies a work item.
*/
public class WorkItemId implements Serializable {

Expand All @@ -40,14 +40,6 @@ public static String createWorkItemId(String caseOid, Long workItemId) {
return caseOid + ":" + workItemId;
}

public static String getCaseOidFromWorkItemId(String workItemId) {
return parseWorkItemId(workItemId)[0];
}

public static long getIdFromWorkItemId(String workItemId) {
return Long.parseLong(parseWorkItemId(workItemId)[1]);
}

private static String[] parseWorkItemId(@NotNull String workItemId) {
String[] components = workItemId.split(":");
if (components.length != 2) {
Expand All @@ -58,7 +50,7 @@ private static String[] parseWorkItemId(@NotNull String workItemId) {
}

public static WorkItemId of(@NotNull CaseWorkItemType workItem) {
return create(CaseWorkItemUtil.getCaseRequired(workItem).getOid(), workItem.getId());
return create(CaseTypeUtil.getCaseRequired(workItem).getOid(), workItem.getId());
}

@NotNull
Expand All @@ -84,10 +76,16 @@ public String asString() {

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof WorkItemId)) return false;
if (this == o) {
return true;
}
if (!(o instanceof WorkItemId)) {
return false;
}

WorkItemId that = (WorkItemId) o;
return id == that.id && caseOid.equals(that.caseOid);
return id == that.id
&& caseOid.equals(that.caseOid);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public static String getWorkItemStageName(CaseWorkItemType workItem) {
if (workItem == null) {
return "";
}
CaseType aCase = CaseWorkItemUtil.getCaseRequired(workItem);
CaseType aCase = CaseTypeUtil.getCaseRequired(workItem);
if (aCase.getApprovalContext() == null || workItem.getStageNumber() == null) {
return "";
}
Expand All @@ -73,7 +73,7 @@ public static String getWorkItemStageDisplayName(CaseWorkItemType workItem) {
if (workItem == null) {
return "";
}
CaseType aCase = CaseWorkItemUtil.getCaseRequired(workItem);
CaseType aCase = CaseTypeUtil.getCaseRequired(workItem);
if (aCase.getApprovalContext() == null || workItem.getStageNumber() == null) {
return "";
}
Expand Down Expand Up @@ -352,7 +352,7 @@ public static String getStageInfoTODO(Integer stageNumber) {
}

public static ApprovalContextType getApprovalContext(CaseWorkItemType workItem) {
return CaseWorkItemUtil.getCaseRequired(workItem).getApprovalContext();
return CaseTypeUtil.getCaseRequired(workItem).getApprovalContext();
}

public static CaseType getCase(ApprovalSchemaExecutionInformationType info) {
Expand All @@ -368,23 +368,23 @@ public static ApprovalContextType getApprovalContext(ApprovalSchemaExecutionInfo
}

public static ObjectReferenceType getObjectRef(CaseWorkItemType workItem) {
return CaseWorkItemUtil.getCaseRequired(workItem).getObjectRef();
return CaseTypeUtil.getCaseRequired(workItem).getObjectRef();
}

public static ObjectReferenceType getObjectRef(PrismContainerValue<CaseWorkItemType> workItem) {
return getObjectRef(workItem.asContainerable());
}

public static ObjectReferenceType getTargetRef(CaseWorkItemType workItem) {
return CaseWorkItemUtil.getCaseRequired(workItem).getTargetRef();
return CaseTypeUtil.getCaseRequired(workItem).getTargetRef();
}

public static ObjectReferenceType getTargetRef(PrismContainerValue<CaseWorkItemType> workItem) {
return getTargetRef(workItem.asContainerable());
}

public static ObjectReferenceType getRequesterRef(CaseWorkItemType workItem) {
return CaseWorkItemUtil.getCaseRequired(workItem).getRequestorRef();
return CaseTypeUtil.getCaseRequired(workItem).getRequestorRef();
}

public static ObjectReferenceType getRequesterRef(PrismContainerValue<CaseWorkItemType> workItem) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@

package com.evolveum.midpoint.schema.util.cases;

import com.evolveum.midpoint.prism.PrismContext;
import org.apache.commons.lang.BooleanUtils;

import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractWorkItemOutputType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ApprovalLevelOutcomeType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.WorkItemOutcomeType;
import org.apache.commons.lang.BooleanUtils;

/**
* Utility methods related to approval cases.
Expand Down Expand Up @@ -51,9 +51,12 @@ private static Boolean approvalBooleanValue(WorkItemOutcomeType outcome) {
return null;
}
switch (outcome) {
case APPROVE: return true;
case REJECT: return false;
default: throw new IllegalArgumentException("outcome: " + outcome);
case APPROVE:
return true;
case REJECT:
return false;
default:
throw new IllegalArgumentException("outcome: " + outcome);
}
}

Expand All @@ -74,9 +77,12 @@ public static String toUri(WorkItemOutcomeType workItemOutcomeType) {
return null;
}
switch (workItemOutcomeType) {
case APPROVE: return SchemaConstants.MODEL_APPROVAL_OUTCOME_APPROVE;
case REJECT: return SchemaConstants.MODEL_APPROVAL_OUTCOME_REJECT;
default: throw new AssertionError("Unexpected outcome: " + workItemOutcomeType);
case APPROVE:
return SchemaConstants.MODEL_APPROVAL_OUTCOME_APPROVE;
case REJECT:
return SchemaConstants.MODEL_APPROVAL_OUTCOME_REJECT;
default:
throw new AssertionError("Unexpected outcome: " + workItemOutcomeType);
}
}

Expand All @@ -85,10 +91,14 @@ public static String toUri(ApprovalLevelOutcomeType outcome) {
return null;
}
switch (outcome) {
case APPROVE: return SchemaConstants.MODEL_APPROVAL_OUTCOME_APPROVE;
case REJECT: return SchemaConstants.MODEL_APPROVAL_OUTCOME_REJECT;
case SKIP: return SchemaConstants.MODEL_APPROVAL_OUTCOME_SKIP;
default: throw new AssertionError("Unexpected outcome: " + outcome);
case APPROVE:
return SchemaConstants.MODEL_APPROVAL_OUTCOME_APPROVE;
case REJECT:
return SchemaConstants.MODEL_APPROVAL_OUTCOME_REJECT;
case SKIP:
return SchemaConstants.MODEL_APPROVAL_OUTCOME_SKIP;
default:
throw new AssertionError("Unexpected outcome: " + outcome);
}
}

Expand Down Expand Up @@ -161,12 +171,6 @@ public static boolean isApprovedFromUri(String uri) {
return isApproved(fromUri(uri));
}

@Deprecated
public static AbstractWorkItemOutputType createApproveOutput(PrismContext prismContext) {
return new AbstractWorkItemOutputType(prismContext)
.outcome(SchemaConstants.MODEL_APPROVAL_OUTCOME_APPROVE);
}

public static AbstractWorkItemOutputType createApproveOutput() {
return new AbstractWorkItemOutputType()
.outcome(SchemaConstants.MODEL_APPROVAL_OUTCOME_APPROVE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,33 +4,30 @@
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/

package com.evolveum.midpoint.schema.util.cases;

import java.util.ArrayList;
import java.util.List;
import javax.xml.datatype.XMLGregorianCalendar;

import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import com.evolveum.midpoint.prism.PrismContainer;
import com.evolveum.midpoint.prism.PrismContainerable;
import com.evolveum.midpoint.prism.PrismObjectValue;
import com.evolveum.midpoint.prism.PrismValue;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;

import org.jetbrains.annotations.Nullable;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

/**
*
* Companion light-weight utilities for {@link CaseType} and {@link CaseWorkItemType}.
*/
public class CaseTypeUtil {

@NotNull
public static CaseType getCaseChecked(CaseWorkItemType workItem) {
public static CaseType getCaseRequired(CaseWorkItemType workItem) {
CaseType aCase = getCase(workItem);
if (aCase == null) {
throw new IllegalStateException("No case for work item " + workItem);
Expand All @@ -43,7 +40,7 @@ public static CaseType getCase(CaseWorkItemType workItem) {
return null;
}

@SuppressWarnings({"unchecked", "raw"})
@SuppressWarnings({ "unchecked", "raw" })
PrismContainerable<CaseWorkItemType> parent = workItem.asPrismContainerValue().getParent();
if (!(parent instanceof PrismContainer)) {
return null;
Expand All @@ -52,7 +49,7 @@ public static CaseType getCase(CaseWorkItemType workItem) {
if (!(parentParent instanceof PrismObjectValue)) {
return null;
}
@SuppressWarnings({"unchecked", "raw"})
@SuppressWarnings({ "unchecked", "raw" })
PrismObjectValue<CaseType> parentParentPov = (PrismObjectValue<CaseType>) parentParent;
return parentParentPov.asObjectable();
}
Expand Down Expand Up @@ -92,7 +89,7 @@ public static List<ObjectReferenceType> getAllCurrentAssignees(CaseType aCase) {
return rv;
}

public static boolean approvalSchemaExists(CaseType aCase){
public static boolean approvalSchemaExists(CaseType aCase) {
return aCase != null && aCase.getApprovalContext() != null && aCase.getApprovalContext().getApprovalSchema() != null
&& !aCase.getApprovalContext().getApprovalSchema().asPrismContainerValue().isEmpty();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,28 +12,17 @@

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.schema.util.WorkItemId;
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.ObjectReferenceType;

/**
* @author bpowers
* TODO: merge with CaseTypeUtil.
*/
public class CaseWorkItemUtil {

@NotNull
public static CaseType getCaseRequired(CaseWorkItemType workItem) {
CaseType rv = CaseTypeUtil.getCase(workItem);
if (rv != null) {
return rv;
} else {
throw new IllegalStateException("No parent case for " + workItem);
}
}

public static WorkItemId getId(CaseWorkItemType workItem) {
return WorkItemId.of(workItem);
}
Expand All @@ -56,7 +45,8 @@ public static boolean isCaseWorkItemClosed(CaseWorkItemType workItem) {
}

public static boolean isWorkItemClaimable(CaseWorkItemType workItem) {
return workItem != null && (workItem.getOriginalAssigneeRef() == null || StringUtils.isEmpty(workItem.getOriginalAssigneeRef().getOid()))
return workItem != null
&& (workItem.getOriginalAssigneeRef() == null || StringUtils.isEmpty(workItem.getOriginalAssigneeRef().getOid()))
&& !doesAssigneeExist(workItem) && CollectionUtils.isNotEmpty(workItem.getCandidateRef());
}

Expand Down

0 comments on commit bc7ed5d

Please sign in to comment.