Skip to content

Commit

Permalink
Merge branch 'master' into feature/ldap-polystring
Browse files Browse the repository at this point in the history
  • Loading branch information
semancik committed Apr 2, 2019
2 parents 473665c + 430be50 commit ea5fb67
Show file tree
Hide file tree
Showing 16 changed files with 591 additions and 391 deletions.
Expand Up @@ -17,13 +17,20 @@

import com.evolveum.midpoint.gui.api.component.tabs.CountablePanelTab;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.PrismPropertyDefinition;
import com.evolveum.midpoint.prism.PrismReferenceValue;
import com.evolveum.midpoint.prism.PrismValue;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.task.api.TaskCategory;
import com.evolveum.midpoint.util.DOMUtil;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
Expand All @@ -34,7 +41,13 @@
import com.evolveum.midpoint.web.component.util.EnableBehaviour;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.roles.MemberOperationsHelper;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.midpoint.xml.ns._public.model.scripting_3.ActionExpressionType;
import com.evolveum.midpoint.xml.ns._public.model.scripting_3.ActionParameterValueType;
import com.evolveum.midpoint.xml.ns._public.model.scripting_3.SearchExpressionType;
import com.evolveum.prism.xml.ns._public.types_3.RawType;

import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
Expand All @@ -44,6 +57,7 @@
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.StringResourceModel;

import javax.xml.bind.JAXBElement;
import javax.xml.namespace.QName;
import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -118,9 +132,9 @@ public void onClick(AjaxRequestTarget target) {
if (selectedObjects == null || selectedObjects.size() == 0){
continue;
}
executeMemberOperation(memberPanel.getObjectType().getTypeQName(),
createInOidQuery(selectedObjects),
memberPanel.prepareDelta(), target);
executeMemberOperation(memberPanel.getAbstractRoleTypeObject(), getDefaultTargetType(),
createInOidQuery(selectedObjects), memberPanel.getRelationValue(),
memberPanel.getObjectType().getTypeQName(), target, getPageBase());
if (memberPanel.getObjectType().equals(ObjectTypes.ORG)){
orgPanelProcessed = true;
}
Expand Down Expand Up @@ -376,24 +390,12 @@ private boolean isAddButtonEnabled(){
return false;
}

protected void executeMemberOperation(QName type, ObjectQuery memberQuery,
ObjectDelta delta, AjaxRequestTarget target) {

Task operationalTask = getPageBase().createSimpleTask("Add.members");
OperationResult parentResult = operationalTask.getResult();

try {
WebComponentUtil.executeMemberOperation(operationalTask, type, memberQuery, delta, TaskCategory.EXECUTE_CHANGES, parentResult, getPageBase());
} catch (SchemaException e) {
parentResult.recordFatalError(parentResult.getOperation(), e);
LoggingUtils.logUnexpectedException(LOGGER,
"Failed to execute operation " + parentResult.getOperation(), e);
target.add(getPageBase().getFeedbackPanel());
}

target.add(getPageBase().getFeedbackPanel());
protected void executeMemberOperation(AbstractRoleType targetObject, QName targetType, ObjectQuery query,
QName relation, QName type, AjaxRequestTarget target, PageBase pageBase) {
MemberOperationsHelper.assignMembersPerformed(targetObject, targetType, query,
relation, type, target, pageBase);
}

protected abstract T getAssignmentTargetRefObject();

public int getWidth(){
Expand Down Expand Up @@ -421,4 +423,8 @@ public StringResourceModel getTitle(){
public Component getComponent(){
return this;
}

protected QName getDefaultTargetType() {
return RoleType.COMPLEX_TYPE;
}
}
Expand Up @@ -72,5 +72,10 @@ public String getCount() {
});
return tabs;
}

@Override
protected QName getDefaultTargetType() {
return OrgType.COMPLEX_TYPE;
}

}
Expand Up @@ -658,17 +658,6 @@ public static void executeMemberOperation(Task operationalTask, QName type, Obje
}
}

public static void executeMemberOperation(Task operationalTask, QName type, ObjectQuery memberQuery,
ObjectDelta delta, String category, OperationResult parentResult, PageBase pageBase) throws SchemaException{
ModelExecuteOptions options = TaskCategory.EXECUTE_CHANGES.equals(category)
? ModelExecuteOptions.createReconcile() // This was originally in ExecuteChangesTaskHandler, now it's transferred through task extension.
: null;
TaskType task = WebComponentUtil.createSingleRecurrenceTask(parentResult.getOperation(), type,
memberQuery, delta, options, category, pageBase);
WebModelServiceUtils.runTask(task, operationalTask, parentResult, pageBase);

}

public static boolean isAuthorized(String... action) {
if (action == null || action.length == 0) {
return true;
Expand Down
Expand Up @@ -18,10 +18,12 @@
import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.model.ReadOnlyModel;
import com.evolveum.midpoint.gui.api.util.ModelServiceLocator;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.repo.common.expression.ExpressionVariables;
import com.evolveum.midpoint.schema.constants.ExpressionConstants;
import com.evolveum.midpoint.schema.constants.RelationTypes;
import com.evolveum.midpoint.schema.util.FocusTypeUtil;
import com.evolveum.midpoint.web.component.prism.ObjectWrapper;
import com.evolveum.midpoint.web.component.util.SummaryTag;
Expand Down Expand Up @@ -52,7 +54,8 @@
public abstract class FocusSummaryPanel<O extends ObjectType> extends ObjectSummaryPanel<O> {
private static final long serialVersionUID = 1L;

private static final String ID_ACTIVATION_TAG = "activationTag";
private static final String DOT_CLASS = FocusSummaryPanel.class.getName() + ".";
private static final String OPERATION_LOAD_PARENT_ORGS = DOT_CLASS + "activationTag";

public FocusSummaryPanel(String id, Class<O> type, final IModel<O> model, ModelServiceLocator serviceLocator) {
super(id, type, model, serviceLocator);
Expand Down Expand Up @@ -108,19 +111,30 @@ public boolean isVisible() {
protected IModel<String> getDefaltParentOrgModel() {
return new ReadOnlyModel<String>(() -> {
O focusObject = FocusSummaryPanel.this.getModel().getObject();
List<OrgType> parentOrgs = focusObject != null ? focusObject.getParentOrg() : null;
List<OrgType> parentOrgs = focusObject != null ? WebComponentUtil.loadReferencedObjectList(focusObject.getParentOrgRef(),
OPERATION_LOAD_PARENT_ORGS, FocusSummaryPanel.this.getPageBase()) : null;
if (parentOrgs == null || parentOrgs.isEmpty()) {
return "";
}
// Kinda hack now .. "functional" orgType always has preference
// this whole thing should be driven by an expression later on
for (OrgType orgType : parentOrgs) {
if (FocusTypeUtil.determineSubTypes(orgType).contains("functional")) {
return PolyString.getOrig(orgType.getDisplayName());
return WebComponentUtil.getDisplayNameOrName(orgType.asPrismObject());
}
}
//search for manager org at first
for (ObjectReferenceType orgRef : focusObject.getParentOrgRef()) {
if (orgRef.getRelation() != null && RelationTypes.MANAGER.equals(orgRef.getRelation())) {
for (OrgType orgType : parentOrgs){
if (orgType.getOid().equals(orgRef.getOid())){
return WebComponentUtil.getDisplayNameOrName(orgType.asPrismObject());
}
}
}
}
// Just use the first one as a fallback
return PolyString.getOrig(parentOrgs.iterator().next().getDisplayName());
return WebComponentUtil.getDisplayNameOrName(parentOrgs.iterator().next().asPrismObject());
});
}

Expand Down
Expand Up @@ -792,8 +792,7 @@ private CheckFormGroup getIndirectmembersPanel() {
}

protected void recomputeMembersPerformed(AjaxRequestTarget target) {
MemberOperationsHelper.recomputeMembersPerformed(getPageBase(), getQueryScope(true), getActionQuery(getQueryScope(true), getSupportedRelations()), getSupportedRelations(), target);

MemberOperationsHelper.recomputeMembersPerformed(getPageBase(), getQueryScope(true), getActionQuery(getQueryScope(true), getSupportedRelations()), target);
}

protected ObjectQuery createContentQuery() {
Expand Down

0 comments on commit ea5fb67

Please sign in to comment.