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
katkav committed Mar 5, 2019
2 parents 8a6657f + a23ebb9 commit 704cd22
Show file tree
Hide file tree
Showing 62 changed files with 1,036 additions and 531 deletions.
Expand Up @@ -21,22 +21,26 @@
import com.evolveum.midpoint.prism.query.OrFilter;
import com.evolveum.midpoint.prism.query.RefFilter;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.web.component.data.column.ColumnUtils;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentHolderType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.ArrayUtils;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

/**
Expand Down Expand Up @@ -74,6 +78,17 @@ true, getPageBase()) {

private static final long serialVersionUID = 1L;

@Override
protected List<IColumn<SelectableBean<O>, String>> createColumns() {
if (AbstractRoleType.class.isAssignableFrom(getType())){
List<IColumn<SelectableBean<O>, String>> columns = new ArrayList<>();
columns.addAll((Collection)ColumnUtils.getDefaultAbstractRoleColumns(false));
return columns;
} else {
return super.createColumns();
}
}

@Override
protected void onUpdateCheckbox(AjaxRequestTarget target, IModel<SelectableBean<O>> rowModel) {
onSelectionPerformed(target, rowModel);
Expand Down
Expand Up @@ -92,7 +92,7 @@ protected ObjectDelta prepareDelta(){
}

protected List<ObjectTypes> getSupportedTypesList(){
List<ObjectTypes> supportedTypes = new ArrayList<>(Arrays.asList(ObjectTypes.values()));
List<ObjectTypes> supportedTypes = WebComponentUtil.createAssignmentHolderTypesList();
supportedTypes.remove(ObjectTypes.USER);
supportedTypes.remove(ObjectTypes.ROLE);
supportedTypes.remove(ObjectTypes.SERVICE);
Expand Down
Expand Up @@ -63,6 +63,7 @@
import com.evolveum.midpoint.schema.*;
import com.evolveum.midpoint.schema.util.LocalizationUtil;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.task.api.TaskBinding;
import com.evolveum.midpoint.util.*;
import com.evolveum.midpoint.util.exception.*;
import com.evolveum.midpoint.web.component.DateLabelComponent;
Expand All @@ -77,6 +78,7 @@
import com.evolveum.midpoint.web.page.admin.valuePolicy.PageValuePolicy;
import com.evolveum.midpoint.web.util.ObjectTypeGuiDescriptor;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.midpoint.xml.ns._public.model.scripting_3.ScriptingExpressionType;
import com.evolveum.prism.xml.ns._public.types_3.ObjectDeltaType;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
Expand Down Expand Up @@ -134,6 +136,7 @@
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.security.api.MidPointPrincipal;
import com.evolveum.midpoint.task.api.TaskCategory;
import com.evolveum.midpoint.task.api.TaskExecutionStatus;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
Expand Down Expand Up @@ -620,6 +623,40 @@ public static TaskType createSingleRecurrenceTask(String taskName, QName applica
}
return task;
}

public static void executeBulkAction(PageBase pageBase, ScriptingExpressionType script, Task task, OperationResult result )
throws SchemaException, SecurityViolationException, ObjectNotFoundException, ExpressionEvaluationException,
CommunicationException, ConfigurationException{

pageBase.getScriptingService().evaluateExpressionInBackground(script, task, result);
}

public static void executeMemberOperation(Task operationalTask, QName type, ObjectQuery memberQuery,
ScriptingExpressionType script, OperationResult parentResult, PageBase pageBase) throws SchemaException {

MidPointPrincipal owner = SecurityUtils.getPrincipalUser();
operationalTask.setOwner(owner.getUser().asPrismObject());

operationalTask.setBinding(TaskBinding.LOOSE);
operationalTask.setInitialExecutionStatus(TaskExecutionStatus.RUNNABLE);
operationalTask.setThreadStopAction(ThreadStopActionType.RESTART);
ScheduleType schedule = new ScheduleType();
schedule.setMisfireAction(MisfireActionType.EXECUTE_IMMEDIATELY);
operationalTask.makeSingle(schedule);
operationalTask.setName(WebComponentUtil.createPolyFromOrigString(parentResult.getOperation()));

try {
executeBulkAction(pageBase, script, operationalTask, parentResult);
parentResult.recordInProgress();
parentResult.setBackgroundTaskOid(operationalTask.getOid());
pageBase.showResult(parentResult);
} catch (ObjectNotFoundException | SchemaException
| ExpressionEvaluationException | CommunicationException | ConfigurationException
| SecurityViolationException e) {
parentResult.recordFatalError(pageBase.createStringResource("WebComponentUtil.message.startPerformed.fatalError.submit").getString(), e);
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't submit bulk action to execution", e);
}
}

public static void executeMemberOperation(Task operationalTask, QName type, ObjectQuery memberQuery,
ObjectDelta delta, String category, OperationResult parentResult, PageBase pageBase) throws SchemaException{
Expand Down Expand Up @@ -687,6 +724,42 @@ public static List<QName> createObjectTypeList() {

}

public static List<QName> createAssignmentHolderTypeQnamesList() {

List<ObjectTypes> objectTypes = createAssignmentHolderTypesList();
List<QName> types = new ArrayList<>();
objectTypes.forEach(objectType -> {
types.add(objectType.getTypeQName());
});

return types.stream().sorted((type1, type2) -> {
Validate.notNull(type1);
Validate.notNull(type2);

return String.CASE_INSENSITIVE_ORDER.compare(QNameUtil.qNameToUri(type1), QNameUtil.qNameToUri(type2));


}).collect(Collectors.toList());

}

public static List<ObjectTypes> createAssignmentHolderTypesList(){
List<ObjectTypes> objectTypes = new ArrayList<>();
for (ObjectTypes t : ObjectTypes.values()) {
if (AssignmentHolderType.class.isAssignableFrom(t.getClassDefinition())) {
objectTypes.add(t);
}
}
return objectTypes.stream().sorted((type1, type2) -> {
Validate.notNull(type1);
Validate.notNull(type2);

return String.CASE_INSENSITIVE_ORDER.compare(QNameUtil.qNameToUri(type1.getTypeQName()), QNameUtil.qNameToUri(type2.getTypeQName()));


}).collect(Collectors.toList());
}

// TODO: move to schema component
public static List<QName> createFocusTypeList() {
return createFocusTypeList(false);
Expand Down

This file was deleted.

0 comments on commit 704cd22

Please sign in to comment.