Skip to content

Commit

Permalink
Merge remote-tracking branch 'refs/remotes/origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Mar 18, 2022
2 parents 0d3a581 + 6567932 commit 99065fd
Show file tree
Hide file tree
Showing 175 changed files with 2,990 additions and 1,755 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,13 @@ public String getString(Enum<?> e) {
}

public StringResourceModel createStringResource(String resourceKey, IModel<?> model, Object... objects) {
return new StringResourceModel(resourceKey, this).setModel(model)
return new StringResourceModel(resourceKey).setModel(model)
.setDefaultValue(resourceKey)
.setParameters(objects);
}

public StringResourceModel createStringResource(String resourceKey, Object... objects) {
return new StringResourceModel(resourceKey, this).setModel(null)
return new StringResourceModel(resourceKey).setModel(null)
.setDefaultValue(resourceKey)
.setParameters(objects);
}
Expand All @@ -84,7 +84,7 @@ public StringResourceModel createStringResource(PolyString polystringKey, Object
// TODO later: use polystringKey.getKey()
resourceKey = polystringKey.getOrig();
}
return new StringResourceModel(resourceKey, this).setModel(null)
return new StringResourceModel(resourceKey).setModel(null)
.setDefaultValue(resourceKey)
.setParameters(objects);
}
Expand All @@ -95,7 +95,7 @@ public StringResourceModel createStringResource(PolyStringType polystringKey, Ob
// TODO later: use polystringKey.getKey()
resourceKey = polystringKey.getOrig();
}
return new StringResourceModel(resourceKey, this).setModel(null)
return new StringResourceModel(resourceKey).setModel(null)
.setDefaultValue(resourceKey)
.setParameters(objects);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

import com.evolveum.midpoint.gui.api.util.GuiDisplayTypeUtil;
import com.evolveum.midpoint.gui.impl.util.ObjectCollectionViewUtil;
import com.evolveum.midpoint.gui.impl.util.TableUtil;
import com.evolveum.midpoint.model.api.ModelExecuteOptions;
import com.evolveum.midpoint.model.common.util.DefaultColumnUtils;

Expand Down Expand Up @@ -473,21 +474,21 @@ protected List<CompiledObjectCollectionView> getNewObjectInfluencesList() {
return getAllApplicableArchetypeViews();
}

private void deleteConfirmedPerformed(AjaxRequestTarget target, O objectToDelete) {
List<O> objects = isAnythingSelected(target, objectToDelete);
private void deleteConfirmedPerformed(AjaxRequestTarget target, IModel<SelectableBean<O>> objectToDelete) {
List<SelectableBean<O>> objects = isAnythingSelected(target, objectToDelete);

if (objects.isEmpty()) {
return;
}

OperationResult result = new OperationResult(objects.size() == 1 ? OPERATION_DELETE_OBJECT: OPERATION_DELETE_OBJECTS);
for (O object : objects) {
for (SelectableBean<O> object : objects) {
OperationResult subResult = result.createSubresult(OPERATION_DELETE_OBJECT);
try {
Task task = getPageBase().createSimpleTask(OPERATION_DELETE_OBJECT);

ObjectDelta delta = getPrismContext().deltaFactory().object().create(object.getClass(), ChangeType.DELETE);
delta.setOid(object.getOid());
ObjectDelta delta = getPrismContext().deltaFactory().object().create(object.getValue().getClass(), ChangeType.DELETE);
delta.setOid(object.getValue().getOid());

ExecuteChangeOptionsDto executeOptions = getExecuteOptions();
ModelExecuteOptions options = executeOptions.createOptions(getPrismContext());
Expand Down Expand Up @@ -517,21 +518,35 @@ public ExecuteChangeOptionsDto getExecuteOptions() {
/**
* This method check selection in table. If selectedObject != null than it
* returns only this object.
* @return
*/
public List<O> isAnythingSelected(AjaxRequestTarget target, O selectedObject) {
List<O> users;
public List<SelectableBean<O>> isAnythingSelected(AjaxRequestTarget target, IModel<SelectableBean<O>> selectedObject) {
List<SelectableBean<O>> selectedObjects;
if (selectedObject != null) {
users = new ArrayList<>();
users.add(selectedObject);
selectedObjects = new ArrayList<>();
selectedObjects.add(selectedObject.getObject());
} else {
users = getSelectedRealObjects();
if (users.isEmpty() && StringUtils.isNotEmpty(getNothingSelectedMessage())) {
warn(getNothingSelectedMessage());
target.add(getFeedbackPanel());
}
selectedObjects = TableUtil.getSelectedModels(getTable().getDataTable());
// if (users.isEmpty() && StringUtils.isNotEmpty(getNothingSelectedMessage())) {
// warn(getNothingSelectedMessage());
// target.add(getFeedbackPanel());
// }
}

return users;
return selectedObjects;
// List<SelectableObjectModel<UserType>> users;
// if (selectedObject != null) {
// users = new ArrayList<>();
// users.add(selectedObject);
// } else {
// users = (List<SelectableObjectModel<UserType>>) TableUtil.getSelectedModels(getTable().getDataTable());
// if (users.isEmpty() && StringUtils.isNotEmpty(getNothingSelectedMessage())) {
// warn(getNothingSelectedMessage());
// target.add(getFeedbackPanel());
// }
// }
//
// return users;
// return new ArrayList<>();
}

protected String getNothingSelectedMessage() {
Expand Down Expand Up @@ -565,12 +580,7 @@ public InlineMenuItemAction initAction() {
return new ColumnMenuAction<SelectableBean<O>>() {
@Override
public void onClick(AjaxRequestTarget target) {
if (getRowModel() == null) {
deleteConfirmedPerformed(target, null);
} else {
SelectableBean<O> rowDto = getRowModel().getObject();
deleteConfirmedPerformed(target, rowDto.getValue());
}
deleteConfirmedPerformed(target, getRowModel());
}
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

import java.util.*;
import java.util.function.Supplier;
import java.util.stream.Collectors;

import com.evolveum.midpoint.gui.impl.component.ContainerableListPanel;
import com.evolveum.midpoint.web.component.search.*;
Expand Down Expand Up @@ -188,4 +189,9 @@ protected O getRowRealValue(SelectableBean<O> rowModelObject) {
protected IColumn<SelectableBean<O>, String> createIconColumn() {
return ColumnUtils.createIconColumn(getPageBase());
}

@Override
public List<O> getSelectedRealObjects() {
return getSelectedObjects().stream().map(o -> o.getValue()).collect(Collectors.toList());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -552,6 +552,6 @@ protected List<ObjectTypes> getObjectTypesList() {

@Override
public StringResourceModel getTitle() {
return PageBase.createStringResourceStatic(TypedAssignablePanel.this, "TypedAssignablePanel.selectObjects");
return PageBase.createStringResourceStatic("TypedAssignablePanel.selectObjects");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
/*
* Copyright (c) 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.gui.api.component.autocomplete;

import java.util.Iterator;
import java.util.List;

import org.apache.wicket.model.IModel;

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.prism.wrapper.PrismPropertyValueWrapper;
import com.evolveum.midpoint.prism.PrismContainer;
import com.evolveum.midpoint.prism.PrismContainerValue;
import com.evolveum.midpoint.prism.PrismContainerable;
import com.evolveum.midpoint.prism.PrismProperty;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AppenderConfigurationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.LoggingConfigurationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.LookupTableRowType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.LookupTableType;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;

public class AppenderAutocompletePanel extends AutoCompleteTextPanel<String> {

private final IModel<PrismPropertyValueWrapper<String>> valueWrapperModel;

public AppenderAutocompletePanel(String id, IModel<String> model, IModel<PrismPropertyValueWrapper<String>> valueWrapperModel) {
super(id, model, String.class, false);
this.valueWrapperModel = valueWrapperModel;
}

@Override
public Iterator<String> getIterator(String input) {
return WebComponentUtil.prepareAutoCompleteList(getLookupTable(), input, ((PageBase) getPage()).getLocalizationService()).iterator();
}

@Override
protected LookupTableType getLookupTable() {
PrismPropertyWrapper<String> itemWrapper = valueWrapperModel.getObject().getParent();
if (itemWrapper == null) {
return null;
}
PrismProperty<String> item = itemWrapper.getItem();
PrismContainerValue<?> parent = item.getParent();
if (parent == null || parent.getParent() == null) {
return null;
}

//TODO change matchMethid to be able to check path istead of def???
PrismContainerable<?> parentParent = parent.getParent();
if (!(parentParent instanceof PrismContainer)) {
return null;
}

PrismContainerValue<?> parentValue = ((PrismContainer<?>) parentParent).getParent();

if(parentValue == null || isNotLoggingConfiguration(parentValue)) {
throw new IllegalArgumentException("LoggingConfigurationType not found in parent for Appender");
}

LoggingConfigurationType loggingConfig = parentValue.getRealValue();
if (loggingConfig == null) {
return null;
}

LookupTableType lookupTable = new LookupTableType();
List<LookupTableRowType> list = lookupTable.createRowList();
for (AppenderConfigurationType appender : loggingConfig.getAppender()) {
LookupTableRowType row = new LookupTableRowType();
String name = appender.getName();
row.setKey(name);
row.setValue(name);
row.setLabel(new PolyStringType(name));
list.add(row);
}
return lookupTable;

}

private boolean isNotLoggingConfiguration(PrismContainerValue<?> parentValue) {
return !(parentValue.getRealValue() instanceof LoggingConfigurationType);
}

@Override
protected void onDetach() {
valueWrapperModel.detach();
super.onDetach();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,17 @@
package com.evolveum.midpoint.gui.api.component.autocomplete;

import java.time.Duration;
import java.util.Collection;
import java.util.Iterator;

import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.result.OperationResult;

import com.evolveum.midpoint.task.api.Task;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
import org.apache.wicket.ajax.attributes.ThrottlingSettings;
Expand Down Expand Up @@ -37,16 +46,30 @@ public abstract class AutoCompleteTextPanel<T> extends AbstractAutoCompletePanel

private static final String ID_INPUT = "input";

private LookupTableType lookupTable = null;
private String lookupTableOid;
private boolean strict;

public AutoCompleteTextPanel(String id, final IModel<T> model, Class<T> type,
boolean strict, LookupTableType lookupTable) {
this(id, model, type, StringAutoCompleteRenderer.INSTANCE);
this.lookupTable = lookupTable;
this.lookupTableOid = lookupTable != null ? lookupTable.getOid() : null;
this.strict = strict;
}

public AutoCompleteTextPanel(String id, final IModel<T> model, Class<T> type,
boolean strict, String lookupTableOid) {
this(id, model, type, StringAutoCompleteRenderer.INSTANCE);
this.lookupTableOid = lookupTableOid;
this.strict = strict;
}

public AutoCompleteTextPanel(String id, final IModel<T> model, Class<T> type,
boolean strict) {
this(id, model, type, StringAutoCompleteRenderer.INSTANCE);
this.strict = strict;
}


public AutoCompleteTextPanel(String id, final IModel<T> model, Class<T> type, IAutoCompleteRenderer<T> renderer) {
super(id);

Expand Down Expand Up @@ -97,13 +120,36 @@ protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
public abstract Iterator<T> getIterator(String input);

protected <C> IConverter<C> getAutoCompleteConverter(Class<C> type, IConverter<C> originConverter) {
if (lookupTable == null) {
LookupTableType lookupTableType = getLookupTable();
if (lookupTableType == null) {
return originConverter;
}

return new LookupTableConverter<>(originConverter, lookupTable, getBaseFormComponent(), strict);
return new LookupTableConverter<>(originConverter, lookupTableType, getBaseFormComponent(), strict) {

@Override
protected LookupTableType getLookupTable() {
return AutoCompleteTextPanel.this.getLookupTable();
}
};

}

protected LookupTableType getLookupTable() {
if (lookupTableOid != null) {
Task task = getPageBase().createSimpleTask("Load lookup table");
OperationResult result = task.getResult();
Collection<SelectorOptions<GetOperationOptions>> options = WebModelServiceUtils
.createLookupTableRetrieveOptions(getPageBase().getSchemaService());
PrismObject<LookupTableType> prismLookupTable = WebModelServiceUtils.loadObject(LookupTableType.class, lookupTableOid, options, getPageBase(), task, result);
if (prismLookupTable != null) {
return prismLookupTable.asObjectable();
}
}
return null;
}


@Override
public FormComponent<T> getBaseFormComponent() {
return (FormComponent<T>) get(ID_INPUT);
Expand Down

0 comments on commit 99065fd

Please sign in to comment.