Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Mar 6, 2019
2 parents f42a0c7 + 2edf29e commit 9613b94
Show file tree
Hide file tree
Showing 27 changed files with 254 additions and 532 deletions.
Expand Up @@ -53,7 +53,6 @@ protected void onInitialize() {
}

private void initLayout(){

DropDownFormGroup<QName> type = new DropDownFormGroup<QName>(ID_OBJECT_TYPE, Model.of(getDefaultObjectType()), Model.ofList(getSupportedObjectTypes()),
new QNameObjectTypeChoiceRenderer(), createStringResource("chooseFocusTypeAndRelationDialogPanel.type"),
"chooseFocusTypeAndRelationDialogPanel.tooltip.type", true, "col-md-4", "col-md-8", false);
Expand Down Expand Up @@ -116,14 +115,12 @@ protected List<QName> getSupportedObjectTypes() {
return WebComponentUtil.createFocusTypeList(true);
}

private QName getDefaultObjectType() {
protected QName getDefaultObjectType() {
List<QName> supportedObjectTypes = getSupportedObjectTypes();
if (CollectionUtils.isEmpty(supportedObjectTypes)) {
return FocusType.COMPLEX_TYPE;
}

return supportedObjectTypes.iterator().next();

}

protected List<QName> getSupportedRelations() {
Expand Down
Expand Up @@ -19,6 +19,7 @@
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.model.api.ModelExecuteOptions;
import com.evolveum.midpoint.model.api.context.AssignmentPath;
import com.evolveum.midpoint.model.api.context.EvaluatedAssignment;
import com.evolveum.midpoint.model.api.context.EvaluatedAssignmentTarget;
import com.evolveum.midpoint.model.api.context.EvaluatedConstruction;
Expand Down Expand Up @@ -848,16 +849,13 @@ public List<AssignmentInfoDto> showAllAssignmentsPerformed(AjaxRequestTarget aja
private AssignmentInfoDto createAssignmentsPreviewDto(EvaluatedAssignmentTarget evaluatedAbstractRole,
Task task, OperationResult result) {
return createAssignmentsPreviewDto(evaluatedAbstractRole.getTarget(), evaluatedAbstractRole.isDirectlyAssigned(),
evaluatedAbstractRole.getAssignment(), task, result);
evaluatedAbstractRole.getAssignmentPath(), evaluatedAbstractRole.getAssignment(), task, result);
}

protected AssignmentInfoDto createAssignmentsPreviewDto(ObjectReferenceType reference,
Task task, OperationResult result) {
protected AssignmentInfoDto createAssignmentsPreviewDto(ObjectReferenceType reference, Task task, OperationResult result) {
PrismObject<? extends FocusType> targetObject = WebModelServiceUtils.resolveReferenceNoFetch(reference,
PageAdminFocus.this, task, result);

return createAssignmentsPreviewDto(targetObject, true,
null, task, result);
return createAssignmentsPreviewDto(targetObject, true, null, null, task, result);
}

protected AssignmentInfoDto createDelegableAssignmentsPreviewDto(AssignmentType assignment, Task task, OperationResult result) {
Expand All @@ -872,15 +870,15 @@ protected AssignmentInfoDto createDelegableAssignmentsPreviewDto(AssignmentType
isDelegable = targetObject.asObjectable().isDelegable();
}
if (Boolean.TRUE.equals(isDelegable)) {
return createAssignmentsPreviewDto(targetObject, true, assignment, task, result);
return createAssignmentsPreviewDto(targetObject, true, null, assignment, task, result);
}
}
}
return null;
}

private AssignmentInfoDto createAssignmentsPreviewDto(PrismObject<? extends AssignmentHolderType> targetObject,
boolean isDirectlyAssigned, AssignmentType assignment,
boolean isDirectlyAssigned, AssignmentPath assignmentPath, AssignmentType assignment,
Task task, OperationResult result) {
AssignmentInfoDto dto = new AssignmentInfoDto();
dto.setTargetOid(targetObject.getOid());
Expand All @@ -889,6 +887,7 @@ private AssignmentInfoDto createAssignmentsPreviewDto(PrismObject<? extends Assi
dto.setTargetClass(targetObject.getCompileTimeClass());
dto.setTargetType(WebComponentUtil.classToQName(getPrismContext(), targetObject.getCompileTimeClass()));
dto.setDirect(isDirectlyAssigned);
dto.setAssignmentParent(assignmentPath);
if (assignment != null) {
if (assignment.getTenantRef() != null) {
dto.setTenantName(nameFromReference(assignment.getTenantRef(),
Expand Down Expand Up @@ -949,6 +948,7 @@ private AssignmentInfoDto createAssignmentsPreviewDto(EvaluatedConstruction eval
dto.setTargetDescription(resource.asObjectable().getDescription());
dto.setTargetClass(resource.getCompileTimeClass());
dto.setDirect(evaluatedConstruction.isDirectlyAssigned());
dto.setAssignmentParent(evaluatedConstruction.getAssignmentPath());
dto.setKind(evaluatedConstruction.getKind());
dto.setIntent(evaluatedConstruction.getIntent());
return dto;
Expand Down
Expand Up @@ -20,21 +20,19 @@

import javax.xml.namespace.QName;

import com.evolveum.midpoint.schema.GetOperationOptionsBuilder;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.model.IModel;

import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.model.api.ModelExecuteOptions;
import com.evolveum.midpoint.prism.ItemDefinition;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismPropertyDefinition;
import com.evolveum.midpoint.prism.PrismReferenceDefinition;
import com.evolveum.midpoint.prism.path.ItemName;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.GetOperationOptionsBuilder;
import com.evolveum.midpoint.schema.constants.MidPointConstants;
import com.evolveum.midpoint.schema.processor.ResourceAttributeDefinition;
import com.evolveum.midpoint.schema.processor.ResourceAttributeDefinitionImpl;
import com.evolveum.midpoint.schema.util.ResourceTypeUtil;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.web.component.search.Search;
Expand Down Expand Up @@ -96,18 +94,21 @@ private <T extends ObjectType> List<SearchItemDefinition> createAttributeDefinit
return map;
}

ItemPath attributePath = ShadowType.F_ATTRIBUTES;

for (ResourceAttributeDefinition def : ocDef.getAttributeDefinitions()) {
if (!(def instanceof PrismPropertyDefinition) && !(def instanceof PrismReferenceDefinition)) {
continue;
}

map.add(new SearchItemDefinition(ItemPath.create(attributePath, def.getName()), def, null));
map.add(new SearchItemDefinition(ItemPath.create(ShadowType.F_ATTRIBUTES, getAttributeName(def)), def, null));
}

return map;
}

private ItemName getAttributeName(ResourceAttributeDefinition def) {
if (def.getNativeAttributeName() != null) {
return ItemName.fromQName(new QName(MidPointConstants.NS_RI, def.getNativeAttributeName()));
}

return def.getName();

}

@Override
protected ModelExecuteOptions createModelOptions() {
Expand Down
Expand Up @@ -26,17 +26,14 @@

import com.evolveum.midpoint.model.api.AssignmentCandidatesSpecification;
import com.evolveum.midpoint.model.api.AssignmentObjectRelation;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.query.QueryFactory;
import com.evolveum.midpoint.prism.query.builder.S_FilterEntryOrEmpty;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.util.exception.ConfigurationException;
import com.evolveum.midpoint.web.component.AjaxIconButton;
import com.evolveum.midpoint.web.component.MultifunctionalButton;
import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.web.page.admin.PageAdminObjectList;
import com.evolveum.midpoint.web.page.admin.configuration.component.HeaderMenuAction;
import com.evolveum.midpoint.web.session.MemberPanelStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
Expand Down Expand Up @@ -92,8 +89,6 @@
import com.evolveum.midpoint.web.security.GuiAuthorizationConstants;
import com.evolveum.midpoint.web.session.UserProfileStorage.TableId;

import static com.evolveum.midpoint.gui.api.util.WebComponentUtil.isAuthorized;

public abstract class AbstractRoleMemberPanel<R extends AbstractRoleType> extends BasePanel<R> {

private static final long serialVersionUID = 1L;
Expand Down Expand Up @@ -504,7 +499,12 @@ protected boolean isFocusTypeSelectorVisible() {

protected void okPerformed(QName type, Collection<QName> relations, AjaxRequestTarget target) {
unassignMembersPerformed(type, scope, relations, target);

}

@Override
protected QName getDefaultObjectType() {
return WebComponentUtil.classToQName(AbstractRoleMemberPanel.this.getPrismContext(),
AbstractRoleMemberPanel.this.getDefaultObjectType());
}
};

Expand Down Expand Up @@ -536,6 +536,12 @@ protected void okPerformed(QName type, Collection<QName> relations, AjaxRequestT
protected boolean isFocusTypeSelectorVisible() {
return !QueryScope.SELECTED.equals(scope);
}

@Override
protected QName getDefaultObjectType() {
return WebComponentUtil.classToQName(AbstractRoleMemberPanel.this.getPrismContext(),
AbstractRoleMemberPanel.this.getDefaultObjectType());
}

};

Expand Down
Expand Up @@ -74,9 +74,9 @@ public static void recomputeMembersPerformed(PageBase modelServiceLocator, Query

}

public static <R extends AbstractRoleType> void unassignOtherOrgMembersPerformed(PageBase pageBase, R targetObject, QueryScope scope, ObjectQuery query, Collection<QName> relations, AjaxRequestTarget target) {
unassignMembersPerformed(pageBase, targetObject, scope, query, relations, ObjectType.COMPLEX_TYPE, target);
}
// public static <R extends AbstractRoleType> void unassignOtherOrgMembersPerformed(PageBase pageBase, R targetObject, QueryScope scope, ObjectQuery query, Collection<QName> relations, AjaxRequestTarget target) {
// unassignMembersPerformed(pageBase, targetObject, scope, query, relations, ObjectType.COMPLEX_TYPE, target);
// }

public static <R extends AbstractRoleType> void unassignMembersPerformed(PageBase pageBase, R targetObject, QueryScope scope, ObjectQuery query, Collection<QName> relations, QName type, AjaxRequestTarget target) {
Task operationalTask = pageBase.createSimpleTask(getTaskName("Remove", scope));
Expand All @@ -92,22 +92,25 @@ public static <R extends AbstractRoleType> void unassignMembersPerformed(PageBas
PrismValue value = pageBase.getPrismContext().itemFactory().createValue(targetObject.getOid());
try {
value.applyDefinition(def);
} catch (SchemaException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SchemaException e) {
LoggingUtils.logUnexpectedException(LOGGER, "Can not aply definition " + def, e);
operationalTask.getResult().recordFatalError("Can not aply definition " + def, e);
}
expression.parameter(new ActionParameterValueType().name(ROLE_PARAMETER).value(
new RawType(value, DOMUtil.XSD_STRING, pageBase.getPrismContext())));
relations.forEach(relation -> {
expression.parameter(new ActionParameterValueType().name(RELATION_PARAMETER).value(QNameUtil.qNameToUri(relation)));
});
if(relations != null) {
relations.forEach(relation -> {
expression.parameter(new ActionParameterValueType().name(RELATION_PARAMETER).value(QNameUtil.qNameToUri(relation)));
});
}
script.setScriptingExpression(new JAXBElement<ActionExpressionType>(SchemaConstants.S_ACTION,
ActionExpressionType.class, expression));

try {
script.setQuery(pageBase.getQueryConverter().createQueryType(query));
} catch (SchemaException e) {
e.printStackTrace(); //TODO
LoggingUtils.logUnexpectedException(LOGGER, "Can not create ObjectQuery from " + query, e);
operationalTask.getResult().recordFatalError("Can not create ObjectQuery from " + query, e);
}

executeMemberOperation(pageBase, operationalTask, type, query, script, target);
Expand Down Expand Up @@ -386,7 +389,6 @@ protected static void executeMemberOperation(PageBase modelServiceLocator, Task
ScriptingExpressionType script, AjaxRequestTarget target) {

OperationResult parentResult = operationalTask.getResult();

try {
WebComponentUtil.executeMemberOperation(operationalTask, type, memberQuery, script, parentResult, modelServiceLocator);
} catch (SchemaException e) {
Expand Down
Expand Up @@ -18,6 +18,7 @@

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.model.api.context.AssignmentPath;
import com.evolveum.midpoint.web.component.util.Selectable;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.wicket.Component;
Expand Down Expand Up @@ -54,6 +55,7 @@ public class AssignmentInfoDto extends Selectable<AssignmentInfoDto> implements
private String targetDescription;
private Class<? extends ObjectType> targetClass;
private boolean direct; // true if directly assigned; used only in some contexts
private ObjectType assignmentParent;
private QName targetType;
// for resource assignments
private ShadowKindType kind;
Expand Down Expand Up @@ -107,6 +109,16 @@ public void setDirect(boolean direct) {
this.direct = direct;
}

public void setAssignmentParent(AssignmentPath assignmentPath) {
if (assignmentPath.size() > 1 ) {
assignmentParent = assignmentPath.last().getSource();
}
}

public ObjectType getAssignmentParent() {
return assignmentParent;
}

public ShadowKindType getKind() {
return kind;
}
Expand Down
Expand Up @@ -33,6 +33,7 @@
import com.evolveum.midpoint.web.page.admin.users.PageOrgUnit;
import com.evolveum.midpoint.web.util.ObjectTypeGuiDescriptor;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType;
Expand All @@ -54,6 +55,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.wicket.AttributeModifier;

/**
* Abstract superclass for dialogs that display a list of assignments.
Expand Down Expand Up @@ -155,6 +157,10 @@ public String getObject() {
createStringResource("AssignmentPreviewDialog.type.indirect").getString();
}
}));
ObjectType assignmentParent = rowModel.getObject().getAssignmentParent();
if (assignmentParent != null) {
cellItem.add(AttributeModifier.replace("title", createStringResource("AssignmentPreviewDialog.tooltip.indirect.parent").getString() + ": " + assignmentParent.getName()));
}
}
});
}
Expand Down
Expand Up @@ -102,13 +102,13 @@ protected <O extends ObjectType> void assignMembers(AjaxRequestTarget target, Li
MemberOperationsHelper.assignOrgMembers(getPageBase(), getModelObject(), target, availableRelationList);
}

@Override
protected void unassignMembersPerformed(QName objectType, QueryScope scope, Collection<QName> relations, AjaxRequestTarget target) {
super.unassignMembersPerformed(objectType, scope, relations, target);
if (relations != null && relations.size() > 0) {
MemberOperationsHelper.unassignOtherOrgMembersPerformed(getPageBase(), getModelObject(), scope, getActionQuery(scope, relations), relations, target);
}
}
// @Override
// protected void unassignMembersPerformed(QName objectType, QueryScope scope, Collection<QName> relations, AjaxRequestTarget target) {
// super.unassignMembersPerformed(objectType, scope, relations, target);
//// if (relations != null && relations.size() > 0) {
//// MemberOperationsHelper.unassignOtherOrgMembersPerformed(getPageBase(), getModelObject(), scope, getActionQuery(scope, relations), relations, target);
//// }
// }

@Override
protected List<QName> getSupportedObjectTypes(boolean includeAbstractTypes) {
Expand Down
Expand Up @@ -110,6 +110,7 @@ AssignmentPreviewDialog.label=View direct & indirect assignments
AssignmentPreviewDialog.delegationPreviewLabel=Limit privileges
AssignmentPreviewDialog.type.direct=Direct
AssignmentPreviewDialog.type.indirect=Indirect
AssignmentPreviewDialog.tooltip.indirect.parent=Parent
AssignmentTablePanel.menu.assign=Assign
AssignmentTablePanel.menu.assignOrg=Assign Org.
AssignmentTablePanel.menu.assignOrg.noorgs=No organization structure defined.
Expand Down
Expand Up @@ -110,6 +110,7 @@ AssignmentPreviewDialog.label=Zobrazit přímá i nepřímá přiřazení
AssignmentPreviewDialog.delegationPreviewLabel=Omezit výsady
AssignmentPreviewDialog.type.direct=Přímé
AssignmentPreviewDialog.type.indirect=Nepřímé
AssignmentPreviewDialog.tooltip.indirect.parent=Předchůdce
AssignmentTablePanel.menu.assign=Přidat přiřazení
AssignmentTablePanel.menu.assignOrg=Přiřadit organizaci
AssignmentTablePanel.menu.assignOrg.noorgs=Organizační struktura není definovaná.
Expand Down
Expand Up @@ -110,6 +110,7 @@ AssignmentPreviewDialog.label=View direct & indirect assignments
AssignmentPreviewDialog.delegationPreviewLabel=Limit privileges
AssignmentPreviewDialog.type.direct=Direct
AssignmentPreviewDialog.type.indirect=Indirect
AssignmentPreviewDialog.tooltip.indirect.parent=Parent
AssignmentTablePanel.menu.assign=Assign
AssignmentTablePanel.menu.assignOrg=Assign Org.
AssignmentTablePanel.menu.assignOrg.noorgs=No organization structure defined.
Expand Down
Expand Up @@ -33,6 +33,8 @@ public interface EvaluatedConstruction extends DebugDumpable {
String getIntent();

boolean isDirectlyAssigned();


AssignmentPath getAssignmentPath();

boolean isWeak();
}

0 comments on commit 9613b94

Please sign in to comment.