Skip to content

Commit

Permalink
dashboard widget changes
Browse files Browse the repository at this point in the history
  • Loading branch information
Kateryna Honchar committed Jul 19, 2022
1 parent 0b62aec commit 2e6975c
Showing 1 changed file with 48 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import com.evolveum.midpoint.gui.impl.component.ContainerableListPanel;
import com.evolveum.midpoint.gui.impl.component.search.Search;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.model.common.util.DefaultColumnUtils;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.PrismConstants;
import com.evolveum.midpoint.prism.PrismContext;
Expand All @@ -30,6 +31,7 @@
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.SecurityContextAwareCallable;
import com.evolveum.midpoint.web.component.data.ISelectableDataProvider;
import com.evolveum.midpoint.web.component.data.column.ColumnUtils;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.util.CallableResult;
import com.evolveum.midpoint.web.component.util.ContainerListDataProvider;
Expand All @@ -42,6 +44,7 @@
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.wicket.Component;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
Expand Down Expand Up @@ -146,17 +149,41 @@ private <C extends Containerable> AsyncDashboardPanel<Object, List<C>> initViewP
WebComponentUtil.getIconCssClass(view.getDisplay()), null) {

private static final long serialVersionUID = 1L;
private ContainerListDataProvider<C> provider = null;

private void initProvider() {
provider = new ContainerListDataProvider<>(this, null) {
private static final long serialVersionUID = 1L;

@Override
protected PageStorage getPageStorage() {
return null;
}

@Override
public ObjectQuery getQuery() {
OperationResult result = new OperationResult(OPERATION_LOAD_OBJECTS);
ObjectFilter collectionFilter = WebComponentUtil.evaluateExpressionsInFilter(view.getFilter(),
result, PageSelfDashboard.this); //todo only this filter? getDomainFilter? get filter from collection?
return getPrismContext().queryFactory().createQuery(collectionFilter);
}

};
}

@Override
protected SecurityContextAwareCallable<CallableResult<List<C>>> createCallable(
protected SecurityContextAwareCallable<CallableResult<List<PrismContainerValueWrapper<C>>>> createCallable(
Authentication auth, IModel callableParameterModel) {

return new SecurityContextAwareCallable<>(
getSecurityContextManager(), auth) {

@Override
public CallableResult<List<C>> callWithContextPrepared() {
return loadObjects(view);
public CallableResult<List<PrismContainerValueWrapper<C>>> callWithContextPrepared() {
if (provider == null) {
initProvider();
}
return loadObjects(provider);
}
};
}
Expand All @@ -175,7 +202,14 @@ protected void onBeforeRender() {

@Override
protected List<IColumn<PrismContainerValueWrapper<C>, String>> createDefaultColumns() {
return new ArrayList<>();
if (CollectionUtils.isNotEmpty(view.getColumns())) {
return getViewColumnsTransformed(view.getColumns());
}
GuiObjectListViewType defaultView = DefaultColumnUtils.getDefaultView(view.getTargetClass(PrismContext.get()));
if (defaultView == null) {
return null;
}
return getViewColumnsTransformed(defaultView.getColumn());
}

@Override
Expand All @@ -185,7 +219,10 @@ protected List<InlineMenuItem> createInlineMenu() {

@Override
protected ISelectableDataProvider<C, PrismContainerValueWrapper<C>> createProvider() {
return PageSelfDashboard.this.createProvider(view);
if (provider == null) {
initProvider();
}
return provider;
}

@Override
Expand Down Expand Up @@ -215,7 +252,7 @@ protected IColumn createCheckboxColumn() {

@Override
protected IColumn createIconColumn() {
return null;
return null; //todo fix
}

@Override
Expand Down Expand Up @@ -246,42 +283,21 @@ protected C getRowRealValue(PrismContainerValueWrapper<C> rowModelObject) {
return viewPanel;
}

private <C extends Containerable> CallableResult<List<C>> loadObjects(CompiledObjectCollectionView view) {
CallableResult callableResult = new CallableResult();
List<C> list = new ArrayList<>();
private <C extends Containerable> CallableResult<List<PrismContainerValueWrapper<C>>> loadObjects(ContainerListDataProvider<C> provider) {
CallableResult<List<PrismContainerValueWrapper<C>>> callableResult = new CallableResult<>();
List<PrismContainerValueWrapper<C>> list = new ArrayList<>();
callableResult.setValue(list);

Task task = createSimpleTask("loadObjectListForView");
Task task = createSimpleTask(OPERATION_LOAD_OBJECTS);
OperationResult result = task.getResult();
callableResult.setResult(result);

provider.internalIterator(0, provider.size()).forEachRemaining(list::add);

result.recordSuccessIfUnknown();
result.recomputeStatus();

return callableResult;
}

private <C extends Containerable> ContainerListDataProvider<C> createProvider(CompiledObjectCollectionView view) {
ContainerListDataProvider<C> provider = new ContainerListDataProvider<>(this, null) {
private static final long serialVersionUID = 1L;

@Override
protected PageStorage getPageStorage() {
return null;
}

@Override
public ObjectQuery getQuery() {
OperationResult result = new OperationResult(OPERATION_LOAD_OBJECTS);
ObjectFilter collectionFilter = WebComponentUtil.evaluateExpressionsInFilter(view.getFilter(),
result, PageSelfDashboard.this); //todo only this filter? getDomainFilter? get filter from collection?
return getPrismContext().queryFactory().createQuery(collectionFilter);
}

};
return provider;
}


}

0 comments on commit 2e6975c

Please sign in to comment.