Skip to content

Commit

Permalink
MID-7627: fix for report preview after click on 'Save and Run' button…
Browse files Browse the repository at this point in the history
… on PageReport
  • Loading branch information
skublik committed Feb 1, 2022
1 parent e885593 commit cf27a39
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;

import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.wicket.Component;
Expand Down Expand Up @@ -57,6 +60,8 @@
description = "PageReport.auth.report.description") })
public class PageReport extends PageAssignmentHolderDetails<ReportType, AssignmentHolderDetailsModel<ReportType>> {

private static final Trace LOGGER = TraceManager.getTrace(PageReport.class);

private static final String ID_TABLE_CONTAINER = "tableContainer";
private static final String ID_TABLE_BOX = "tableBox";
private static final String ID_REPORT_TABLE = "reportTable";
Expand Down Expand Up @@ -182,11 +187,14 @@ protected void runConfirmPerformed(AjaxRequestTarget target, PrismObject<ReportT
}

private PrismObject<ReportType> getReport(Collection<ObjectDeltaOperation<? extends ObjectType>> executedDeltas) {
if (getModelObjectType().getOid() != null) {
return getModelPrismObject();
try {
if (getModelObjectType().getOid() != null) {
return getModelWrapperObject().getObjectApplyDelta();
}
} catch (SchemaException e) {
LOGGER.error("Couldn't apply deltas to report.", e);
}
return (PrismObject<ReportType>) executedDeltas.iterator().next().getObjectDelta().getObjectToAdd();

}

private void runReport(PrismObject<ReportType> report, PrismContainer<ReportParameterType> reportParam) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ public class ReportObjectsListPanel<C extends Containerable> extends Containerab

private final IModel<ReportType> report;
private CompiledObjectCollectionView view;
private CompiledObjectCollectionView guiView;
private Map<String, Object> variables = new HashMap<>();
private ObjectListStorage pageStorage;

Expand All @@ -78,6 +79,8 @@ private void initView() {
try {
Task task = getPageBase().createSimpleTask("create compiled view");
view = getPageBase().getReportManager().createCompiledView(getReport().getObjectCollection(), true, task, task.getResult());
guiView = getPageBase().getCompiledGuiProfile().findObjectCollectionView(
view.getContainerType() == null ? ObjectType.COMPLEX_TYPE : view.getContainerType(), null);
} catch (Exception e) {
LOGGER.debug("Couldn't create compiled view for report " + getReport(), e);
}
Expand Down Expand Up @@ -167,6 +170,16 @@ protected Integer countObjects(Class<? extends C> type, ObjectQuery query, Colle
return getModelInteractionService().countObjectsFromCollection(getReport().getObjectCollection().getCollection(), qNameType, defaultOptions, null, variables, task, result);
}

@Override
protected boolean isUseObjectCounting() {
return !isDisableCounting();
}

@Override
public boolean isOrderingDisabled() {
return isDisableSorting();
}

@Override
public ObjectQuery getQuery() {
//fake query because of we need paging in method createDataObjectWrappers
Expand Down Expand Up @@ -194,6 +207,28 @@ public ObjectQuery getQuery() {
return provider;
}

private boolean isDisableCounting() {
Boolean disableCounting = null;
if (view != null) {
disableCounting =view.isDisableCounting();
}
if (disableCounting == null && guiView != null) {
disableCounting = guiView.isDisableCounting();
}
return Boolean.TRUE.equals(disableCounting);
}

private boolean isDisableSorting() {
Boolean disableSorting = null;
if (view != null) {
disableSorting =view.isDisableSorting();
}
if (disableSorting == null && guiView != null) {
disableSorting = guiView.isDisableSorting();
}
return Boolean.TRUE.equals(disableSorting);
}

private void processVariables(VariablesMap variablesMap) {
for (Map.Entry<String, Object> entry : variables.entrySet()) {
if (!variablesMap.containsKey(entry.getKey())) {
Expand Down

0 comments on commit cf27a39

Please sign in to comment.