Skip to content

Commit

Permalink
implemetation of filter search definition for more panel
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Nov 30, 2020
1 parent df0e835 commit 3fffff8
Show file tree
Hide file tree
Showing 11 changed files with 145 additions and 112 deletions.
Expand Up @@ -92,7 +92,7 @@ public void onSubmit(AjaxRequestTarget target) {
deletePerformed(target);
}
};
removeButton.add(new VisibleBehaviour(() -> !(getModelObject() instanceof FilterSearchItem) && canRemoveSearchItem()));
removeButton.add(new VisibleBehaviour(() -> canRemoveSearchItem()));
removeButton.setOutputMarkupId(true);
searchItemContainer.add(removeButton);
}
Expand All @@ -108,7 +108,7 @@ private IModel<String> createHelpModel(){
protected abstract void initSearchItemField(WebMarkupContainer searchItemContainer);

protected boolean canRemoveSearchItem() {
return false;
return true;
}

protected IModel<String> createLabelModel() {
Expand Down
Expand Up @@ -37,8 +37,6 @@ public class PropertySearchItem<T extends Serializable> extends SearchItem {

private static final long serialVersionUID = 1L;

private final SearchItemDefinition definition;

private DisplayableValue<T> value;

public PropertySearchItem(Search search, @NotNull SearchItemDefinition definition) {
Expand All @@ -51,11 +49,7 @@ public PropertySearchItem(Search search, @NotNull SearchItemDefinition definitio
throw new IllegalArgumentException("Unknown item definition.getDef() type '" + definition.getDef() + "'");
}

this.definition = definition;
}

public SearchItemDefinition getDefinition() {
return definition;
setDefinition(definition);
}

public DisplayableValue<T> getValue() {
Expand All @@ -68,32 +62,32 @@ public void setValue(DisplayableValue<T> value) {

public List<DisplayableValue<T>> getAllowedValues() {
List<DisplayableValue<T>> list = new ArrayList<>();
if (!(definition.getDef() instanceof PrismPropertyDefinition)) {
if (!(getDefinition().getDef() instanceof PrismPropertyDefinition)) {
return list;
}

PrismPropertyDefinition<T> def = (PrismPropertyDefinition<T>) definition.getDef();
PrismPropertyDefinition<T> def = (PrismPropertyDefinition<T>) getDefinition().getDef();
list.addAll(def.getAllowedValues());

return list;
}

public List<QName> getAllowedRelations() {
return definition.getAllowedValues();
return getDefinition().getAllowedValues();
}

public ItemPath getPath() {
return definition.getPath();
return getDefinition().getPath();
}

@Override
public String getName() {
if (definition.getDisplayName() != null){
return WebComponentUtil.getTranslatedPolyString(definition.getDisplayName());
if (getDefinition().getDisplayName() != null){
return WebComponentUtil.getTranslatedPolyString(getDefinition().getDisplayName());
}
String key = definition.getDef().getDisplayName();
String key = getDefinition().getDef().getDisplayName();
if (StringUtils.isEmpty(key)) {
key = getSearch().getType().getSimpleName() + '.' + definition.getDef().getItemName().getLocalPart();
key = getSearch().getType().getSimpleName() + '.' + getDefinition().getDef().getItemName().getLocalPart();
}

StringResourceModel nameModel = PageBase.createStringResourceStatic(null, key);
Expand All @@ -102,21 +96,21 @@ public String getName() {
return nameModel.getString();
}
}
String name = definition.getDef().getDisplayName();
String name = getDefinition().getDef().getDisplayName();
if (StringUtils.isNotEmpty(name)) {
return name;
}

return definition.getDef().getItemName().getLocalPart();
return getDefinition().getDef().getItemName().getLocalPart();
}

@Override
public Type getType() {
if (definition.getDef() instanceof PrismReferenceDefinition) {
if (getDefinition().getDef() instanceof PrismReferenceDefinition) {
return Type.REFERENCE;
}

PrismPropertyDefinition def = (PrismPropertyDefinition) definition.getDef();
PrismPropertyDefinition def = (PrismPropertyDefinition) getDefinition().getDef();
if (def.getAllowedValues() != null && !def.getAllowedValues().isEmpty()) {
return Type.ENUM;
}
Expand All @@ -133,24 +127,24 @@ public Type getType() {
}

public PolyStringType getDisplayName() {
return definition.getDisplayName();
return getDefinition().getDisplayName();
}

public void setDisplayName(PolyStringType displayName) {
this.definition.setDisplayName(displayName);
this.getDefinition().setDisplayName(displayName);
}

@Override
public String getHelp(PageBase pageBase) {
return definition.getHelp();
return getDefinition().getHelp();
}

@Override
public String toString() {
return "PropertySearchItem{" +
"path=" + definition.getPath() +
", definition=" + definition +
", allowedRelations=" + definition.getAllowedValues() +
"path=" + getDefinition().getPath() +
", definition=" + getDefinition() +
", allowedRelations=" + getDefinition().getAllowedValues() +
", value=" + value +
'}';
}
Expand Down
Expand Up @@ -189,18 +189,42 @@ public SearchItem addItem(ItemDefinition def) {
}

public SearchItem addItem(SearchItemType predefinedFilter) {
SearchItemDefinition def = null;
for (SearchItemDefinition searchItemDefinition : availableDefinitions) {
if (searchItemDefinition.getPredefinedFilter() != null
&& searchItemDefinition.getPredefinedFilter().equals(predefinedFilter)) {
def = searchItemDefinition;
break;
}
}
if (def == null) {
return null;
}
FilterSearchItem item = new FilterSearchItem(this, predefinedFilter);
item.setDefinition(def);

items.add(item);
availableDefinitions.remove(def);
return item;
}

public SearchItem addItem(SearchItemDefinition def) {
if (def.getDef() != null) {
return addItem(def.getDef());
} else if (def.getPredefinedFilter() != null) {
return addItem(def.getPredefinedFilter());
}
return null;
}

public void addItemToAllDefinitions(SearchItemDefinition itemDef){
allDefinitions.add(itemDef);
availableDefinitions.add(itemDef);
}

public void delete(SearchItem item) {
if (items.remove(item)) {
if (item instanceof PropertySearchItem) {
availableDefinitions.add(((PropertySearchItem) item).getDefinition());
} else if (item instanceof FilterSearchItem) {
//todo remove filter search item
}
availableDefinitions.add(item.getDefinition());
}
}

Expand Down Expand Up @@ -240,7 +264,7 @@ public ObjectQuery createObjectQuerySimple(PageBase pageBase) {
ObjectFilter convertedFilter = pageBase.getQueryConverter().parseFilter(filter, getType());
ExpressionVariables variables = new ExpressionVariables();

ExpressionParameterType functionParameter = item.getPredefinedFilter().getParameter();
ParameterType functionParameter = item.getPredefinedFilter().getParameter();
QName returnType = functionParameter.getType();
if (returnType != null) {
Class<?> inputClass = pageBase.getPrismContext().getSchemaRegistry().determineClassForType(returnType);
Expand Down
Expand Up @@ -233,16 +233,20 @@ public static <T extends ObjectType> Search createSearch(
List<SearchItemDefinition> configuredSearchItemDefs = getConfiguredSearchItemDefinitions(objectDef, useDefsFromSuperclass, searchItemsConfig);
if (!CollectionUtils.isEmpty(configuredSearchItemDefs)) {
configuredSearchItemDefs.forEach(searchItemDef -> {
SearchItem item = null;
if (searchItemDef.getPath() != null) {
ItemDefinition def = objDef.findItemDefinition(searchItemDef.getPath());
item = search.addItem(def);
((PropertySearchItem) item).setDisplayName(searchItemDef.getDisplayName());
} else if (searchItemDef.getPredefinedFilter() != null) {
item = search.addItem(searchItemDef.getPredefinedFilter());
}
if (item != null) {
item.setFixed(true);
search.addItemToAllDefinitions(searchItemDef);
if (searchItemDef.isShowAsDefault()) {
SearchItem item = null;
if (searchItemDef.getPath() != null) {
ItemDefinition def = objDef.findItemDefinition(searchItemDef.getPath());
item = search.addItem(def);
((PropertySearchItem) item).setDisplayName(searchItemDef.getDisplayName());
} else if (searchItemDef.getPredefinedFilter() != null) {
item = search.addItem(searchItemDef.getPredefinedFilter());
}
if (item != null) {
item.setFixed(true);
item.setDefinition(searchItemDef);
}
}
});
} else {
Expand Down
Expand Up @@ -13,7 +13,7 @@
<div class="search-item-label" wicket:id="searchItemLabel" style="width: auto !important; float: left;" />
<i wicket:id="help" style="float: left; margin-top: 7px;"/>
<div class="search-item-field" wicket:id="searchItemField" style="float: left;" />
<div class="search-item-field" wicket:id="checkDisable" style="float: left;" />
<div class="search-item-field" wicket:id="checkDisable" style="float: left; margin-top: 4px;" />
<a wicket:id="removeButton" class="btn btn-xs btn-default search-item-remove-button" style="float: left;">
<i class="fa fa-remove"/>
</a>
Expand Down
Expand Up @@ -17,6 +17,8 @@
import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnBlurAjaxFormUpdatingBehaviour;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionParameterType;

import com.evolveum.midpoint.xml.ns._public.common.common_3.ParameterType;

import org.apache.commons.lang3.Validate;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
Expand Down Expand Up @@ -58,14 +60,12 @@ protected void onUpdate(AjaxRequestTarget ajaxRequestTarget) {
searchPerformed(ajaxRequestTarget);
}
});
checkPanel.add(AttributeModifier.append("class", "pull-right"));
checkPanel.add(AttributeAppender.append("style", "margin-top: 3px;"));
checkPanel.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour());

checkPanel.setOutputMarkupId(true);
searchItemContainer.add(checkPanel);

ExpressionParameterType functionParameter = getModelObject().getPredefinedFilter().getParameter();
ParameterType functionParameter = getModelObject().getPredefinedFilter().getParameter();
QName returnType = functionParameter !=null ? functionParameter.getType() : null;
Component inputPanel;
if (returnType == null) {
Expand Down
Expand Up @@ -17,8 +17,6 @@ public abstract class SearchItem implements Serializable {

private static final long serialVersionUID = 1L;

public static final String F_HELP = "help";

public enum Type {
TEXT, BOOLEAN, ENUM, BROWSER, REFERENCE, FILTER, DATE, ITEM_PATH, OBJECT_COLLECTION
}
Expand All @@ -27,6 +25,7 @@ public enum Type {

private boolean fixed;
private boolean editWhenVisible;
private SearchItemDefinition definition;

public SearchItem(Search search) {
this.search = search;
Expand Down Expand Up @@ -63,4 +62,12 @@ public boolean isEditWhenVisible() {
public void setEditWhenVisible(boolean editWhenVisible) {
this.editWhenVisible = editWhenVisible;
}

public SearchItemDefinition getDefinition() {
return definition;
}

public void setDefinition(SearchItemDefinition definition) {
this.definition = definition;
}
}
Expand Up @@ -35,6 +35,7 @@ public class SearchItemDefinition implements Serializable, Comparable<SearchItem
private List<QName> allowedValues;
private String description;
private boolean isSelected = false;
private boolean showAsDefault = true;

public SearchItemDefinition(ItemPath path, ItemDefinition def, List<QName> allowedValues) {
this.path = path;
Expand All @@ -45,6 +46,8 @@ public SearchItemDefinition(ItemPath path, ItemDefinition def, List<QName> allow
public SearchItemDefinition(SearchItemType predefinedFilter) {
this.predefinedFilter = predefinedFilter;
this.description = predefinedFilter != null ? predefinedFilter.getDescription() : null;
this.showAsDefault = !Boolean.FALSE.equals(predefinedFilter.isShowAsDefault());
this.displayName = predefinedFilter.getDisplayName();
}

public ItemPath getPath() {
Expand Down Expand Up @@ -83,6 +86,10 @@ public void setSelected(boolean selected) {
isSelected = selected;
}

public boolean isShowAsDefault() {
return showAsDefault;
}

public String getName() {
if (getDisplayName() != null){
return WebComponentUtil.getTranslatedPolyString(getDisplayName());
Expand Down Expand Up @@ -112,8 +119,8 @@ public int hashCode() {

@Override
public int compareTo(SearchItemDefinition o) {
String n1 = WebComponentUtil.getItemDefinitionDisplayNameOrName(getDef(), null);
String n2 = WebComponentUtil.getItemDefinitionDisplayNameOrName(o.getDef(), null);
String n1 = getName();
String n2 = o.getName();

if (n1 == null || n2 == null) {
return 0;
Expand All @@ -125,11 +132,13 @@ public String getHelp(){
if (StringUtils.isNotBlank(description)) {
return description;
}
String help;
if (StringUtils.isNotEmpty(def.getHelp())) {
help = def.getHelp();
} else {
help = def.getDocumentation();
String help = "";
if (def != null) {
if (StringUtils.isNotEmpty(def.getHelp())) {
help = def.getHelp();
} else {
help = def.getDocumentation();
}
}
if (StringUtils.isNotBlank(help)) {
help = help.replace("\n", "").replace("\r", "").replaceAll("^ +| +$|( )+", "$1");
Expand Down
Expand Up @@ -95,4 +95,8 @@ protected IModel<String> createLabelModel() {
}
return Model.of();
}

protected boolean canRemoveSearchItem() {
return false;
}
}

0 comments on commit 3fffff8

Please sign in to comment.