Skip to content

Commit

Permalink
Merge branch 'master' of github.com:Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Mar 28, 2023
2 parents be25e96 + 478858d commit 4527b0a
Show file tree
Hide file tree
Showing 13 changed files with 103 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -704,6 +704,12 @@ public static StringResourceModel createStringResourceStatic(String resourceKey,
.setDefaultValue(resourceKey).setParameters(objects);
}

@NotNull
public static StringResourceModel createStringResourceStatic(String resourceKey, String defaultValue, Object... objects) {
return new StringResourceModel(resourceKey).setModel(new Model<String>())
.setDefaultValue(defaultValue).setParameters(objects);
}

public StringResourceModel createStringResourceDefault(String defaultKey, PolyStringType polystringKey, Object... objects) {
if (polystringKey == null) {
return createStringResource(defaultKey);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Validate;
import org.apache.wicket.ajax.AjaxRequestTarget;

import com.evolveum.midpoint.gui.api.factory.wrapper.WrapperContext;
Expand Down Expand Up @@ -50,21 +51,49 @@ public class WebPrismUtil {
private static final String DOT_CLASS = WebPrismUtil.class.getName() + ".";
private static final String OPERATION_CREATE_NEW_VALUE = DOT_CLASS + "createNewValue";

public static <ID extends ItemDefinition<I>, I extends Item<?, ?>> String getHelpText(ID def) {
public static <ID extends ItemDefinition<I>, I extends Item<?, ?>> String getHelpText(ID def, Class<?> containerClass) {
if (def == null) {
return null;
}
String doc = def.getHelp();
if (StringUtils.isEmpty(doc)) {
doc = def.getDocumentation();
if (StringUtils.isEmpty(doc)) {
return null;

String help = def.getHelp();
if (StringUtils.isNotEmpty(help)) {
String defaultValue = help.replaceAll("\\s{2,}", " ").trim();
return PageBase.createStringResourceStatic(help, defaultValue).getString();
}

QName name = def.getItemName();

if (name != null && containerClass != null) {
String localizedHelp = getLocalizedHelpWithContainerClass(name, containerClass);
if (StringUtils.isNotEmpty(localizedHelp)) {
return localizedHelp;
}
}

String doc = def.getDocumentation();
if (StringUtils.isEmpty(doc)) {
return null;
}

return doc.replaceAll("\\s{2,}", " ").trim();
}

private static String getLocalizedHelpWithContainerClass(@NotNull QName name, @NotNull Class<?> containerClass) {
String displayName = name.getLocalPart();
String containerName = containerClass.getSimpleName();

String helpKey = containerName + "." + displayName + ".help";
String localizedHelp = PageBase.createStringResourceStatic(helpKey).getString();
if (!localizedHelp.equals(helpKey)) {
return localizedHelp;
}
if (containerClass.getSuperclass() != null) {
return getLocalizedHelpWithContainerClass(name, containerClass.getSuperclass());
}
return null;
}

public static <IW extends ItemWrapper, PV extends PrismValue, VW extends PrismValueWrapper> VW createNewValueWrapper(IW itemWrapper, PV newValue, PageBase pageBase, AjaxRequestTarget target) {
LOGGER.debug("Adding value to {}", itemWrapper);

Expand Down Expand Up @@ -127,7 +156,6 @@ public static <IW extends ItemWrapper, PV extends PrismValue, VW extends PrismVa
context.setCreateIfEmpty(true);
}


VW newValueWrapper = modelServiceLocator.createValueWrapper(itemWrapper, newValue, status, context);
result.recordSuccess();

Expand Down Expand Up @@ -208,7 +236,7 @@ private static <C extends Containerable> boolean isUseAsEmptyValue(Item item) {
private static <C extends Containerable> boolean isUseAsEmptyValue(Class<?> typeClass) {
return typeClass != null &&
(AbstractSynchronizationActionType.class.isAssignableFrom(typeClass)
|| ActivitySimulationResultDefinitionType.class.isAssignableFrom(typeClass));
|| ActivitySimulationResultDefinitionType.class.isAssignableFrom(typeClass));
}

public static <C extends Containerable> PrismContainerValue<C> cleanupEmptyContainerValue(PrismContainerValue<C> value) {
Expand Down Expand Up @@ -252,7 +280,7 @@ private static <T> void cleanupEmptyValues(Item item) {
iterator.remove();
continue;
}
if (pVal.getRealValue() instanceof ExpressionType && ExpressionUtil.isEmpty((ExpressionType)pVal.getRealValue())) {
if (pVal.getRealValue() instanceof ExpressionType && ExpressionUtil.isEmpty((ExpressionType) pVal.getRealValue())) {
iterator.remove();
continue;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ public String getHelp() {
return help;
}
if (itemDef !=null) {
help = WebPrismUtil.getHelpText(itemDef);
help = WebPrismUtil.getHelpText(itemDef, containerType);
if (StringUtils.isNotBlank(help)) {
Pattern pattern = Pattern.compile("<.+?>");
Matcher m = pattern.matcher(help);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
<i class="fa fa-search mr-1"/>&nbsp;
<span wicket:id="searchButtonLabel"/>
</button>
<button aria-expanded="false" type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
<button aria-expanded="false" type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"
wicket:id="dropdownButton">
<span class="sr-only"><wicket:message key="SplitButtonDropDown.toggle"/></span>
</button>
<ul class="dropdown-menu dropdown-menu-right" role="menu">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,14 @@
package com.evolveum.midpoint.gui.impl.component.search.panel;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.data.column.AjaxLinkPanel;

import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.list.ListItem;
Expand All @@ -31,6 +33,7 @@ public abstract class SearchButtonWithDropdownMenu<E extends Enum> extends BaseP
private static final String ID_SEARCH_BUTTON_LABEL = "searchButtonLabel";
private static final String ID_MENU_ITEMS = "menuItems";
private static final String ID_MENU_ITEM = "menuItem";
private static final String ID_DROPDOWN_BUTTON = "dropdownButton";

// E selectedValue = null;

Expand Down Expand Up @@ -79,6 +82,15 @@ protected String load() {
searchButton.add(buttonLabel);
add(searchButton);

AjaxButton dropdownButton = new AjaxButton(ID_DROPDOWN_BUTTON) {
@Override
public void onClick(AjaxRequestTarget target) {

}
};
dropdownButton.setOutputMarkupId(true);
dropdownButton.add(new VisibleEnableBehaviour(() -> true, () -> getModelObject().size() > 1));
add(dropdownButton);
ListView<E> menuItems = new ListView<E>(ID_MENU_ITEMS, getModel()) {

private static final long serialVersionUID = 1L;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ protected QName getType() {

@Override
protected void onTemplateChosePerformed(CompiledObjectCollectionView collectionViews, AjaxRequestTarget target) {
getBreadcrumbs().clear();
getWizardBreadcrumbs().clear();
applyTemplate(collectionViews);

Fragment fragment = createDetailsFragment();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ public abstract class ItemWrapperImpl<I extends Item, VW extends PrismValueWrapp

private String displayName;

private String helpText;

private boolean column;

// private boolean stripe;
Expand Down Expand Up @@ -132,7 +134,22 @@ public String getDisplayName() {

@Override
public String getHelp() {
return WebPrismUtil.getHelpText(getItemDefinition());
if (helpText == null) {
helpText = getLocalizedHelpText();
}
return helpText;
}

private String getLocalizedHelpText() {
Class<?> containerClass = null;
PrismContainerValue<?> val = newItem.getParent();
if (val != null && val.getDefinition() != null
&& !val.getDefinition().isRuntimeSchema()
&& val.getRealClass() != null) {
containerClass = val.getRealClass();
}

return WebPrismUtil.getHelpText(getItemDefinition(), containerClass);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,14 @@ public String getDisplayName() {

@Override
public String getHelpText() {
return WebPrismUtil.getHelpText(getContainerDefinition());
Class<?> containerClass = null;
if (getParent() != null
&& getParent().getParent() != null
&& getParent().getParent().getParent() != null) {
containerClass = getParent().getParent().getParent().getTypeClass();
}

return WebPrismUtil.getHelpText(getContainerDefinition(), containerClass);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
*/
package com.evolveum.midpoint.web.model;

import com.evolveum.midpoint.prism.*;

import org.apache.wicket.model.IModel;

import com.evolveum.midpoint.gui.api.page.PageBase;
Expand All @@ -14,10 +16,6 @@
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper;
import com.evolveum.midpoint.gui.api.factory.wrapper.WrapperContext;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.Item;
import com.evolveum.midpoint.prism.ItemDefinition;
import com.evolveum.midpoint.prism.PrismContainerDefinition;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.exception.SchemaException;
Expand Down Expand Up @@ -92,7 +90,15 @@ <ID extends ItemDefinition> ItemWrapper getItemWrapperForHeader(Class<ID> type,

// TODO this should most definitely add parent wrapper to newly created item wrapper otherwise localization
// keys are mostly useless (unless nicely specified in XSD, which is not very often)
return createItemWrapper(def.instantiate(), pageBase);
Item item = def.instantiate();
if (path.namedSegmentsOnly().size() == 1) {
Item parentContainer = container.instantiate();
PrismContainerValue value = container.createValue();
value.setParent(parentContainer);
value.applyDefinition(container, true);
item.setParent(value);
}
return createItemWrapper(item, pageBase);
} catch (SchemaException e) {
LOGGER.error("Cannot get {} with path {} from parent {}\nReason: {}", ItemWrapper.class, path,
this.parent.getObject(), e.getMessage(), e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,7 @@ private void processVariables(VariablesMap variablesMap) {

@Override
protected SearchPanel initSearch(String headerId) {
getSearchModel().getObject().setAllowedModeList(List.of(SearchBoxModeType.BASIC));
return new SearchPanel<>(headerId, getSearchModel()) {
private static final long serialVersionUID = 1L;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ public ResourceSummaryPanel(String id, IModel<ResourceType> model, SummaryPanelS
@Override
protected List<SummaryTag<ResourceType>> getSummaryTagComponentList(){
AvailabilityStatusType availability = ResourceTypeUtil.getLastAvailabilityStatus(getModelObject());
AdministrativeAvailabilityStatusType administrativeAvailability = ResourceTypeUtil.getAdministrativeAvailabilityStatus(getModelObject());
IModel<AdministrativeAvailabilityStatusType> administrativeAvailability =
() -> ResourceTypeUtil.getAdministrativeAvailabilityStatus(getModelObject());

List<SummaryTag<ResourceType>> summaryTagList = new ArrayList<>();

Expand All @@ -43,9 +44,9 @@ protected List<SummaryTag<ResourceType>> getSummaryTagComponentList(){

@Override
protected void initialize(ResourceType object) {
if (AdministrativeAvailabilityStatusType.MAINTENANCE == administrativeAvailability) {
if (AdministrativeAvailabilityStatusType.MAINTENANCE == administrativeAvailability.getObject()) {
setIconCssClass(GuiStyleConstants.CLASS_ICON_RESOURCE_MAINTENANCE);
setLabel(ResourceSummaryPanel.this.getString(administrativeAvailability));
setLabel(ResourceSummaryPanel.this.getString(administrativeAvailability.getObject()));
return;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ If enhanced, add the features into 200-report-indirect-assignments.xml as well.
<column>
<name>nameColumn</name>
<display>
<label>Role</label>
<label>Name</label>
</display>
<previousColumn>user</previousColumn>
<export>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@
<column>
<name>nameColumn</name>
<display>
<label>Role</label>
<label>Name</label>
</display>
<previousColumn>user</previousColumn>
<export>
Expand Down

0 comments on commit 4527b0a

Please sign in to comment.