Skip to content

Commit

Permalink
query type fix
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Feb 15, 2022
1 parent 42ce954 commit 4dfd2aa
Show file tree
Hide file tree
Showing 11 changed files with 33 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,12 @@ public AbstractRoleSearchItemWrapper(SearchConfigurationWrapper searchConfig) {
}

@Override
public ObjectFilter createFilter(PageBase pageBase, VariablesMap variables) {
public ObjectFilter createFilter(Class type, PageBase pageBase, VariablesMap variables) {
AbstractRoleType object = getParentVariables(variables);
if (object == null) {
return null;
}

Class type = getSearchConfig().getTypeClass();
ScopeSearchItemWrapper scope = getScopeSearchItemWrapper();
if (scope != null && SearchBoxScopeType.SUBTREE.equals(scope.getValue().getValue())) {
ObjectReferenceType ref = ObjectTypeUtil.createObjectRef(object, (QName) null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@


import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.schema.expression.VariablesMap;
import com.evolveum.midpoint.util.DisplayableValue;
Expand Down Expand Up @@ -41,7 +42,7 @@ public abstract class AbstractSearchItemWrapper<T extends Serializable> implemen

public abstract DisplayableValue<T> getDefaultValue();

public abstract ObjectFilter createFilter(PageBase pageBase, VariablesMap variables);
public abstract <C extends Containerable> ObjectFilter createFilter(Class<C> type, PageBase pageBase, VariablesMap variables);

public boolean isVisible() {
return visible;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,24 +60,24 @@ public DisplayableValue<XMLGregorianCalendar> getDefaultValue() {
}

@Override
public ObjectFilter createFilter(PageBase pageBase, VariablesMap variables) {
public ObjectFilter createFilter(Class type, PageBase pageBase, VariablesMap variables) {
PrismContext ctx = PrismContext.get();
ItemPath path = getSearchItem().getPath().getItemPath();
if (fromDate != null && toDate != null) {
return ctx.queryFor(ObjectType.class)
return ctx.queryFor(type)
.item(path)
.gt(fromDate)
.and()
.item(path)
.lt(toDate)
.buildFilter();
} else if (fromDate != null) {
return ctx.queryFor(ObjectType.class)
return ctx.queryFor(type)
.item(path)
.gt(fromDate)
.buildFilter();
} else if (toDate != null) {
return ctx.queryFor(ObjectType.class)
return ctx.queryFor(type)
.item(path)
.lt(toDate)
.buildFilter();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,9 @@ public DisplayableValue<?> getDefaultValue() {
}

@Override
public ObjectFilter createFilter(PageBase pageBase, VariablesMap var) {
public ObjectFilter createFilter(Class type, PageBase pageBase, VariablesMap variables) {
PrismContext ctx = PrismContext.get();
VariablesMap variables = getFilterVariables();
variables = getFilterVariables(); //todo which variables to use?
if (isEnabled() && isApplyFilter(SearchBoxModeType.BASIC)) {
SearchFilterType filter = getSearchItem().getFilter();
if (filter == null && getSearchItem().getFilterExpression() != null) {
Expand Down Expand Up @@ -129,8 +129,13 @@ public VariablesMap getFilterVariables() {
VariablesMap variables = new VariablesMap();
SearchFilterParameterType functionParameter = getSearchItem().getParameter();
if (functionParameter != null && functionParameter.getType() != null) {
Class<?> inputClass = PrismContext.get().getSchemaRegistry().determineClassForType(functionParameter.getType());
TypedValue value = new TypedValue(getValue().getValue(), inputClass);
TypedValue value;
if (getInput() == null || getInput().getValue() == null) {
Class<?> inputClass = PrismContext.get().getSchemaRegistry().determineClassForType(functionParameter.getType());
value = new TypedValue(null, inputClass);
} else {
value = new TypedValue(getInput().getValue(), getInput().getValue().getClass());
}
variables.put(functionParameter.getName(), value);
}
return variables;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ public DisplayableValue<ItemPathType> getDefaultValue() {
}

@Override
public ObjectFilter createFilter(PageBase pageBase, VariablesMap variables) {
public ObjectFilter createFilter(Class type, PageBase pageBase, VariablesMap variables) {
ItemPathType itemPath = (ItemPathType) getValue().getValue();
return PrismContext.get().queryFor(ObjectType.class)
return PrismContext.get().queryFor(type)
.item(getSearchItem().getPath().getItemPath()).eq(itemPath).buildFilter();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.schema.expression.VariablesMap;
Expand Down Expand Up @@ -101,7 +102,7 @@ public String getHelp() {


@Override
public ObjectFilter createFilter(PageBase pageBase, VariablesMap variables) {
public ObjectFilter createFilter(Class type, PageBase pageBase, VariablesMap variables) {
if (objectCollectionView.getFilter() == null) {
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,8 @@ public boolean isVisible() {
}

@Override
public ObjectFilter createFilter(PageBase pageBase, VariablesMap variables) {
return PrismContext.get().queryFor((Class<? extends Containerable>) WebComponentUtil.qnameToClass(PrismContext.get(), config.getDefaultValue()))
public ObjectFilter createFilter(Class type, PageBase pageBase, VariablesMap variables) {
return PrismContext.get().queryFor(type)
.buildFilter();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
package com.evolveum.midpoint.gui.impl.component.search;

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.schema.expression.VariablesMap;
import com.evolveum.midpoint.util.DisplayableValue;
Expand Down Expand Up @@ -49,11 +50,11 @@ public boolean isApplyFilter(SearchBoxModeType searchBoxMode) {
}

@Override
public ObjectFilter createFilter(PageBase pageBase, VariablesMap variables) {
public ObjectFilter createFilter(Class type, PageBase pageBase, VariablesMap variables) {
if (StringUtils.isEmpty(getValue().getValue())) {
return null;
}
return pageBase.getPrismContext().queryFor(ObjectType.class)
return pageBase.getPrismContext().queryFor(type)
.id(getValue().getValue())
.buildFilter();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ public void setItemDef(ItemDefinition<?> itemDef) {
}

@Override
public ObjectFilter createFilter(PageBase pageBase, VariablesMap variables) {
public ObjectFilter createFilter(Class type, PageBase pageBase, VariablesMap variables) {
if (getValue().getValue() == null) {
return null;
}
Expand All @@ -149,11 +149,11 @@ public ObjectFilter createFilter(PageBase pageBase, VariablesMap variables) {
return null;
}
Object parsedValue = Long.parseLong((String) getValue().getValue());
return ctx.queryFor(ObjectType.class)
return ctx.queryFor(type)
.item(getSearchItem().getPath().getItemPath(), itemDef).eq(parsedValue).buildFilter();
} else if (DOMUtil.XSD_STRING.equals(typeName)) {
String text = (String) getValue().getValue();
return ctx.queryFor(ObjectType.class)
return ctx.queryFor(type)
.item(getSearchItem().getPath().getItemPath(), itemDef).contains(text).matchingCaseIgnore().buildFilter();
} else if (DOMUtil.XSD_QNAME.equals(typeName)) {
Object qnameValue = getValue().getValue();
Expand All @@ -163,12 +163,12 @@ public ObjectFilter createFilter(PageBase pageBase, VariablesMap variables) {
} else {
qName = new QName((String) qnameValue);
}
return ctx.queryFor(ObjectType.class)
return ctx.queryFor(type)
.item(getSearchItem().getPath().getItemPath(), itemDef).eq(qName).buildFilter();
} else if (SchemaConstants.T_POLY_STRING_TYPE.equals(typeName)) {
//we're looking for string value, therefore substring filter should be used
String text = (String) getValue().getValue();
return ctx.queryFor(ObjectType.class)
return ctx.queryFor(type)
.item(getSearchItem().getPath().getItemPath(), itemDef).contains(text).matchingNorm().buildFilter();
}
// else if (propDef.getValueEnumerationRef() != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public DisplayableValue<ObjectReferenceType> getDefaultValue() {
}

@Override
public ObjectFilter createFilter(PageBase pageBase, VariablesMap variables) {
public ObjectFilter createFilter(Class type, PageBase pageBase, VariablesMap variables) {
PrismReferenceValue refValue = ((ObjectReferenceType) getValue().getValue()).asReferenceValue();
if (refValue.isEmpty()) {
return null;
Expand All @@ -80,7 +80,7 @@ public ObjectFilter createFilter(PageBase pageBase, VariablesMap variables) {
&& refValue.getObject() == null && refValue.getRelation() == null && refValue.getFilter() == null) {
return null;
}
RefFilter refFilter = (RefFilter) PrismContext.get().queryFor(searchType)
RefFilter refFilter = (RefFilter) PrismContext.get().queryFor(type)
.item(getSearchItem().getPath().getItemPath()).ref(refValue.clone())
.buildFilter();
refFilter.setOidNullAsAny(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -363,7 +363,7 @@ private ObjectQuery createObjectQuerySimple(VariablesMap defaultVariables, PageB
(item instanceof AbstractRoleSearchItemWrapper && abstractRoleFilterCheck)) {
continue;
}
ObjectFilter filter = item.createFilter(pageBase, defaultVariables);
ObjectFilter filter = item.createFilter(getTypeClass(), pageBase, defaultVariables);
if (filter != null) {
conditions.add(filter);
}
Expand Down

0 comments on commit 4dfd2aa

Please sign in to comment.