Skip to content

Commit

Permalink
adding default search items for member pages
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Dec 22, 2020
1 parent b757077 commit 7f95938
Show file tree
Hide file tree
Showing 38 changed files with 1,182 additions and 1,176 deletions.
Expand Up @@ -12,6 +12,7 @@
import com.evolveum.midpoint.gui.impl.component.ContainerableListPanel;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.util.DisplayableValue;
import com.evolveum.midpoint.web.component.data.ISelectableDataProvider;
import com.evolveum.midpoint.web.component.data.column.ObjectNameColumn;
import com.evolveum.midpoint.web.component.search.*;
Expand Down Expand Up @@ -179,4 +180,11 @@ protected boolean isObjectDetailsEnabled(IModel<SelectableBean<O>> rowModel) {
}

protected void objectDetailsPerformed(AjaxRequestTarget target, O object){};

protected ContainerTypeSearchItem getTypeItem(Class<? extends O> type, List<DisplayableValue<Class<? extends O>>> allowedValues){
@NotNull ObjectTypes objectType = ObjectTypes.getObjectType(type);
return new ContainerTypeSearchItem<O>(new SearchValue(objectType.getClassDefinition(),
"ObjectType." + objectType.getTypeQName().getLocalPart()),
allowedValues);
}
}
Expand Up @@ -4705,6 +4705,10 @@ public static Class<? extends PageBase> resolveSelfPage() {

public static <I extends Item> PrismObject<LookupTableType> findLookupTable(ItemDefinition<I> definition, PageBase page) {
PrismReferenceValue valueEnumerationRef = definition.getValueEnumerationRef();
return findLookupTable(valueEnumerationRef, page);
}

public static <I extends Item> PrismObject<LookupTableType> findLookupTable(PrismReferenceValue valueEnumerationRef, PageBase page) {
if (valueEnumerationRef == null) {
return null;
}
Expand Down
Expand Up @@ -147,8 +147,6 @@ protected LoadableModel<Search<C>> createSearchModel(){

private static final long serialVersionUID = 1L;

private Class <? extends C> type = defaultType;

@Override
public Search load() {
Search<C> search = null;
Expand All @@ -157,10 +155,12 @@ public Search load() {
if (storage != null) {
search = storage.getSearch();
}
Search<C> newSearch = createSearch(type);
Search<C> newSearch = createSearch(getType());
if (search == null ||
(!SearchBoxModeType.ADVANCED.equals(search.getSearchType()) && !search.getAllDefinitions().containsAll(newSearch.getAllDefinitions()))) {
(!SearchBoxModeType.ADVANCED.equals(search.getSearchType()) && !search.getAllDefinitions().containsAll(newSearch.getAllDefinitions()))
|| search.isTypeChanged()) {
search = newSearch;
search.searchWasReload();
}

String searchByName = getSearchByNameParameterValue();
Expand All @@ -180,17 +180,10 @@ public Search load() {
search.setCollectionSearchItem(new ObjectCollectionSearchItem(search, getObjectCollectionView()));
search.setCollectionItemVisible(isCollectionViewPanelForWidget());
}
return search;
}

@Override
public void reset() {
if (getObject() == null || getObject().getTypeClass() == null) {
type = defaultType;
} else {
type = getObject().getTypeClass();
if (storage != null) {
storage.setSearch(search);
}
super.reset();
return search;
}
};
}
Expand Down Expand Up @@ -737,7 +730,7 @@ protected SearchFormPanel initSearch(String headerId) {

@Override
protected void searchPerformed(AjaxRequestTarget target) {
ContainerableListPanel.this.searchPerformed(target);
ContainerableListPanel.this.refreshTable(target);
}

@Override
Expand Down Expand Up @@ -888,41 +881,8 @@ protected Collection<SelectorOptions<GetOperationOptions>> getOptions(){
return options;
}

@SuppressWarnings("deprecation")
private void searchPerformed(AjaxRequestTarget target) {
saveSearchModel(null);
Table table = getTable();
table.setCurrentPage(null);
target.add((Component) table);
target.add(getPageBase().getFeedbackPanel());

}

public void refreshTable(AjaxRequestTarget target) {
BoxedTablePanel<PO> table = getTable();
// if (isTypeChanged(newTypeClass)) {
// Class<C> newType = newTypeClass;
//
//// ISelectableDataProvider provider = getDataProvider();
//// provider.setQuery(createQuery());
// if (newType != null) {
// if (provider instanceof ContainerListDataProvider) {
// ((ContainerListDataProvider) provider).setType(newTypeClass);
// }
// if (provider instanceof SelectableBeanContainerDataProvider) {
// ((SelectableBeanContainerDataProvider) provider).setType(newTypeClass);
// }
// }
//
// ((WebMarkupContainer) table.get("box")).addOrReplace(initSearch("header"));
// if (newType != null && !getType().equals(newType)) {
// setType(newType);
// resetSearchModel();
// table.setCurrentPage(null);
// } else {
// saveSearchModel(getCurrentTablePaging());
// }
// }
if (searchModel.getObject().isTypeChanged()){
((WebMarkupContainer) table.get("box")).addOrReplace(initSearch("header"));
resetSearchModel();
Expand All @@ -943,7 +903,6 @@ protected boolean isTypeChanged(Class<C> newTypeClass){
public void resetSearchModel(){
PageStorage storage = getPageStorage();
if (storage != null) {
storage.setSearch(null);
storage.setPaging(null);
}

Expand Down
Expand Up @@ -23,6 +23,8 @@ public class QNameIChoiceRenderer implements IChoiceRenderer<QName> {

private String prefix;

public QNameIChoiceRenderer(){}

public QNameIChoiceRenderer(String prefix){
this.prefix = prefix;
}
Expand All @@ -36,7 +38,7 @@ public Object getDisplayValue(QName qname) {
String realPrefix = prefix != null && !prefix.isEmpty() ? (prefix + ".") : "";
String key = realPrefix + qname.getLocalPart();

return new ResourceModel(key, key).getObject();
return new ResourceModel(key, qname.getLocalPart()).getObject();
}

@Override
Expand Down
Expand Up @@ -21,6 +21,7 @@
import com.evolveum.midpoint.repo.api.RepositoryService;
import com.evolveum.midpoint.repo.common.expression.ExpressionVariables;
import com.evolveum.midpoint.schema.*;
import com.evolveum.midpoint.schema.expression.TypedValue;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.TaskManager;
import com.evolveum.midpoint.util.logging.Trace;
Expand Down Expand Up @@ -53,7 +54,7 @@ public abstract class BaseSearchDataProvider<C extends Containerable, T extends

private IModel<Search<C>> search;
private Class<C> oldType;
private ExpressionVariables variables = null;
private Map<String, Object> variables = new HashMap<>();

public BaseSearchDataProvider(Component component, IModel<Search<C>> search) {
this(component, search, false, true);
Expand All @@ -71,7 +72,15 @@ public BaseSearchDataProvider(Component component, IModel<Search<C>> search, boo

@Override
public ObjectQuery getQuery() {
return search.getObject() == null ? null : search.getObject().createObjectQuery(variables, getPageBase(), getCustomizeContentQuery());
ExpressionVariables expVariables = new ExpressionVariables();
for (Map.Entry<String, Object> entry : variables.entrySet()) {
if (entry.getValue() == null) {
expVariables.put(entry.getKey(), null, Object.class);
} else {
expVariables.put(entry.getKey(), entry.getValue(), entry.getValue().getClass());
}
}
return search.getObject() == null ? null : search.getObject().createObjectQuery(expVariables.isEmpty() ? null : expVariables, getPageBase(), getCustomizeContentQuery());
}

protected ObjectQuery getCustomizeContentQuery() {
Expand All @@ -95,8 +104,8 @@ public long size() {
// this.type = type;
// }

public void setQueryVariables(ExpressionVariables variables) {
this.variables = variables;
public void addQueryVariables(String name, Object value) {
this.variables.put(name, value);
}

}
Expand Up @@ -187,7 +187,7 @@ public String getCount() {

@Override
public WebMarkupContainer createPanel(String panelId) {
return createMemberPanel(panelId);
return createMemberPanel(panelId, parentPage);
}

@Override
Expand All @@ -205,7 +205,7 @@ public boolean isVisible() {

@Override
public WebMarkupContainer createPanel(String panelId) {
return createGovernancePanel(panelId);
return createGovernancePanel(panelId, parentPage);
}

@Override
Expand All @@ -217,9 +217,9 @@ public boolean isVisible() {
return tabs;
}

public AbstractRoleMemberPanel<R> createMemberPanel(String panelId) {
public AbstractRoleMemberPanel<R> createMemberPanel(String panelId, PageBase parentPage) {

return new AbstractRoleMemberPanel<R>(panelId, new Model<>(getObject().asObjectable())) {
return new AbstractRoleMemberPanel<R>(panelId, new Model<>(getObject().asObjectable()), parentPage) {

private static final long serialVersionUID = 1L;

Expand All @@ -228,12 +228,17 @@ protected AvailableRelationDto getSupportedRelations() {
return getSupportedMembersTabRelations();
}

@Override
protected String getStorageKeyTabSuffix() {
return "abstractRoleMembers";
}

};
}

public AbstractRoleMemberPanel<R> createGovernancePanel(String panelId) {
public AbstractRoleMemberPanel<R> createGovernancePanel(String panelId, PageBase parentPage) {

return new AbstractRoleMemberPanel<R>(panelId, new Model<>(getObject().asObjectable())) {
return new AbstractRoleMemberPanel<R>(panelId, new Model<>(getObject().asObjectable()), parentPage) {

private static final long serialVersionUID = 1L;

Expand All @@ -249,6 +254,11 @@ protected Map<String, String> getAuthorizations(QName complexType) {
return getGovernanceTabAuthorizations();
}

@Override
protected String getStorageKeyTabSuffix() {
return "abstractRoleGovernance";
}

};
}

Expand Down
Expand Up @@ -45,6 +45,7 @@ public abstract class AbstractSearchItemPanel<S extends SearchItem> extends Base
private static final long serialVersionUID = 1L;

private static final String ID_SEARCH_ITEM_CONTAINER = "searchItemContainer";
private static final String ID_SEARCH_ITEM_FIELD = "searchItemField";
private static final String ID_SEARCH_ITEM_LABEL = "searchItemLabel";
private static final String ID_HELP = "help";
private static final String ID_REMOVE_BUTTON = "removeButton";
Expand All @@ -59,7 +60,7 @@ protected void onInitialize() {
initLayout();
}

private void initLayout() {
protected void initLayout() {
setOutputMarkupId(true);

WebMarkupContainer searchItemContainer = new WebMarkupContainer(ID_SEARCH_ITEM_CONTAINER);
Expand Down Expand Up @@ -112,7 +113,9 @@ private IModel<String> createHelpModel(){
return Model.of(item.getHelp(getPageBase()));
}

protected abstract void initSearchItemField(WebMarkupContainer searchItemContainer);
protected void initSearchItemField(WebMarkupContainer searchItemContainer){
searchItemContainer.add(new WebMarkupContainer(ID_SEARCH_ITEM_FIELD));
}

protected boolean canRemoveSearchItem() {
return getModelObject().canRemoveSearchItem();
Expand Down Expand Up @@ -208,4 +211,14 @@ public void bind(Component component) {
return autoCompletePanel;
}

protected IModel<List<DisplayableValue<?>>> createEnumChoices(Class<? extends Enum> inputClass) {
Enum[] enumConstants = inputClass.getEnumConstants();
List<DisplayableValue<?>> list = new ArrayList<>();
for(int i = 0; i < enumConstants.length; i++){
list.add(new SearchValue<>(enumConstants[i], getString(enumConstants[i])));
}
return Model.ofList(list);

}

}
Expand Up @@ -7,6 +7,7 @@
package com.evolveum.midpoint.web.component.search;

import com.evolveum.midpoint.prism.ItemDefinition;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismPropertyDefinition;
import com.evolveum.midpoint.prism.PrismPropertyValue;
import com.evolveum.midpoint.repo.common.expression.ExpressionUtil;
Expand Down Expand Up @@ -51,14 +52,14 @@ public class FilterSearchItem extends SearchItem {


private SearchItemType predefinedFilter;
private boolean applyFilter;
private DisplayableValue<? extends Serializable> input = new SearchValue<>();
private List<DisplayableValue<?>> allowedValues = null;

public FilterSearchItem(Search search, @NotNull SearchItemType predefinedFilter) {
super(search);
Validate.notNull(predefinedFilter, "Filter must not be null.");
this.predefinedFilter = predefinedFilter;
setApplyFilter(false);
}

@Override
Expand Down Expand Up @@ -92,14 +93,6 @@ public void setPredefinedFilter(SearchItemType predefinedFilter) {
this.predefinedFilter = predefinedFilter;
}

public boolean isApplyFilter() {
return applyFilter;
}

public void setApplyFilter(boolean applyFilter) {
this.applyFilter = applyFilter;
}

@Override
public String getHelp(PageBase pageBase) {
return predefinedFilter.getDescription();
Expand Down Expand Up @@ -135,7 +128,7 @@ public Type getInputType(Class clazz, PageBase pageBase) {
@Override
public String toString() {
return "FilterSearchItem{" +
"applyFilter=" + applyFilter +
"applyFilter=" + isApplyFilter() +
", predefinedFilter=" + predefinedFilter +
", input=" + input +
'}';
Expand Down Expand Up @@ -184,10 +177,14 @@ public List<DisplayableValue<?>> getAllowedValues(PageBase pageBase) {
return (List<DisplayableValue<?>>) value;
}

public LookupTableType getLookupTable() {
// if (predefinedFilter != null && predefinedFilter.getParameter() != null) {
// return predefinedFilter.getParameter().getAllowedValuesLookupTable();
// }
public LookupTableType getLookupTable(PageBase pageBase) {
if (predefinedFilter != null && predefinedFilter.getParameter() != null
&& predefinedFilter.getParameter().getAllowedValuesLookupTable() != null) {
PrismObject<LookupTableType> lokupTable = WebComponentUtil.findLookupTable(predefinedFilter.getParameter().getAllowedValuesLookupTable().asReferenceValue(), pageBase);
if (lokupTable != null) {
return lokupTable.asObjectable();
}
}
return null;
}
}
Expand Up @@ -85,4 +85,8 @@ public void togglePopover(AjaxRequestTarget target, Component button, Component

target.appendJavaScript(script.toString());
}

public Boolean isItemPanelEnabled() {
return true;
}
}
Expand Up @@ -58,7 +58,9 @@ private void initLayout() {

@Override
public void onClick(AjaxRequestTarget target) {
confirmPerformed(target);
if (isItemPanelEnabled()) {
confirmPerformed(target);
}
}
};
midpointForm.add(confirm);
Expand All @@ -73,4 +75,8 @@ protected void confirmPerformed(AjaxRequestTarget target){

}

protected Boolean isItemPanelEnabled() {
return true;
}

}

0 comments on commit 7f95938

Please sign in to comment.