diff --git a/config/initial-objects/000-system-configuration.xml b/config/initial-objects/000-system-configuration.xml
index 3d6814bd377..dfa28d0f829 100644
--- a/config/initial-objects/000-system-configuration.xml
+++ b/config/initial-objects/000-system-configuration.xml
@@ -54,11 +54,6 @@
OFF
org.hibernate.internal.ExceptionMapperStandardImpl
-
-
- OFF
- net.sf.jasperreports.engine.fill.JRFillDataset
-
diff --git a/gui/admin-gui/pom.xml b/gui/admin-gui/pom.xml
index 445193c6f8e..9f99f073e42 100644
--- a/gui/admin-gui/pom.xml
+++ b/gui/admin-gui/pom.xml
@@ -747,29 +747,6 @@
-
-
- net.sf.jasperreports
- jasperreports
-
-
- bouncycastle
- bcmail-jdk14
-
-
- bouncycastle
- bcprov-jdk14
-
-
- bouncycastle
- bctsp-jdk14
-
-
- org.bouncycastle
- bcprov-jdk15on
-
-
-
org.apache.poi
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/menu/LeftMenuPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/menu/LeftMenuPanel.java
index bcd6d85df98..99755980053 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/menu/LeftMenuPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/menu/LeftMenuPanel.java
@@ -396,14 +396,7 @@ private MainMenuItem createReportsItems() {
reportsMenu.addMenuItem(edit);
}
- if (classMatches(PageJasperReport.class)) {
- MenuItem configure = new MenuItem("PageAdmin.menu.top.reports.configure",
- PageJasperReport.class);
- reportsMenu.addMenuItem(configure);
- }
-
reportsMenu.addMenuItem(new MenuItem("PageAdmin.menu.top.reports.created", PageCreatedReports.class));
- reportsMenu.addMenuItem(new MenuItem("PageAdmin.menu.top.reports.new", PageNewReport.class));
// if (WebComponentUtil.isAuthorized(ModelAuthorizationAction.AUDIT_READ.getUrl())) {
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/panel/AutoCompleteReferencePanelFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/panel/AutoCompleteReferencePanelFactory.java
index 71f5ca79373..aeee61092c6 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/panel/AutoCompleteReferencePanelFactory.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/panel/AutoCompleteReferencePanelFactory.java
@@ -56,8 +56,9 @@ public Integer getOrder() {
@Override
public > boolean match(IW wrapper) {
- return QNameUtil.match(ObjectReferenceType.COMPLEX_TYPE, wrapper.getTypeName()) &&
- ReportConstants.NS_EXTENSION.equals(wrapper.getNamespace());
+ return QNameUtil.match(ObjectReferenceType.COMPLEX_TYPE, wrapper.getTypeName())
+ && ReportConstants.NS_EXTENSION.equals(wrapper.getNamespace())
+ && wrapper.getParent() == null;
}
@Override
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/init/InitialDataImport.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/init/InitialDataImport.java
index 9af2c76d0ea..77bc05f795c 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/init/InitialDataImport.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/init/InitialDataImport.java
@@ -28,7 +28,6 @@
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
-import com.evolveum.midpoint.schema.util.ReportTypeUtil;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.MiscUtil;
import com.evolveum.midpoint.util.exception.ObjectNotFoundException;
@@ -37,7 +36,6 @@
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType;
/**
* Imports initial data objects as needed, ignoring already imported objects.
@@ -103,10 +101,6 @@ private ImportResult importInitialObjectsResource(
String objectText = IOUtils.toString(resourceInputStream, StandardCharsets.UTF_8);
object = prismContext.parseObject(objectText);
}
- if (ReportType.class.equals(object.getCompileTimeClass())) {
- //noinspection unchecked
- ReportTypeUtil.applyDefinition((PrismObject) object, prismContext);
- }
return importObject(object, resource.getFilename(), task, mainResult, overwrite);
} catch (Exception ex) {
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageJasperReport.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageJasperReport.html
deleted file mode 100644
index da0b214909e..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageJasperReport.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageJasperReport.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageJasperReport.java
deleted file mode 100644
index a503cd31838..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageJasperReport.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- * Copyright (c) 2010-2015 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.web.page.admin.reports;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.evolveum.midpoint.gui.api.prism.wrapper.PrismObjectWrapper;
-import com.evolveum.midpoint.prism.delta.DeltaFactory;
-import com.evolveum.midpoint.util.MiscUtil;
-import com.evolveum.midpoint.web.component.form.MidpointForm;
-import com.evolveum.midpoint.web.page.admin.PageAdmin;
-
-import org.apache.wicket.RestartResponseException;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
-import org.apache.wicket.extensions.markup.html.tabs.ITab;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.util.string.StringValue;
-
-import com.evolveum.midpoint.gui.api.model.LoadableModel;
-import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
-import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
-import com.evolveum.midpoint.gui.impl.model.JasperTemplateModel;
-import com.evolveum.midpoint.prism.PrismObject;
-import com.evolveum.midpoint.prism.delta.ObjectDelta;
-import com.evolveum.midpoint.schema.result.OperationResult;
-import com.evolveum.midpoint.security.api.AuthorizationConstants;
-import com.evolveum.midpoint.task.api.Task;
-import com.evolveum.midpoint.util.logging.Trace;
-import com.evolveum.midpoint.util.logging.TraceManager;
-import com.evolveum.midpoint.web.application.AuthorizationAction;
-import com.evolveum.midpoint.web.application.PageDescriptor;
-import com.evolveum.midpoint.web.component.AjaxSubmitButton;
-import com.evolveum.midpoint.web.component.TabbedPanel;
-import com.evolveum.midpoint.web.page.admin.configuration.PageAdminConfiguration;
-import com.evolveum.midpoint.web.page.admin.reports.component.AceEditorPanel;
-import com.evolveum.midpoint.web.page.admin.reports.component.JasperReportConfigurationPanel;
-import com.evolveum.midpoint.web.page.admin.reports.component.ReportConfigurationPanel;
-import com.evolveum.midpoint.web.page.admin.reports.dto.ReportDto;
-import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType;
-
-/**
- * @author shood
- */
-@PageDescriptor(url = "/admin/jasperReport", encoder = OnePageParameterEncoder.class, action = {
- @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_REPORTS_ALL_URL,
- label = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_LABEL,
- description = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_DESCRIPTION),
- @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_REPORT_URL,
- label = "PageReport.auth.report.label",
- description = "PageReport.auth.report.description")})
-public class PageJasperReport extends PageAdmin {
-
- private static final Trace LOGGER = TraceManager.getTrace(PageJasperReport.class);
-
- private static final String DOT_CLASS = PageJasperReport.class.getName() + ".";
- private static final String OPERATION_LOAD_REPORT = DOT_CLASS + "loadReport";
- private static final String OPERATION_SAVE_REPORT = DOT_CLASS + "saveReport";
- private static final String OPERATION_VALIDATE_REPORT = DOT_CLASS + "validateReport";
-
- private static final String ID_MAIN_FORM = "mainForm";
- private static final String ID_TAB_PANEL = "tabPanel";
- private static final String ID_SAVE_BUTTON = "save";
- private static final String ID_CANCEL_BUTTON = "cancel";
-
- private LoadableModel model;
-
- public PageJasperReport() {
- model = new LoadableModel(false) {
-
- @Override
- protected ReportDto load() {
- return loadReport();
- }
- };
- }
-
- public PageJasperReport(final ReportDto reportDto) {
- model = new LoadableModel(reportDto, false) {
-
- @Override
- protected ReportDto load() {
- // never called
- return reportDto;
- }
- };
- }
-
- private ReportDto loadReport() {
- StringValue reportOid = getPageParameters().get(OnePageParameterEncoder.PARAMETER);
-
- Task task = createSimpleTask(OPERATION_LOAD_REPORT);
- OperationResult result = task.getResult();
- PrismObject prismReport = WebModelServiceUtils.loadObject(ReportType.class, reportOid.toString(),
- this, task, result);
-
- if (prismReport == null) {
- LOGGER.error("Couldn't load report.");
- throw new RestartResponseException(PageReports.class);
- }
-
- return new ReportDto(prismReport.asObjectable());
-
-// return prismReport;
- }
-
- @Override
- protected void onInitialize() {
- super.onInitialize();
- initLayout();
- }
-
- private void initLayout() {
- Form mainForm = new MidpointForm(ID_MAIN_FORM);
- add(mainForm);
-// ReportEngineSelectionType reportEngineType = model.getObject().getReportEngineType();
-
- List tabs = new ArrayList<>();
- tabs.add(new AbstractTab(createStringResource("PageReport.basic")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- return new ReportConfigurationPanel(panelId, model);
- }
- });
- if(model.getObject().getObject().asObjectable().getJasper() != null) {
- tabs.add(new AbstractTab(createStringResource("PageReport.jasperTemplate")) {
-
- private static final long serialVersionUID = 1L;
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- return new JasperReportConfigurationPanel(panelId, model);
-// IModel title = PageReport.this.createStringResource("PageReport.jasperTemplate");
-// IModel data = new Base64Model(new PrismPropertyModel<>(model, ReportType.F_TEMPLATE));
-// return new AceEditorPanel(panelId, title, data);
- }
- });
- tabs.add(new AbstractTab(createStringResource("PageReport.jasperTemplateStyle")) {
-
- private static final long serialVersionUID = 1L;
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- IModel title = PageJasperReport.this.createStringResource("PageReport.jasperTemplateStyle");
- IModel data = new JasperTemplateModel(new PropertyModel(model, "templateStyle"));
- return new AceEditorPanel(panelId, title, data);
- }
- });
- }
-
-// tabs.add(new AbstractTab(createStringResource("PageReport.fullXml")) {
-//
-// @Override
-// public WebMarkupContainer getPanel(String panelId) {
-// IModel title = PageReport.this.createStringResource("PageReport.fullXml");
-//
-// AceEditorPanel panel = new AceEditorPanel(panelId, title, createFullXmlModel());
-// panel.getEditor().add(createFullXmlValidator());
-// return panel;
-// }
-// });
-
- TabbedPanel reportTabPanel = WebComponentUtil.createTabPanel(ID_TAB_PANEL, this, tabs, null);
- reportTabPanel.setOutputMarkupId(true);
-
- mainForm.add(reportTabPanel);
-
- initButtons(mainForm);
- }
-
-// private IValidator createFullXmlValidator() {
-// return (IValidator) validatable -> {
-// String value = validatable.getValue();
-//
-// OperationResult result = new OperationResult(OPERATION_VALIDATE_REPORT);
-// Holder reportHolder = new Holder<>(null);
-//
-// OpResult opResult;
-// try {
-// validateObject(value, reportHolder, PrismContext.LANG_XML, true, ReportType.class, result);
-//
-// if (!result.isAcceptable()) {
-// result.recordFatalError("Could not validate object", result.getCause());
-// opResult = OpResult.getOpResult((PageBase)getPage(),result);
-// validatable.error(new RawValidationError(opResult));
-// }
-// } catch (Exception e) {
-// LOGGER.error("Validation problem occurred." + e.getMessage());
-// result.recordFatalError("Could not validate object.", e);
-// try {
-// opResult = OpResult.getOpResult((PageBase) getPage(), result);
-// validatable.error(new RawValidationError(opResult));
-// } catch (Exception ex) {
-// error(ex);
-// }
-// }
-// };
-// }
-
-// private IModel createFullXmlModel() {
-// return new IModel() {
-//
-// @Override
-// public String getObject() {
-// PrismObject report = model.getObject().getObject();
-// if (report == null) {
-// return null;
-// }
-//
-// try {
-// return getPrismContext().serializeObjectToString(report, PrismContext.LANG_XML);
-// } catch (SchemaException ex) {
-// getSession().error(getString("PageReport.message.cantSerializeFromObjectToString") + ex);
-// throw new RestartResponseException(PageError.class);
-// }
-// }
-//
-// @Override
-// public void setObject(String object) {
-// OperationResult result = new OperationResult(OPERATION_VALIDATE_REPORT);
-// Holder reportHolder = new Holder<>(null);
-//
-// try {
-// validateObject(object, reportHolder, PrismContext.LANG_XML, true, ReportType.class, result);
-// model.getObject().setObject(reportHolder.getValue().asPrismObject());
-// } catch (Exception e){
-// LOGGER.error("Could not set object. Validation problem occurred." + result.getMessage());
-// result.recordFatalError("Could not set object. Validation problem occurred,", e);
-// showResult(result, "Could not set object. Validation problem occurred.");
-// }
-// }
-//
-// @Override
-// public void detach() {
-// }
-// };
-// }
-
- private void initButtons(Form mainForm) {
- AjaxSubmitButton save = new AjaxSubmitButton(ID_SAVE_BUTTON, createStringResource("PageBase.button.save")) {
-
- @Override
- protected void onError(AjaxRequestTarget target) {
- target.add(getFeedbackPanel());
- }
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- onSavePerformed(target);
- }
- };
- mainForm.add(save);
-
- AjaxSubmitButton cancel = new AjaxSubmitButton(ID_CANCEL_BUTTON, createStringResource("PageBase.button.cancel")) {
-
- @Override
- protected void onError(AjaxRequestTarget target) {
- target.add(getFeedbackPanel());
- }
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- onCancelPerformed(target);
- }
- };
- mainForm.add(cancel);
- }
-
- protected void onSavePerformed(AjaxRequestTarget target) {
- Task task = createSimpleTask(OPERATION_SAVE_REPORT);
- OperationResult result = task.getResult();
- try {
-
- //TODO TODO TODO
- PrismObject newReport = model.getObject().getObject();
- ObjectDelta delta = null;
- if(model.getObject().getObject().asObjectable().getJasper() != null) {
- if (newReport.getOid() == null) {
- getPrismContext().adopt(newReport);
- delta = DeltaFactory.Object.createAddDelta(newReport);
- delta.setPrismContext(getPrismContext());
- } else {
- PrismObject oldReport = WebModelServiceUtils.loadObject(ReportType.class,
- newReport.getOid(), this, task, result);
-
- if (oldReport != null) {
- delta = oldReport.diff(newReport);
- }
- }
- } else {
- IModel> newPrismReport = model.getObject().getNewReportModel();
- delta = newPrismReport.getObject().getObjectDelta();
- }
- if (delta != null) {
- getPrismContext().adopt(delta);
- getModelService().executeChanges(MiscUtil.createCollection(delta), null, task, result);
- }
-
- } catch (Exception e) {
- result.recordFatalError(getString("PageReport.message.couldNotSaveReport"), e);
-
- } finally {
- result.computeStatusIfUnknown();
- }
-
- if (WebComponentUtil.isSuccessOrHandledError(result)) {
- showResult(result);
- redirectBack();
- } else {
- showResult(result);
- target.add(getFeedbackPanel());
- }
- }
-
- protected void onCancelPerformed(AjaxRequestTarget target) {
- redirectBack();
- }
-}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageNewReport.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageNewReport.html
deleted file mode 100644
index 5bd1c95691d..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageNewReport.html
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageNewReport.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageNewReport.java
deleted file mode 100644
index 2adb35080dd..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageNewReport.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * Copyright (C) 2010-2020 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.web.page.admin.reports;
-
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
-
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.io.input.ReaderInputStream;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.wicket.Component;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.Radio;
-import org.apache.wicket.markup.html.form.RadioGroup;
-import org.apache.wicket.markup.html.form.upload.FileUpload;
-import org.apache.wicket.markup.html.form.upload.FileUploadField;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.util.file.File;
-
-import com.evolveum.midpoint.schema.result.OperationResult;
-import com.evolveum.midpoint.security.api.AuthorizationConstants;
-import com.evolveum.midpoint.util.logging.LoggingUtils;
-import com.evolveum.midpoint.util.logging.Trace;
-import com.evolveum.midpoint.util.logging.TraceManager;
-import com.evolveum.midpoint.web.application.AuthorizationAction;
-import com.evolveum.midpoint.web.application.PageDescriptor;
-import com.evolveum.midpoint.web.component.AceEditor;
-import com.evolveum.midpoint.web.component.AjaxSubmitButton;
-import com.evolveum.midpoint.web.component.form.MidpointForm;
-import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
-import com.evolveum.midpoint.web.page.admin.PageAdmin;
-import com.evolveum.midpoint.web.page.admin.configuration.PageAdminConfiguration;
-import com.evolveum.midpoint.web.page.admin.reports.dto.ReportDto;
-import com.evolveum.midpoint.web.security.MidPointApplication;
-import com.evolveum.midpoint.web.security.WebApplicationConfiguration;
-
-@PageDescriptor(url = "/admin/reports/create", action = {
- @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_REPORTS_ALL_URL,
- label = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_LABEL,
- description = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_DESCRIPTION),
- @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_REPORTS_REPORT_CREATE_URL,
- label = "PageNewReport.auth.reports.label",
- description = "PageNewReport.auth.reports.description") })
-public class PageNewReport extends PageAdmin {
-
- private static final Trace LOGGER = TraceManager.getTrace(PageNewReport.class);
-
- private static final String ID_MAIN_FORM = "mainForm";
- private static final String ID_BUTTON_BAR = "buttonBar";
- private static final String ID_IMPORT_RADIO_GROUP = "importRadioGroup";
- private static final String ID_FILE_RADIO = "fileRadio";
- private static final String ID_XML_RADIO = "xmlRadio";
- private static final String ID_IMPORT_FILE_BUTTON = "importFileButton";
- private static final String ID_IMPORT_XML_BUTTON = "importXmlButton";
- private static final String ID_INPUT = "input";
- private static final String ID_INPUT_ACE = "inputAce";
- private static final String ID_ACE_EDITOR = "aceEditor";
- private static final String ID_INPUT_FILE_LABEL = "inputFileLabel";
- private static final String ID_INPUT_FILE = "inputFile";
- private static final String ID_FILE_INPUT = "fileInput";
-
- private static final String OPERATION_IMPORT_REPORT_XML = "Import Report from XML";
- private static final String OPERATION_IMPORT_REPORT = "Import Report from file";
-
- private static final Integer INPUT_FILE = 1;
- private static final Integer INPUT_XML = 2;
-
- private final Model xmlEditorModel;
-
- public PageNewReport() {
- xmlEditorModel = new Model<>(null);
-
- initLayout();
- }
-
- private void initLayout() {
- Form mainForm = new MidpointForm(ID_MAIN_FORM);
- add(mainForm);
-
- final WebMarkupContainer input = new WebMarkupContainer(ID_INPUT);
- input.setOutputMarkupId(true);
- mainForm.add(input);
-
- final WebMarkupContainer buttonBar = new WebMarkupContainer(ID_BUTTON_BAR);
- buttonBar.setOutputMarkupId(true);
- mainForm.add(buttonBar);
-
- final IModel groupModel = new Model<>(INPUT_FILE);
- RadioGroup importRadioGroup = new RadioGroup<>(ID_IMPORT_RADIO_GROUP, groupModel);
- importRadioGroup.add(new AjaxFormChoiceComponentUpdatingBehavior() {
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- target.add(input);
- target.add(buttonBar);
- }
- });
- mainForm.add(importRadioGroup);
-
- Radio fileRadio = new Radio<>(ID_FILE_RADIO, new Model<>(INPUT_FILE), importRadioGroup);
- importRadioGroup.add(fileRadio);
-
- Radio xmlRadio = new Radio<>(ID_XML_RADIO, new Model<>(INPUT_XML), importRadioGroup);
- importRadioGroup.add(xmlRadio);
-
- WebMarkupContainer inputAce = new WebMarkupContainer(ID_INPUT_ACE);
- addVisibleForInputType(inputAce, INPUT_XML, groupModel);
- input.add(inputAce);
-
- AceEditor aceEditor = new AceEditor(ID_ACE_EDITOR, xmlEditorModel);
- aceEditor.setOutputMarkupId(true);
- inputAce.add(aceEditor);
-
- WebMarkupContainer inputFileLabel = new WebMarkupContainer(ID_INPUT_FILE_LABEL);
- addVisibleForInputType(inputFileLabel, INPUT_FILE, groupModel);
- input.add(inputFileLabel);
-
- WebMarkupContainer inputFile = new WebMarkupContainer(ID_INPUT_FILE);
- addVisibleForInputType(inputFile, INPUT_FILE, groupModel);
- input.add(inputFile);
-
- FileUploadField fileInput = new FileUploadField(ID_FILE_INPUT);
- inputFile.add(fileInput);
-
- initButtons(buttonBar, groupModel);
- }
-
- private void addVisibleForInputType(Component comp, final Integer type, final IModel groupModel) {
- comp.add(new VisibleEnableBehaviour() {
- @Override
- public boolean isVisible() {
- return type.equals(groupModel.getObject());
- }
- });
- }
-
- private void initButtons(WebMarkupContainer buttonBar, IModel inputType) {
- AjaxSubmitButton saveFileButton = new AjaxSubmitButton(ID_IMPORT_FILE_BUTTON,
- createStringResource("PageNewReport.button.import")) {
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- importReportFromFilePerformed(target);
- }
-
- @Override
- protected void onError(AjaxRequestTarget target) {
- target.add(getFeedbackPanel());
- }
- };
- addVisibleForInputType(saveFileButton, INPUT_FILE, inputType);
- buttonBar.add(saveFileButton);
-
- AjaxSubmitButton saveXmlButton = new AjaxSubmitButton(ID_IMPORT_XML_BUTTON,
- createStringResource("PageNewReport.button.import")) {
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- importReportFromStreamPerformed(target);
- }
-
- @Override
- protected void onError(AjaxRequestTarget target) {
- target.add(getFeedbackPanel());
- }
- };
- addVisibleForInputType(saveXmlButton, INPUT_XML, inputType);
- buttonBar.add(saveXmlButton);
- }
-
- private void importReportFromFilePerformed(AjaxRequestTarget target) {
- OperationResult result = new OperationResult(OPERATION_IMPORT_REPORT);
-
- FileUploadField file = (FileUploadField) get(createComponentPath(ID_MAIN_FORM, ID_INPUT, ID_INPUT_FILE, ID_FILE_INPUT));
- final FileUpload uploadedFile = file.getFileUpload();
- if (uploadedFile == null) {
- error(getString("PageNewReport.message.nullFile"));
- target.add(getFeedbackPanel());
-
- return;
- }
-
- File newFile = null;
- try {
- // Create new file
- MidPointApplication application = getMidpointApplication();
- WebApplicationConfiguration config = application.getWebApplicationConfiguration();
- File folder = new File(config.getImportFolder());
- if (!folder.exists() || !folder.isDirectory()) {
- folder.mkdir();
- }
-
- newFile = new File(folder, uploadedFile.getClientFileName());
- // Check new file, delete if it already exists
- if (newFile.exists()) {
- newFile.delete();
- }
- // Save file
- newFile.createNewFile();
- FileUtils.copyInputStreamToFile(uploadedFile.getInputStream(), newFile);
-
- InputStreamReader reader = new InputStreamReader(new FileInputStream(newFile), StandardCharsets.UTF_8);
- try (InputStream stream = new ReaderInputStream(reader, reader.getEncoding())) {
- byte[] reportIn = IOUtils.toByteArray(stream);
-
- setResponsePage(new PageJasperReport(new ReportDto(Base64.encodeBase64(reportIn))));
- }
- } catch (Exception ex) {
- result.recordFatalError(getString("PageImportObject.message.savePerformed.fatalError"), ex);
- LoggingUtils.logUnexpectedException(LOGGER, "Couldn't import file", ex);
- } finally {
- FileUtils.deleteQuietly(newFile);
- }
-
- showResult(result);
- target.add(getFeedbackPanel());
- }
-
- private void importReportFromStreamPerformed(AjaxRequestTarget target) {
- String xml = xmlEditorModel.getObject();
- if (StringUtils.isEmpty(xml)) {
- error(getString("PageNewReport.message.emptyXml"));
- target.add(getFeedbackPanel());
-
- return;
- }
-
- OperationResult result = new OperationResult(OPERATION_IMPORT_REPORT_XML);
- try {
- setResponsePage(new PageJasperReport(new ReportDto(Base64.encodeBase64(xml.getBytes()))));
- } catch (Exception ex) {
- result.recordFatalError(getString("PageNewReport.message.importReportFromStreamPerformed.fatalError"), ex);
- LoggingUtils.logUnexpectedException(LOGGER, "Error occurred during xml import", ex);
- }
-
- if (result.isSuccess()) {
- xmlEditorModel.setObject(null);
- }
-
- showResult(result);
- target.add(getFeedbackPanel());
- }
-}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageReports.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageReports.java
index 8f8ff00970b..1c5eb9b8301 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageReports.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageReports.java
@@ -85,11 +85,7 @@ private void initLayout() {
protected void objectDetailsPerformed(AjaxRequestTarget target, ReportType reportType) {
PageParameters pageParameters = new PageParameters();
pageParameters.add(OnePageParameterEncoder.PARAMETER, reportType.getOid());
- if (reportType.getJasper() != null) {
- navigateToNext(PageJasperReport.class, pageParameters);
- } else {
- navigateToNext(PageReport.class, pageParameters);
- }
+ navigateToNext(PageReport.class, pageParameters);
}
@Override
@@ -312,6 +308,6 @@ protected void runConfirmPerformed(AjaxRequestTarget target, ReportType reportTy
private void configurePerformed(AjaxRequestTarget target, ReportType report) {
PageParameters params = new PageParameters();
params.add(OnePageParameterEncoder.PARAMETER, report.getOid());
- navigateToNext(PageJasperReport.class, params);
+ navigateToNext(PageReport.class, params);
}
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/DashboardReportBasicConfigurationPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/DashboardReportBasicConfigurationPanel.html
deleted file mode 100644
index d94723c7f80..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/DashboardReportBasicConfigurationPanel.html
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/DashboardReportBasicConfigurationPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/DashboardReportBasicConfigurationPanel.java
deleted file mode 100644
index 194088228e7..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/DashboardReportBasicConfigurationPanel.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (c) 2010-2019 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.web.page.admin.reports.component;
-
-import com.evolveum.midpoint.gui.api.component.BasePanel;
-import com.evolveum.midpoint.gui.api.factory.wrapper.PrismObjectWrapperFactory;
-import com.evolveum.midpoint.gui.api.factory.wrapper.WrapperContext;
-import com.evolveum.midpoint.gui.api.page.PageBase;
-import com.evolveum.midpoint.gui.api.prism.ItemStatus;
-import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper;
-import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper;
-import com.evolveum.midpoint.gui.api.prism.wrapper.PrismObjectWrapper;
-import com.evolveum.midpoint.gui.impl.prism.panel.ItemPanelSettings;
-import com.evolveum.midpoint.gui.impl.prism.panel.ItemPanelSettingsBuilder;
-import com.evolveum.midpoint.gui.impl.prism.panel.SingleContainerPanel;
-import com.evolveum.midpoint.prism.path.ItemPath;
-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.web.component.form.TextAreaFormGroup;
-import com.evolveum.midpoint.web.component.form.TextFormGroup;
-import com.evolveum.midpoint.web.component.form.ValueChoosePanel;
-import com.evolveum.midpoint.web.component.objectdetails.AssignmentHolderTypeDetailsTabPanel;
-import com.evolveum.midpoint.web.component.prism.ItemVisibility;
-import com.evolveum.midpoint.web.model.PrismContainerWrapperModel;
-import com.evolveum.midpoint.web.page.admin.reports.dto.ReportDto;
-import com.evolveum.midpoint.web.page.login.PageLogin;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
-
-import org.apache.wicket.RestartResponseException;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
-
-import java.util.Arrays;
-import java.util.List;
-
-import javax.xml.namespace.QName;
-
-/**
- * @author skublik
- *
- */
-public class DashboardReportBasicConfigurationPanel extends BasePanel {
-
- private static final Trace LOGGER = TraceManager.getTrace(DashboardReportBasicConfigurationPanel.class);
-
- private static final String ID_PANEL = "panel";
- private static final String ID_EXPORT = "export";
- private static final String ID_DASHBOARD = "dashboard";
- private static final String ID_COLLECTION = "collection";
- private static final String ID_NAME = "name";
- private static final String ID_DESCRIPTION = "description";
-// private static final String ID_DASHBOARD = "dashboard";
- private static final String ID_LABEL_SIZE = "col-md-2";
- private static final String ID_INPUT_SIZE = "col-md-10";
-
- public DashboardReportBasicConfigurationPanel(String id, IModel model) {
- super(id, model);
- }
-
- @Override
- protected void onInitialize() {
- super.onInitialize();
- initLayout();
- }
-
- protected void initLayout() {
- Task task = getPageBase().createSimpleTask("Create report wrapper");
- PrismObjectWrapperFactory factory = getPageBase().findObjectWrapperFactory(getModel().getObject().getObject().getDefinition());
-
- WrapperContext context = new WrapperContext(task, task.getResult());
- context.setCreateIfEmpty(true);
- PrismObjectWrapper objectWrapper = null;
- try {
- objectWrapper = factory.createObjectWrapper(getModel().getObject().getObject(), ItemStatus.NOT_CHANGED, context);
-
- IModel> objectWrapperModel = Model.of(objectWrapper);
- ItemPanelSettingsBuilder builder = new ItemPanelSettingsBuilder().visibilityHandler(this::getBasicTabVisibity);
- add (getPageBase().initItemPanel(ID_PANEL, FileFormatConfigurationType.COMPLEX_TYPE,
- objectWrapperModel, builder.build()));
- getModel().getObject().setNewReportModel(objectWrapperModel);
- Panel fileFormat = getPageBase().initItemPanel(ID_EXPORT, FileFormatConfigurationType.COMPLEX_TYPE,
- PrismContainerWrapperModel.fromContainerWrapper(objectWrapperModel, ReportType.F_FILE_FORMAT), new ItemPanelSettingsBuilder().build());
- add(fileFormat);
- Panel dashboard = getPageBase().initItemPanel(ID_DASHBOARD, DashboardReportEngineConfigurationType.COMPLEX_TYPE,
- PrismContainerWrapperModel.fromContainerWrapper(objectWrapperModel, ItemPath.create(ReportType.F_DASHBOARD)), new ItemPanelSettingsBuilder().build());
- add(dashboard);
- Panel collection = getPageBase().initItemPanel(ID_COLLECTION, ObjectCollectionReportEngineConfigurationType.COMPLEX_TYPE,
- PrismContainerWrapperModel.fromContainerWrapper(objectWrapperModel, ItemPath.create(ReportType.F_OBJECT_COLLECTION)), new ItemPanelSettingsBuilder().build());
- add(collection);
- } catch (SchemaException e) {
- LOGGER.error("Could not create report details panel. Reason: {}", e.getMessage(), e);
- }
- }
-
-// TextFormGroup name = new TextFormGroup(ID_NAME, new PropertyModel<>(getModel(), ID_NAME),
-// createStringResource("ObjectType.name"), ID_LABEL_SIZE, ID_INPUT_SIZE, true);
-// add(name);
-//
-// TextAreaFormGroup description = new TextAreaFormGroup(ID_DESCRIPTION,
-// new PropertyModel<>(getModel(), ID_DESCRIPTION),
-// createStringResource("ObjectType.description"), ID_LABEL_SIZE, ID_INPUT_SIZE, false);
-// add(description);
-//
-// ValueChoosePanel panel =
-// new ValueChoosePanel(ID_DASHBOARD,
-// new PropertyModel(getModel(), ReportDto.F_DASHBOARD_REF)) {
-//
-// private static final long serialVersionUID = 1L;
-//
-// @Override
-// public List getSupportedTypes() {
-// return Arrays.asList(DashboardType.COMPLEX_TYPE);
-// }
-//
-//
-// @Override
-// protected Class getDefaultType(List supportedTypes) {
-// return (Class) DashboardType.class;
-// }
-//
-// };
-// add(panel);
-//
-// }
-
- private ItemVisibility getBasicTabVisibity(ItemWrapper itemWrapper) {
- if(itemWrapper.getPath().isSubPathOrEquivalent(ItemPath.create(ItemPath.EMPTY_PATH, ReportType.F_DESCRIPTION))
- || itemWrapper.getPath().isSubPathOrEquivalent(ItemPath.create(ItemPath.EMPTY_PATH, ReportType.F_NAME))
- || itemWrapper.getPath().isSubPathOrEquivalent(ItemPath.create(ItemPath.EMPTY_PATH, ReportType.F_DOCUMENTATION))) {
-
- return ItemVisibility.AUTO;
- }
-
- return ItemVisibility.HIDDEN;
- }
-}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/EngineReportTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/EngineReportTabPanel.java
index 8b83383d1bb..1145f4a3fd2 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/EngineReportTabPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/EngineReportTabPanel.java
@@ -7,10 +7,14 @@
package com.evolveum.midpoint.web.page.admin.reports.component;
import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper;
+import com.evolveum.midpoint.gui.api.prism.wrapper.PrismObjectValueWrapper;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismObjectWrapper;
import com.evolveum.midpoint.gui.impl.prism.panel.SingleContainerPanel;
import com.evolveum.midpoint.gui.impl.prism.wrapper.ItemWrapperImpl;
import com.evolveum.midpoint.prism.Containerable;
+import com.evolveum.midpoint.prism.ItemDefinition;
+import com.evolveum.midpoint.prism.PrismContainerDefinition;
+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.web.component.ObjectBasicPanel;
@@ -41,87 +45,41 @@ public class EngineReportTabPanel extends ObjectBasicPanel {
private static final Trace LOGGER = TraceManager.getTrace(EngineReportTabPanel.class);
-// private static final String ID_REPORT_TYPE = "reportType";
private static final String ID_ENGINES = "engines";
private static final String ID_ENGINE = "engine";
-// private static final String ID_LABEL_SIZE = "col-md-2";
-// private static final String ID_INPUT_SIZE = "col-md-10";
-
public EngineReportTabPanel(String id, IModel> model) {
super(id, model);
}
@Override
protected void initLayout() {
- List engines = getEngines();
-// IChoiceRenderer renderer = new ChoiceRenderer("displayName", "typeClass"){
-// @Override
-// public Object getDisplayValue(ItemWrapper object) {
-// if (object.getDisplayName() == null) {
-// return "";
-// }
-// return getPageBase().createStringResource(object.getDisplayName()).getString();
-// }
-// };
-//
-// IModel engine = getActualEngine(engines);
-// DropDownFormGroup reportTypePanel = new DropDownFormGroup(ID_REPORT_TYPE, engine, Model.ofList(engines), renderer,
-// createStringResource("EngineReportTabPanel.TypeOfReport"), ID_LABEL_SIZE, ID_INPUT_SIZE, false);
-// reportTypePanel.setOutputMarkupId(true);
-
- ListView engineView = new ListView(ID_ENGINES, Model.ofList(engines)) {
+ ListView engineView = new ListView(ID_ENGINES, Model.ofList(getEngines())) {
@Override
protected void populateItem(ListItem listItem) {
PrismContainerWrapperModel model =
PrismContainerWrapperModel.fromContainerWrapper(EngineReportTabPanel.this.getModel(), listItem.getModelObject().getPath());
SingleContainerPanel enginePanel = new SingleContainerPanel(ID_ENGINE, model, listItem.getModelObject().getTypeName());
-// enginePanel.add(new VisibleEnableBehaviour(){
-//
-// @Override
-// public boolean isVisible() {
-// return engine.getObject() != null && listItem.getModelObject().getPath().equivalent(engine.getObject().getPath());
-// }
-// });
listItem.add(enginePanel);
}
};
-
-
engineView.setOutputMarkupId(true);
add(engineView);
-
-// reportTypePanel.getInput().add(new AjaxFormComponentUpdatingBehavior("change"){
-//
-// @Override
-// protected void onUpdate(AjaxRequestTarget ajaxRequestTarget) {
-//// ajaxRequestTarget.add(reportTypePanel);
-// ajaxRequestTarget.add(EngineReportTabPanel.this);
-// }
-// });
-// reportTypePanel.add(new VisibleEnableBehaviour(){
-// @Override
-// public boolean isVisible() {
-// return engine.getObject() == null;
-// }
-// });
-// add(reportTypePanel);
- }
-
- private IModel getActualEngine(List engines) {
- for (ItemWrapper engine : engines) {
- if (engine instanceof ItemWrapperImpl && !((ItemWrapperImpl)engine).getOldItem().isEmpty()){
- return Model.of(engine);
- }
- }
- return Model.of();
}
private List getEngines() {
List items = new ArrayList<>();
- for (ItemWrapper item : getModel ().getObject().getValue().getContainers()) {
- if (item.getTypeClass() != null && AbstractReportEngineConfigurationType.class.isAssignableFrom(item.getTypeClass())) {
- items.add(item);
+ PrismObjectValueWrapper value = getModel().getObject().getValue();
+ for (ItemDefinition containerDef : getModel().getObject().getValue().getDefinition().getDefinitions()){
+ if (!(containerDef instanceof PrismContainerDefinition)) {
+ continue;
+ }
+ if (containerDef.getTypeClass() != null && AbstractReportEngineConfigurationType.class.isAssignableFrom(containerDef.getTypeClass())) {
+ try {
+ items.add(value.findContainer(containerDef.getItemName()));
+ } catch (SchemaException e) {
+ LOGGER.trace("Couldn't find container with name", e);
+ }
}
}
return items;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/JasperReportBasicConfigurationPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/JasperReportBasicConfigurationPanel.html
deleted file mode 100644
index d33b6aee00e..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/JasperReportBasicConfigurationPanel.html
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/JasperReportBasicConfigurationPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/JasperReportBasicConfigurationPanel.java
deleted file mode 100644
index e080e3c27b2..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/JasperReportBasicConfigurationPanel.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (c) 2010-2013 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.web.page.admin.reports.component;
-
-import com.evolveum.midpoint.gui.api.component.BasePanel;
-import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
-import com.evolveum.midpoint.web.component.form.DropDownFormGroup;
-import com.evolveum.midpoint.web.component.form.TextAreaFormGroup;
-import com.evolveum.midpoint.web.component.form.TextFormGroup;
-import com.evolveum.midpoint.web.page.admin.reports.dto.ReportDto;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.JasperExportType;
-
-import org.apache.wicket.markup.html.form.ChoiceRenderer;
-import org.apache.wicket.markup.html.form.EnumChoiceRenderer;
-import org.apache.wicket.markup.html.form.IChoiceRenderer;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.PropertyModel;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author shood
- * @author lazyman
- *
- */
-public class JasperReportBasicConfigurationPanel extends BasePanel {
-
- private static final String ID_NAME = "name";
- private static final String ID_DESCRIPTION = "description";
- private static final String ID_EXPORT_TYPE = "exportType";
- private static final String ID_VIRTUALIZER = "virtualizer";
- private static final String ID_VIRTUALIZER_KICKON = "virtualizerKickOn";
- private static final String ID_MAXPAGES = "maxPages";
- private static final String ID_PROPERTIES = "properties";
- private static final String ID_USE_HIBERNATE_SESSION = "useHibernateSession";
- private static final String ID_ORIENTATION = "orientation";
- private static final String ID_TIMEOUT = "timeout";
-
- private static final String ID_SEARCH_ON_RESOURCE = "searchOnResource";
- private static final String ID_LABEL_SIZE = "col-md-4";
- private static final String ID_INPUT_SIZE = "col-md-8";
-
- public JasperReportBasicConfigurationPanel(String id, IModel model) {
- super(id, model);
- initLayout();
- }
-
- protected void initLayout() {
- TextFormGroup name = new TextFormGroup(ID_NAME, new PropertyModel<>(getModel(), ID_NAME),
- createStringResource("ObjectType.name"), ID_LABEL_SIZE, ID_INPUT_SIZE, true);
- add(name);
-
- TextAreaFormGroup description = new TextAreaFormGroup(ID_DESCRIPTION,
- new PropertyModel<>(getModel(), ID_DESCRIPTION),
- createStringResource("ObjectType.description"), ID_LABEL_SIZE, ID_INPUT_SIZE, false);
- add(description);
-
- IModel choices = WebComponentUtil.createReadonlyValueModelFromEnum(JasperExportType.class, e -> e != JasperExportType.JXL);
- IChoiceRenderer renderer = new EnumChoiceRenderer();
- DropDownFormGroup exportType = new DropDownFormGroup(ID_EXPORT_TYPE, new PropertyModel(getModel(), ReportDto.F_EXPORT_TYPE), choices, renderer,
- createStringResource("ReportType.export"), ID_LABEL_SIZE, ID_INPUT_SIZE, true);
- add(exportType);
-
- TextFormGroup virtualizerKickOn = null;
- DropDownFormGroup virtualizer = new DropDownFormGroup(ID_VIRTUALIZER, new PropertyModel(getModel(), ReportDto.F_VIRTUALIZER),
- createVirtualizerListModel(), new ChoiceRenderer(),
- createStringResource("ReportType.virtualizer"), ID_LABEL_SIZE, ID_INPUT_SIZE, false);
- //virtualizer.add(new VirtualizerAjaxFormUpdatingBehaviour(virtualizerKickOn));
- add(virtualizer);
-
- virtualizerKickOn = new TextFormGroup(ID_VIRTUALIZER_KICKON, new PropertyModel<>(getModel(), ReportDto.F_VIRTUALIZER_KICKON),
- createStringResource("ReportType.virtualizerKickOn"), ID_LABEL_SIZE, "col-md-4", false);
- add(virtualizerKickOn);
-
- TextFormGroup maxPages = new TextFormGroup(ID_MAXPAGES, new PropertyModel<>(getModel(), ReportDto.F_MAXPAGES),
- createStringResource("ReportType.maxPages"), ID_LABEL_SIZE, "col-md-4", false);
- add(maxPages);
-
- TextFormGroup timeout = new TextFormGroup(ID_TIMEOUT, new PropertyModel<>(getModel(), ReportDto.F_TIMEOUT),
- createStringResource("ReportType.timeout"), ID_LABEL_SIZE, "col-md-4", false);
- add(timeout);
- }
-
- private IModel> createVirtualizerListModel() {
- final List virtualizerList = new ArrayList();
-
- virtualizerList.add("JRFileVirtualizer");
- virtualizerList.add("JRSwapFileVirtualizer");
- virtualizerList.add("JRGzipVirtualizer");
-
- return new IModel>() {
-
- @Override
- public List getObject() {
- return virtualizerList;
- }
- };
- }
-
- /*
- private static class VirtualizerAjaxFormUpdatingBehaviour extends AjaxFormComponentUpdatingBehavior {
-
- Component virtualizerKickOn;
-
- public VirtualizerAjaxFormUpdatingBehaviour(Component virtualizerKickOn) {
- super("change");
- this.virtualizerKickOn = virtualizerKickOn;
- }
-
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- if (virtualizerKickOn != null) {
- virtualizerKickOn.setVisible(!virtualizerKickOn.isVisible()); // just demo
- target.add(virtualizerKickOn);
- }
-
- }
- }
- */
-}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/JasperReportConfigurationPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/JasperReportConfigurationPanel.html
deleted file mode 100644
index bd858d826b8..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/JasperReportConfigurationPanel.html
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/JasperReportConfigurationPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/JasperReportConfigurationPanel.java
deleted file mode 100644
index 596128453e7..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/JasperReportConfigurationPanel.java
+++ /dev/null
@@ -1,375 +0,0 @@
-/*
- * Copyright (C) 2010-2020 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.web.page.admin.reports.component;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.behavior.AttributeAppender;
-import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.ISortableDataProvider;
-import org.apache.wicket.markup.html.form.FormComponent;
-import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.validation.IValidatable;
-import org.apache.wicket.validation.IValidator;
-import org.apache.wicket.validation.ValidationError;
-
-import com.evolveum.midpoint.gui.api.component.BasePanel;
-import com.evolveum.midpoint.gui.impl.model.JasperTemplateModel;
-import com.evolveum.midpoint.web.component.AjaxButton;
-import com.evolveum.midpoint.web.component.data.BoxedTablePanel;
-import com.evolveum.midpoint.web.component.data.column.*;
-import com.evolveum.midpoint.web.component.input.TextPanel;
-import com.evolveum.midpoint.web.component.util.ListDataProvider;
-import com.evolveum.midpoint.web.component.util.Selectable;
-import com.evolveum.midpoint.web.page.admin.reports.dto.JasperReportFieldDto;
-import com.evolveum.midpoint.web.page.admin.reports.dto.JasperReportParameterDto;
-import com.evolveum.midpoint.web.page.admin.reports.dto.ReportDto;
-
-public class JasperReportConfigurationPanel extends BasePanel {
-
- private static final long serialVersionUID = 1L;
-
- private static final String ID_PARAMETERS_TABLE = "parametersTable";
- private static final String ID_FIELDS_TABLE = "fieldsTable";
- private static final String ID_BUTTON_ADD_PARAMETER = "addParameter";
- private static final String ID_BUTTON_ADD_FIELD = "addField";
- private static final String ID_QUERY = "query";
- private static final String ID_TEMPLATE = "template";
- private static final String ID_DELETE_PARAMETER = "deleteParameter";
- private static final String ID_DELETE_FIELD = "deleteField";
-
- public JasperReportConfigurationPanel(String id, IModel model) {
- super(id, model);
- initLayout();
- }
-
- protected void initLayout() {
- AceEditorPanel queryPanel = new AceEditorPanel(ID_QUERY,
- createStringResource("JasperReportConfigurationPanel.reportQuery"),
- new PropertyModel<>(getModel(), "jasperReportDto.query"));
- add(queryPanel);
-
- initParametersTable();
- initFieldsTable();
-
- IModel data = new JasperTemplateModel(new PropertyModel<>(getModel(), "jasperReportDto.jasperReportXml"));
- AceEditorPanel templateEditor = new AceEditorPanel(ID_TEMPLATE,
- createStringResource("PageReport.jasperTemplate"), data, 300);
- add(templateEditor);
- }
-
- private void initParametersTable() {
- ISortableDataProvider provider = new ListDataProvider<>(this,
- new PropertyModel<>(getModel(), "jasperReportDto.parameters"));
- BoxedTablePanel table = new BoxedTablePanel<>(ID_PARAMETERS_TABLE, provider, initParameterColumns());
- table.setOutputMarkupId(true);
- add(table);
-
- AjaxButton addParameter = new AjaxButton(ID_BUTTON_ADD_PARAMETER,
- createStringResource("JasperReportConfigurationPanel.addParameter")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- addParameterPerformed(target);
- }
- };
- add(addParameter);
-
- AjaxButton deleteParameter = new AjaxButton(ID_DELETE_PARAMETER,
- createStringResource("JasperReportConfigurationPanel.deleteParameter")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- deleteParameterPerformed(target);
- }
- };
- add(deleteParameter);
-
- }
-
- private void initFieldsTable() {
- ISortableDataProvider provider = new ListDataProvider<>(this,
- new PropertyModel<>(getModel(), "jasperReportDto.fields"));
- BoxedTablePanel table = new BoxedTablePanel<>(ID_FIELDS_TABLE, provider, initFieldColumns());
- table.setOutputMarkupId(true);
- add(table);
-
- AjaxButton addParameter = new AjaxButton(ID_BUTTON_ADD_FIELD,
- createStringResource("JasperReportConfigurationPanel.addField")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- addFieldPerformed(target);
- }
- };
- add(addParameter);
-
- AjaxButton deleteParameter = new AjaxButton(ID_DELETE_FIELD,
- createStringResource("JasperReportConfigurationPanel.deleteField")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- deleteFieldPerformed(target);
- }
- };
- add(deleteParameter);
- }
-
- private void addParameterPerformed(AjaxRequestTarget target) {
- ReportDto dto = getModel().getObject();
- JasperReportParameterDto parameter = new JasperReportParameterDto();
- parameter.setEditing(true);
- dto.getJasperReportDto().getParameters().add(parameter);
-
- BoxedTablePanel parametersTable = getParametersTable();
- adjustParametersTablePage(parametersTable, dto);
- target.add(getParametersTable());
- }
-
- private void deleteParameterPerformed(AjaxRequestTarget target) {
- getModelObject().getJasperReportDto().getParameters().removeIf(Selectable::isSelected);
- target.add(getParametersTable());
- }
-
- private void addFieldPerformed(AjaxRequestTarget target) {
- ReportDto dto = getModel().getObject();
- JasperReportFieldDto parameter = new JasperReportFieldDto();
- parameter.setEditing(true);
- dto.getJasperReportDto().getFields().add(parameter);
-
- BoxedTablePanel fieldsTable = getFieldsTable();
- adjustFieldsTablePage(fieldsTable, dto);
- target.add(getFieldsTable());
- }
-
- private void deleteFieldPerformed(AjaxRequestTarget target) {
- getModelObject().getJasperReportDto().getFields().removeIf(Selectable::isSelected);
- target.add(getFieldsTable());
- }
-
- @SuppressWarnings("unchecked")
- private void adjustParametersTablePage(BoxedTablePanel parametersTable, ReportDto dto) {
- if (parametersTable != null && dto.getJasperReportDto().getParameters().size() % 10 == 1
- && dto.getJasperReportDto().getParameters().size() != 1) {
- DataTable table = parametersTable.getDataTable();
-
- if (table != null) {
- table.setCurrentPage(dto.getJasperReportDto().getParameters().size() / 10);
- }
- }
- }
-
- @SuppressWarnings("unchecked")
- private void adjustFieldsTablePage(BoxedTablePanel parametersTable, ReportDto dto) {
- if (parametersTable != null && dto.getJasperReportDto().getFields().size() % 10 == 1
- && dto.getJasperReportDto().getFields().size() != 1) {
- DataTable table = parametersTable.getDataTable();
-
- if (table != null) {
- table.setCurrentPage(dto.getJasperReportDto().getFields().size() / 10);
- }
- }
- }
-
- private List> initParameterColumns() {
- List> columns = new ArrayList<>();
- IColumn column = new CheckBoxHeaderColumn<>();
- columns.add(column);
-
- // name editing column
- columns.add(buildEditableLinkColumn("JasperReportConfigurationPanel.parameterName", null, "name", true));
-
- // class editing column
- columns.add(
- buildEditableLinkColumn("JasperReportConfigurationPanel.parameterClass", null, "typeAsString", true));
- columns.add(
- buildEditableLinkColumn("JasperReportConfigurationPanel.nestedClass", null, "nestedTypeAsString", true));
-
- columns.add(new AjaxLinkColumn(createStringResource("JasperReportConfigurationPanel.properties")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target,
- IModel rowModel) {
- showPropertiesPopup(target, rowModel);
- }
-
- @Override
- protected IModel createLinkModel(IModel rowModel) {
- return createStringResource("JasperReportConfigurationPanel.configure");
- }
-
- });
-
- CheckBoxColumn forPrompting = new CheckBoxColumn(
- createStringResource("JasperReportConfigurationPanel.forPrompting"), "forPrompting") {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public void populateItem(Item> cellItem, String componentId,
- IModel rowModel) {
- IsolatedCheckBoxPanel checkBox = new IsolatedCheckBoxPanel(componentId,
- new PropertyModel<>(rowModel, getPropertyExpression()), new Model<>(true));
- cellItem.add(checkBox);
- }
- };
-
- columns.add(forPrompting);
-
- return columns;
- }
-
- private void showPropertiesPopup(AjaxRequestTarget target,
- IModel rowModel) {
-
- ParameterPropertiesPopupPanel propertiesPopup = new ParameterPropertiesPopupPanel(getPageBase().getMainPopupBodyId(), new PropertyModel<>(rowModel, "properties"));
- getPageBase().showMainPopup(propertiesPopup, target);
-
- }
-
- private EditableAjaxLinkColumn buildEditableLinkColumn(
- String resource, String resourceParam, String property, final Boolean mandatory) {
- return new EditableAjaxLinkColumn(createStringResource(resource, resourceParam),
- property) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- protected Component createInputPanel(String componentId, final IModel model) {
- return createTextPanel(componentId, model, getPropertyExpression(), mandatory);
-
- }
-
- @Override
- public void onClick(AjaxRequestTarget target, IModel rowModel) {
- parameterEditPerformed(target, rowModel);
- }
- };
- }
-
- private void parameterEditPerformed(AjaxRequestTarget target, IModel rowModel) {
- JasperReportParameterDto parameter = rowModel.getObject();
- parameter.setEditing(true);
- target.add(getParametersTable());
- }
-
- @SuppressWarnings("unchecked")
- private BoxedTablePanel getParametersTable() {
- return (BoxedTablePanel) get(ID_PARAMETERS_TABLE);
- }
-
- private List> initFieldColumns() {
- List> columns = new ArrayList<>();
- IColumn column = new CheckBoxHeaderColumn<>();
- columns.add(column);
-
- // name editing column
- columns.add(new EditableAjaxLinkColumn(
- createStringResource("JasperReportConfigurationPanel.fieldName"), "name") {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- protected Component createInputPanel(String componentId, final IModel model) {
- return createTextPanel(componentId, model, getPropertyExpression(), true);
-
- }
-
- @Override
- public void onClick(AjaxRequestTarget target, IModel rowModel) {
- fieldEditPerformed(target, rowModel);
- }
- });
-
- // class editing column
- columns.add(new EditableAjaxLinkColumn(
- createStringResource("JasperReportConfigurationPanel.fieldClass"), "typeAsString") {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- protected Component createInputPanel(String componentId, IModel model) {
- return createTextPanel(componentId, model, getPropertyExpression(), true);
- }
-
- @Override
- public void onClick(AjaxRequestTarget target, IModel rowModel) {
- fieldEditPerformed(target, rowModel);
- }
- });
-
- return columns;
- }
-
- private void fieldEditPerformed(AjaxRequestTarget target, IModel rowModel) {
- JasperReportFieldDto parameter = rowModel.getObject();
- parameter.setEditing(true);
- target.add(getFieldsTable());
- }
-
- @SuppressWarnings("unchecked")
- private BoxedTablePanel getFieldsTable() {
- return (BoxedTablePanel) get(ID_FIELDS_TABLE);
- }
-
- @SuppressWarnings({ "rawtypes", "unchecked" })
- private Component createTextPanel(String componentId, final IModel model, String expression,
- final Boolean mandatory) {
- TextPanel textPanel = new TextPanel<>(componentId, new PropertyModel<>(model, expression));
- FormComponent input = textPanel.getBaseFormComponent();
- input.add(new AttributeAppender("style", "width: 100%"));
- input.add(new EmptyOnBlurAjaxFormUpdatingBehaviour());
- input.add(new IValidator() {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public void validate(IValidatable validatable) {
- if (!mandatory) {
- return;
- }
- if (validatable.getValue() == null) {
- validatable.error(new ValidationError("JasperReportConfigurationPanel.errormsg"));
- }
- }
-
- });
- return textPanel;
- }
-
- private static class EmptyOnBlurAjaxFormUpdatingBehaviour extends AjaxFormComponentUpdatingBehavior {
-
- private static final long serialVersionUID = 1L;
-
- public EmptyOnBlurAjaxFormUpdatingBehaviour() {
- super("blur");
- }
-
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- }
- }
-}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/ParameterPropertiesPopupPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/ParameterPropertiesPopupPanel.html
deleted file mode 100644
index 8acae7f8d3e..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/ParameterPropertiesPopupPanel.html
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
- |
-
-
-
-
-
- |
-
-
- |
-
-
-
-
- |
-
-
- |
-
-
-
-
- |
-
-
- |
-
-
-
-
- |
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/ParameterPropertiesPopupPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/ParameterPropertiesPopupPanel.java
deleted file mode 100644
index 10dc96847ea..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/ParameterPropertiesPopupPanel.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 2010-2017 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.web.page.admin.reports.component;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.model.StringResourceModel;
-
-import com.evolveum.midpoint.gui.api.component.BasePanel;
-import com.evolveum.midpoint.gui.api.component.form.CheckBoxPanel;
-import com.evolveum.midpoint.web.component.AjaxButton;
-import com.evolveum.midpoint.web.component.dialog.Popupable;
-import com.evolveum.midpoint.web.component.input.TextPanel;
-import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnBlurAjaxFormUpdatingBehaviour;
-import com.evolveum.midpoint.web.page.admin.reports.dto.JasperReportParameterPropertiesDto;
-
-public class ParameterPropertiesPopupPanel extends BasePanel implements Popupable {
-
- private static final long serialVersionUID = 1L;
-
- private static final String ID_KEY = "propertyKey";
- private static final String ID_LABEL = "propertyLabel";
- private static final String ID_TARGET_TYPE = "propertyTargetType";
- private static final String ID_REQUIRED = "propertyRequired";
-// private static final String ID_MULTIVALUE = "propertyMultivalue";
-
- private static final String ID_BUTTON_UPDATE = "update";
-
-// private static final Trace LOGGER = TraceManager.getTrace(ParameterPropertiesPopupPanel.class);
-
- public ParameterPropertiesPopupPanel(String id, IModel model) {
- super(id, model);
- initLayout();
- }
-
- private void initLayout() {
-
- addTextPanel(ID_KEY, "key");
- addTextPanel(ID_LABEL, "label");
- addTextPanel(ID_TARGET_TYPE, "targetType");
- CheckBoxPanel multivalue = new CheckBoxPanel(ID_REQUIRED, new PropertyModel<>(getModel(), "mandatory"));
- add(multivalue);
-// CheckBoxPanel multivalue = new CheckBoxPanel(ID_MULTIVALUE, new PropertyModel<>(getModel(), "multivalue"), Model.of(Boolean.TRUE));
-// add(multivalue);
-
- AjaxButton update = new AjaxButton(ID_BUTTON_UPDATE) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- getPageBase().hideMainPopup(target);
- IModel model = ParameterPropertiesPopupPanel.this.getModel();
- updateProperties(model.getObject(), target);
- }
- };
-
- add(update);
-
- }
-
- private void addTextPanel(String id, String expression){
- TextPanel keyPanel = new TextPanel<>(id, new PropertyModel<>(getModel(), expression));
- keyPanel.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour());
- add(keyPanel);
- }
-
- protected void updateProperties(JasperReportParameterPropertiesDto properties, AjaxRequestTarget target) {
-
- }
-
- @Override
- public int getWidth() {
- return 800;
- }
-
- @Override
- public int getHeight() {
- return 450;
- }
-
- @Override
- public String getWidthUnit(){
- return "px";
- }
-
- @Override
- public String getHeightUnit(){
- return "px";
- }
-
- @Override
- public StringResourceModel getTitle() {
- return createStringResource("JasperReportParameterProperties.title");
- }
-
- @Override
- public Component getComponent() {
- return this;
- }
-
-}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/ReportConfigurationPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/ReportConfigurationPanel.html
deleted file mode 100644
index 7919e4c18ae..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/ReportConfigurationPanel.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/ReportConfigurationPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/ReportConfigurationPanel.java
deleted file mode 100644
index fefe601b516..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/ReportConfigurationPanel.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2010-2019 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.web.page.admin.reports.component;
-
-import com.evolveum.midpoint.gui.api.component.BasePanel;
-import com.evolveum.midpoint.web.page.admin.reports.dto.ReportDto;
-
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType;
-
-import org.apache.wicket.model.IModel;
-import org.jetbrains.annotations.NotNull;
-
-/**
- * @author skublik
- *
- */
-public class ReportConfigurationPanel extends BasePanel {
-
- private static final String ID_BASIC_PANEL = "basicPanel";
-
- public ReportConfigurationPanel(String id, IModel model) {
- super(id, model);
- initLayout();
- }
-
- protected void initLayout() {
- @NotNull ReportType report = getModel().getObject().getObject().asObjectable();
-
- if(report.getJasper() != null) {
- add(new JasperReportBasicConfigurationPanel(ID_BASIC_PANEL, getModel()));
- } else {
- add(new DashboardReportBasicConfigurationPanel(ID_BASIC_PANEL, getModel()));
- }
- }
-}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/RunReportPopupPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/RunReportPopupPanel.java
index af42566baf6..df699bffb59 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/RunReportPopupPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/RunReportPopupPanel.java
@@ -15,7 +15,6 @@
import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper;
import com.evolveum.midpoint.gui.impl.prism.panel.ItemPanelSettingsBuilder;
import com.evolveum.midpoint.prism.*;
-import com.evolveum.midpoint.util.DisplayableValue;
import com.evolveum.midpoint.web.component.form.MidpointForm;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
@@ -55,8 +54,6 @@
import com.evolveum.midpoint.web.component.AjaxSubmitButton;
import com.evolveum.midpoint.web.component.dialog.Popupable;
import com.evolveum.midpoint.web.component.message.FeedbackAlerts;
-import com.evolveum.midpoint.web.page.admin.reports.dto.JasperReportParameterDto;
-import com.evolveum.midpoint.web.page.admin.reports.dto.JasperReportParameterPropertiesDto;
import com.evolveum.midpoint.web.page.admin.reports.dto.ReportDto;
import com.evolveum.midpoint.web.security.util.SecurityUtils;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;
@@ -227,111 +224,6 @@ private WebMarkupContainer createParameterPanel(final IModel- item) throws
Model.of(wrapper), new ItemPanelSettingsBuilder().build());
}
- private List createLookupTableRows(JasperReportParameterDto param, String input) {
- ItemPath label = null;
- ItemPath key = null;
- List rows = new ArrayList<>();
-
- JasperReportParameterPropertiesDto properties = param.getProperties();
-
- if (properties == null) {
- return null;
- }
-
- String pLabel = properties.getLabel();
- if (pLabel != null) {
- label = ItemPath.create(pLabel);
- }
- String pKey = properties.getKey();
- if (pKey != null) {
- key = ItemPath.create(pKey);
- }
-
- String pTargetType = properties.getTargetType();
- Class targetType = null;
- if (pTargetType != null) {
- try {
- targetType = (Class) Class.forName(pTargetType);
- } catch (ClassNotFoundException e) {
- error("Error while creating lookup table for input parameter: " + param.getName() + ", " + e.getClass().getSimpleName() + " (" + e.getMessage() + ")");
-
- }
- }
-
- if (label != null && targetType != null && input != null) {
- OperationResult result = new OperationResult(OPERATION_LOAD_RESOURCES);
- Task task = createSimpleTask(OPERATION_LOAD_RESOURCES);
-
- Collection> objects;
- ObjectQuery query = getPrismContext().queryFor(targetType)
- .item(new QName(SchemaConstants.NS_C, pLabel)).startsWith(input)
- .matching(new QName(SchemaConstants.NS_MATCHING_RULE, "origIgnoreCase"))
- .maxSize(AUTO_COMPLETE_BOX_SIZE)
- .build();
- try {
- objects = getPageBase().getModelService().searchObjects(targetType, query, SelectorOptions.createCollection(GetOperationOptions.createNoFetch()), task, result);
-
- for (PrismObject o : objects) {
- Object realKeyValue = null;
- PrismProperty> labelItem = o.findProperty(label);
-
- //TODO: e.g. support not only for property, but also ref, container..
- if (labelItem == null || labelItem.isEmpty()) {
- continue;
- }
- PrismProperty> keyItem = o.findProperty(key);
- if ("oid".equals(pKey)) {
- realKeyValue = o.getOid();
- }
- if (realKeyValue == null && (keyItem == null || keyItem.isEmpty())) {
- continue;
- }
-
- //TODO: support for single/multivalue value
- if (!labelItem.isSingleValue()) {
- continue;
- }
-
- Object realLabelValue = labelItem.getRealValue();
- realKeyValue = (realKeyValue == null) ? keyItem.getRealValue() : realKeyValue;
-
- // TODO: take definition into account
-// QName typeName = labelItem.getDefinition().getTypeName();
-
- LookupTableRowType row = new LookupTableRowType();
-
- if (realKeyValue != null) {
- row.setKey(convertObjectToPolyStringType(realKeyValue).getOrig());
- } else {
- throw new SchemaException("Cannot create lookup table with null key for label: " + realLabelValue);
- }
-
- row.setLabel(convertObjectToPolyStringType(realLabelValue));
-
- rows.add(row);
- }
-
- return rows;
- } catch (SchemaException | ObjectNotFoundException | SecurityViolationException | CommunicationException | ConfigurationException | ExpressionEvaluationException e) {
- error("Error while creating lookup table for input parameter: " + param.getName() + ", " + e.getClass().getSimpleName() + " (" + e.getMessage() + ")");
- }
-
- }
- return rows;
- }
-
- private PolyStringType convertObjectToPolyStringType(Object o) {
- if (o instanceof PolyString) {
- return new PolyStringType((PolyString) o);
- } else if (o instanceof PolyStringType) {
- return (PolyStringType) o;
- } else if (o instanceof String) {
- return new PolyStringType((String) o);
- } else {
- return new PolyStringType(o.toString());
- }
- }
-
public Task createSimpleTask(String operation, PrismObject extends FocusType> owner) {
Task task = getPageBase().getTaskManager().createTaskInstance(operation);
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/AuditEventRecordProvider.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/AuditEventRecordProvider.java
index 7f9f5ba96f3..cf29bac05ef 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/AuditEventRecordProvider.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/AuditEventRecordProvider.java
@@ -10,10 +10,8 @@
import java.util.function.Predicate;
import javax.xml.namespace.QName;
-import com.evolveum.midpoint.audit.api.AuditResultHandler;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
-import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.PrismContainer;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CollectionRefSpecificationType;
@@ -220,7 +218,7 @@ private List listRecords(long first, long count, Task task
try {
ObjectPaging paging = getPrismContext().queryFactory().createPaging(WebComponentUtil.safeLongToInteger(first), WebComponentUtil.safeLongToInteger(count));
Predicate handler = (audit) -> auditRecordList.add((AuditEventRecordType) audit.getRealValue());
- getPageBase().getModelInteractionService().searchObjectFromCollection(collectionRef, AuditEventRecordType.COMPLEX_TYPE, handler,
+ getPageBase().getModelInteractionService().processObjectsFromCollection(collectionRef, AuditEventRecordType.COMPLEX_TYPE, handler,
null, paging, null, task, task.getResult(), false);
} catch (Exception e) {
result.recordFatalError(
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/JasperReportDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/JasperReportDto.java
deleted file mode 100644
index cad2009f603..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/JasperReportDto.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (c) 2010-2019 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.web.page.admin.reports.dto;
-
-import java.io.Serializable;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.List;
-
-import net.sf.jasperreports.engine.JRException;
-import net.sf.jasperreports.engine.JRField;
-import net.sf.jasperreports.engine.JRParameter;
-import net.sf.jasperreports.engine.design.JRDesignField;
-import net.sf.jasperreports.engine.design.JRDesignParameter;
-import net.sf.jasperreports.engine.design.JRDesignQuery;
-import net.sf.jasperreports.engine.design.JasperDesign;
-import net.sf.jasperreports.engine.xml.JRXmlWriter;
-import org.apache.commons.codec.binary.Base64;
-
-import com.evolveum.midpoint.schema.util.ReportTypeUtil;
-import com.evolveum.midpoint.util.exception.SchemaException;
-
-public class JasperReportDto implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- private final byte[] jasperReportXml;
-
- private String query;
- private List parameters;
- private List fields;
- private JasperDesign design;
-
- public JasperReportDto(byte[] jasperReportXml, boolean onlyForPromptingParams) {
- this.jasperReportXml = jasperReportXml;
- initFields(onlyForPromptingParams);
- }
-
- public JasperReportDto(byte[] jasperReportXml) {
- this(jasperReportXml, false);
- }
-
- private void initFields(boolean onlyForPromptingParams) {
- if (jasperReportXml == null) {
- return;
- }
-
- try {
- design = ReportTypeUtil.loadJasperDesign(jasperReportXml);
- query = design.getQuery().getText();
-
- fields = new ArrayList<>();
- for (JRField field : design.getFieldsList()) {
- fields.add(new JasperReportFieldDto(field.getName(), field.getValueClass(), field.getValueClassName()));
- }
-
- for (JasperReportFieldDto field : fields) {
- design.removeField(field.getName());
- }
-
- parameters = new ArrayList<>();
- for (JRParameter parameter : design.getParametersList()) {
- if (parameter.isSystemDefined()) {
- continue;
- }
- if (onlyForPromptingParams && !parameter.isForPrompting()) {
- continue;
-
- }
- JasperReportParameterDto p = new JasperReportParameterDto(parameter);
- parameters.add(p);
- }
-
- for (JasperReportParameterDto param : parameters) {
- design.removeParameter(param.getName());
- }
-
- String detail = new String(Base64.isBase64(jasperReportXml) ? Base64.decodeBase64(jasperReportXml) : jasperReportXml);
- // TODO and what to do with the detail?
- } catch (SchemaException e) {
- // TODO Auto-generated catch block
- throw new IllegalArgumentException(e);
- }
- }
-
- public List getParameters() {
- if (parameters == null) {
- parameters = new ArrayList<>();
- }
- return parameters;
- }
-
- public List getFields() {
- if (fields == null) {
- fields = new ArrayList<>();
- }
- return fields;
- }
-
- public String getQuery() {
- return query;
- }
-
- public byte[] getTemplate() {
- try {
-// design.remadgetFields().
- design.getFieldsList().clear();
- design.getParametersList().clear();
- design.getFieldsMap().clear();
- design.getParametersMap().clear();
- for (JasperReportFieldDto field : fields) {
- if (field.isEmpty()) {
- continue;
- }
- JRDesignField f = new JRDesignField();
- f.setValueClassName(field.getTypeAsString());
- f.setValueClass(Class.forName(field.getTypeAsString()));
- f.setName(field.getName());
- design.addField(f);
- }
-
- for (JasperReportParameterDto param : parameters) {
- if (param.isEmpty()) {
- continue;
- }
- JRDesignParameter p = new JRDesignParameter();
- p.setValueClassName(param.getTypeAsString());
- p.setValueClass(Class.forName(param.getTypeAsString()));
- p.setName(param.getName());
- p.setForPrompting(param.isForPrompting());
- p.setDescription(param.getDescription());
- p.setNestedTypeName(param.getNestedTypeAsString());
- p.setNestedType(param.getNestedType());
- p.getPropertiesMap().setBaseProperties(param.getJRProperties());
- // p.getPropertiesMap().setProperty(propName, value);
- design.addParameter(p);
- }
-
- JasperDesign oldDesign = ReportTypeUtil.loadJasperDesign(jasperReportXml);
- oldDesign.getParametersList().clear();
- oldDesign.getParametersList().addAll(design.getParametersList());
-
- oldDesign.getFieldsList().clear();
- oldDesign.getFieldsList().addAll(design.getFieldsList());
-
- JRDesignQuery q = new JRDesignQuery();
- q.setLanguage("mql");
- q.setText(query);
- oldDesign.setQuery(q);
-
- String reportAsString = JRXmlWriter.writeReport(oldDesign, StandardCharsets.UTF_8.name());
- return reportAsString.getBytes(StandardCharsets.UTF_8);
-
- } catch (JRException | ClassNotFoundException | SchemaException ex) {
- throw new IllegalStateException(ex.getMessage(), ex.getCause());
- }
-
- }
-
-}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/JasperReportFieldDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/JasperReportFieldDto.java
deleted file mode 100644
index a41ab1f97cc..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/JasperReportFieldDto.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2010-2019 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.web.page.admin.reports.dto;
-
-import java.io.Serializable;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.evolveum.midpoint.web.component.util.Editable;
-import com.evolveum.midpoint.web.component.util.Selectable;
-import com.evolveum.midpoint.web.component.util.Validatable;
-
-public class JasperReportFieldDto extends Selectable
- implements Serializable, Editable, Validatable {
-
- private String name;
- private Class> type;
- private String typeAsString;
-
- private boolean editing;
-
- public JasperReportFieldDto() {
- // TODO Auto-generated constructor stub
- }
-
- public JasperReportFieldDto(String name, Class> type, String typeAsString) {
- this.name = name;
- this.type = type;
- this.typeAsString = typeAsString;
- }
-
- public String getName() {
- return name;
- }
-
- public Class getType() {
- return type;
- }
-
- public String getTypeAsString() {
- return typeAsString;
- }
-
- @Override
- public boolean isEditing() {
- return editing;
- }
-
- @Override
- public void setEditing(boolean editing) {
- this.editing = editing;
- }
-
- @Override
- public boolean isEmpty() {
- if (StringUtils.isBlank(name) && StringUtils.isBlank(typeAsString)) {
- return true;
- }
- return false;
- }
-}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/JasperReportParameterDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/JasperReportParameterDto.java
deleted file mode 100644
index da9a475c6f0..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/JasperReportParameterDto.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (c) 2010-2019 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.web.page.admin.reports.dto;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.evolveum.midpoint.web.component.util.Editable;
-import com.evolveum.midpoint.web.component.util.Selectable;
-import com.evolveum.midpoint.web.component.util.Validatable;
-
-import net.sf.jasperreports.engine.JRParameter;
-import net.sf.jasperreports.engine.JRPropertiesMap;
-
-public class JasperReportParameterDto extends Selectable implements Serializable, Editable, Validatable {
-
- private static final long serialVersionUID = 1L;
- private String name;
- private Class> type;
- private String typeAsString;
- private String description;
- private Class> nestedType;
- private String nestedTypeAsString;
- private boolean forPrompting = false;
- private List value;
- private JasperReportParameterPropertiesDto properties;
-
- private boolean editing;
-
- public JasperReportParameterDto() {
- }
-
-
- public JasperReportParameterDto(JRParameter param) {
- this.name = param.getName();
- this.typeAsString = param.getValueClassName();
- this.type = (Class>) param.getValueClass();
- this.forPrompting = param.isForPrompting();
-
- if (param.getDescription() != null){
- this.description = param.getDescription();
- }
- this.nestedType = param.getNestedType();
- this.nestedTypeAsString = param.getNestedTypeName();
-
- this.value = new ArrayList<>();
- this.value.add(new JasperReportValueDto());
-
- this.properties = new JasperReportParameterPropertiesDto(param.getPropertiesMap());
-
-
- }
-
- public List getValue() {
- return value;
- }
-
- public void setValue(List value) {
- this.value = value;
- }
-
- public void addValue() {
- getValue().add(new JasperReportValueDto());
- }
-
- public void removeValue(JasperReportValueDto realValue) {
- getValue().remove(realValue);
- if (getValue().isEmpty()) {
- getValue().add(new JasperReportValueDto());
- }
- }
-
-
- public boolean isForPrompting() {
- return forPrompting;
- }
-
- public void setForPrompting(boolean forPrompting) {
- this.forPrompting = forPrompting;
- }
-
- public boolean getForPrompting() {
- return forPrompting;
- }
-
- public String getName() {
- return name;
- }
-
- public String getTypeAsString() {
- return typeAsString;
- }
-
- public String getNestedTypeAsString() {
- return nestedTypeAsString;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
-
- public JasperReportParameterPropertiesDto getProperties() {
- return properties;
- }
-
- public JRPropertiesMap getJRProperties() {
- if (properties == null) {
- return null;
- }
-
- return properties.getPropertiesMap();
- }
-
- public void setProperties(JasperReportParameterPropertiesDto properties) {
- this.properties = properties;
- }
-
- public Class> getType() throws ClassNotFoundException {
- if (type == null) {
- if (StringUtils.isNotBlank(typeAsString)) {
- type = (Class>) Class.forName(typeAsString);
- } else {
- type = (Class>) Object.class;
- }
- }
- return type;
- }
-
- public Class> getNestedType() throws ClassNotFoundException {
- if (StringUtils.isBlank(nestedTypeAsString)) {
- return null;
- }
- nestedType = Class.forName(nestedTypeAsString);
- return nestedType;
- }
-
- public boolean isMultiValue() throws ClassNotFoundException{
- if (List.class.isAssignableFrom(getType())){
- return true;
- }
-
- return false;
- }
-
- @Override
- public boolean isEditing() {
- return editing;
- }
-
- @Override
- public void setEditing(boolean editing) {
- this.editing = editing;
- }
-
- @Override
- public boolean isEmpty() {
- if (StringUtils.isBlank(name) && StringUtils.isBlank(typeAsString)) {
- return true;
- }
- return false;
- }
-}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/JasperReportParameterPropertiesDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/JasperReportParameterPropertiesDto.java
deleted file mode 100644
index 10d71f6fa58..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/JasperReportParameterPropertiesDto.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 2010-2019 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.web.page.admin.reports.dto;
-
-import java.io.Serializable;
-
-import net.sf.jasperreports.engine.JRPropertiesMap;
-
-public class JasperReportParameterPropertiesDto implements Serializable{
- private static final String PROPERTY_KEY = "key";
- private static final String PROPERTY_LABEL = "label";
- private static final String PROPERTY_TARGET_TYPE = "targetType";
- private static final String PROPERTY_MULTIVALUE = "multivalue";
- private static final String MANDATORY_KEY = "mandatory";
-
-
- private JRPropertiesMap propertiesMap;
-
- public JasperReportParameterPropertiesDto(JRPropertiesMap propertiesMap) {
- this.propertiesMap = propertiesMap;
- }
-
- public String getLabel() {
- if (propertiesMap == null) {
- return null;
- }
-
- return propertiesMap.getProperty(PROPERTY_LABEL);
- }
-
- public void setLabel(String label) {
- if (propertiesMap == null) {
- propertiesMap = new JRPropertiesMap();
- }
-
- propertiesMap.setProperty(PROPERTY_LABEL, label);
- }
-
-// public boolean getMultivalue() {
-// if (propertiesMap == null) {
-// return false;
-// }
-//
-// return Boolean.parseBoolean(propertiesMap.getProperty(PROPERTY_MULTIVALUE));
-// }
-//
-// public void setMultivalue(boolean isMultiValue) {
-// if (propertiesMap == null) {
-// propertiesMap = new JRPropertiesMap();
-// }
-//
-// propertiesMap.setProperty(PROPERTY_MULTIVALUE, String.valueOf(isMultiValue));
-// }
-
- public String getTargetType() {
- if (propertiesMap == null) {
- return null;
- }
-
- return propertiesMap.getProperty(PROPERTY_TARGET_TYPE);
- }
-
- public void setTargetType(String targetType) {
- if (propertiesMap == null) {
- propertiesMap = new JRPropertiesMap();
- }
-
- propertiesMap.setProperty(PROPERTY_TARGET_TYPE, targetType);
- }
-
-
- public String getKey() {
- if (propertiesMap == null) {
- return null;
- }
-
- return propertiesMap.getProperty(PROPERTY_KEY);
- }
-
- public void setKey(String key) {
- if (propertiesMap == null) {
- propertiesMap = new JRPropertiesMap();
- }
-
- propertiesMap.setProperty(PROPERTY_KEY, key);
- }
-
- public boolean getMandatory() {
- if (propertiesMap == null) {
- return false;
- }
- String isMandatory = propertiesMap.getProperty(MANDATORY_KEY);
- return Boolean.parseBoolean(isMandatory);
- }
-
- public void setMandatory(boolean isMandatory) {
- if (propertiesMap == null) {
- propertiesMap = new JRPropertiesMap();
- }
-
- propertiesMap.setProperty(MANDATORY_KEY, String.valueOf(isMandatory));
- }
-
- public JRPropertiesMap getPropertiesMap() {
- return propertiesMap;
- }
-}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/JasperReportRealValueDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/JasperReportRealValueDto.java
deleted file mode 100644
index afbf06ae39d..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/JasperReportRealValueDto.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (c) 2010-2019 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.web.page.admin.reports.dto;
-
-import java.io.Serializable;
-
-public class JasperReportRealValueDto implements Serializable{
-
- private T value;
-
- public T getValue() {
- return value;
- }
-
- public void setValue(T value) {
- this.value = value;
- }
-}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/JasperReportValueDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/JasperReportValueDto.java
deleted file mode 100644
index dcfafe7e167..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/JasperReportValueDto.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2010-2019 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.web.page.admin.reports.dto;
-
-import java.io.Serializable;
-
-public class JasperReportValueDto implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- private Object value;
- private String displayName;
-
- public JasperReportValueDto() {
-
- }
-
- public Object getValue() {
- return value;
- }
-
- public void setValue(Object value) {
- this.value = value;
- }
-
- public String getDisplayName() {
- return displayName;
- }
-
- public void setDisplayName(String displayName) {
- this.displayName = displayName;
- }
-
-}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/ReportDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/ReportDto.java
index 42fb72ed2ee..02dce064f89 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/ReportDto.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/ReportDto.java
@@ -39,7 +39,7 @@ public class ReportDto implements Serializable {
private String name;
private String description;
private JasperExportType exportType;
- private JasperReportDto jasperReportDto;
+// private JasperReportDto jasperReportDto;
private byte[] templateStyle;
private String virtualizer;
private Integer virtualizerKickOn;
@@ -54,9 +54,9 @@ public class ReportDto implements Serializable {
public ReportDto() {
}
- public ReportDto(byte[] reportJrxml) {
- this.jasperReportDto = new JasperReportDto(reportJrxml);
- }
+// public ReportDto(byte[] reportJrxml) {
+// this.jasperReportDto = new JasperReportDto(reportJrxml);
+// }
public ReportDto(ReportType reportType, boolean onlyForPromptingParams) {
this.oid = reportType.getOid();
@@ -68,7 +68,7 @@ public ReportDto(ReportType reportType, boolean onlyForPromptingParams) {
JasperReportEngineConfigurationType jasperConfig = reportType.getJasper();
this.exportType = jasperConfig.getExport();
// this.xml = new String(Base64.decodeBase64(reportType.getTemplate()));
- this.jasperReportDto = new JasperReportDto(jasperConfig.getTemplate(), onlyForPromptingParams);
+// this.jasperReportDto = new JasperReportDto(jasperConfig.getTemplate(), onlyForPromptingParams);
this.templateStyle = jasperConfig.getTemplateStyle();
this.parent = !BooleanUtils.isFalse(jasperConfig.isParent());
this.virtualizer = jasperConfig.getVirtualizer();
@@ -117,7 +117,7 @@ public PrismObject getObject() {
JasperReportEngineConfigurationType jasperConfig = new JasperReportEngineConfigurationType();
jasperConfig.setExport(exportType);
- jasperConfig.setTemplate(jasperReportDto.getTemplate());
+// jasperConfig.setTemplate(jasperReportDto.getTemplate());
jasperConfig.setTemplateStyle(templateStyle);
jasperConfig.setVirtualizer(virtualizer);
jasperConfig.setVirtualizerKickOn(virtualizerKickOn);
@@ -180,9 +180,9 @@ public void setExportType(JasperExportType exportType) {
this.exportType = exportType;
}
- public JasperReportDto getJasperReportDto() {
- return jasperReportDto;
- }
+// public JasperReportDto getJasperReportDto() {
+// return jasperReportDto;
+// }
public String getVirtualizer() {
return virtualizer;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskErrorsTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskErrorsTabPanel.java
index 48be60384de..7f760734795 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskErrorsTabPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskErrorsTabPanel.java
@@ -16,8 +16,6 @@
import com.evolveum.midpoint.web.component.data.column.AjaxLinkColumn;
import com.evolveum.midpoint.web.component.data.column.EnumPropertyColumn;
-import com.evolveum.midpoint.web.component.data.column.LinkColumn;
-
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
@@ -49,8 +47,6 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultStatusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType;
-import org.jfree.util.ObjectTable;
-
/**
* Created by honchar.
*/
diff --git a/gui/admin-gui/src/main/resources/initial-objects/000-system-configuration.xml b/gui/admin-gui/src/main/resources/initial-objects/000-system-configuration.xml
index 3d6814bd377..dfa28d0f829 100644
--- a/gui/admin-gui/src/main/resources/initial-objects/000-system-configuration.xml
+++ b/gui/admin-gui/src/main/resources/initial-objects/000-system-configuration.xml
@@ -54,11 +54,6 @@
OFF
org.hibernate.internal.ExceptionMapperStandardImpl
-
-
- OFF
- net.sf.jasperreports.engine.fill.JRFillDataset
-
diff --git a/gui/admin-gui/src/test/resources/common/system-configuration.xml b/gui/admin-gui/src/test/resources/common/system-configuration.xml
index 0e2b9d907d7..6fe47aeeb79 100644
--- a/gui/admin-gui/src/test/resources/common/system-configuration.xml
+++ b/gui/admin-gui/src/test/resources/common/system-configuration.xml
@@ -45,11 +45,6 @@
OFF
org.hibernate.internal.ExceptionMapperStandardImpl
-
-
- OFF
- net.sf.jasperreports.engine.fill.JRFillDataset
-
diff --git a/infra/schema/pom.xml b/infra/schema/pom.xml
index c657edc311d..8a9cbf34d1e 100644
--- a/infra/schema/pom.xml
+++ b/infra/schema/pom.xml
@@ -88,10 +88,6 @@
commons-beanutils
commons-beanutils
-
- commons-codec
- commons-codec
-
org.apache.commons
commons-text
@@ -107,10 +103,6 @@
-
- net.sf.jasperreports
- jasperreports
-
org.jetbrains
annotations
diff --git a/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/ReportTypeUtil.java b/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/ReportTypeUtil.java
deleted file mode 100644
index 992299d16c2..00000000000
--- a/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/ReportTypeUtil.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright (c) 2010-2019 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-
-package com.evolveum.midpoint.schema.util;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.util.Collection;
-
-import javax.xml.namespace.QName;
-
-import com.evolveum.midpoint.xml.ns._public.common.common_3.JasperReportTypeType;
-
-import org.apache.commons.codec.binary.Base64;
-import org.w3c.dom.Element;
-
-import com.evolveum.midpoint.prism.ItemDefinition;
-import com.evolveum.midpoint.prism.PrismContainer;
-import com.evolveum.midpoint.prism.PrismContainerDefinition;
-import com.evolveum.midpoint.prism.PrismContext;
-import com.evolveum.midpoint.prism.PrismObject;
-import com.evolveum.midpoint.prism.delta.ItemDelta;
-import com.evolveum.midpoint.prism.delta.ObjectDelta;
-import com.evolveum.midpoint.prism.impl.schema.PrismSchemaImpl;
-import com.evolveum.midpoint.prism.schema.PrismSchema;
-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.JasperReportEngineConfigurationType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportConfigurationType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType;
-
-import net.sf.jasperreports.engine.JRException;
-import net.sf.jasperreports.engine.design.JasperDesign;
-import net.sf.jasperreports.engine.xml.JRXmlLoader;
-
-/**
- * @author lazyman
- */
-public class ReportTypeUtil {
-
- public static final String FILENAMEPARAMETER = "fname";
- public static final String HEADER_USERAGENT = "mp-cluster-peer-client";
- public static final String URLENCODING = "UTF-8";
-
- public static final String REPORT_LANGUAGE = "midPoint";
-
- public static final String PARAMETER_TEMPLATE_STYLES = "baseTemplateStyles";
- public static final String PARAMETER_REPORT_OID = "midpointReportOid";
- public static final String PARAMETER_REPORT_OBJECT = "midpointReportObject";
- public static final String PARAMETER_TASK = "midpointTask";
- public static final String PARAMETER_OPERATION_RESULT = "midpointOperationResult";
-
- private static final Trace LOGGER = TraceManager.getTrace(ReportTypeUtil.class);
-
- public static JasperDesign loadJasperDesign(byte[] template) throws SchemaException{
- try {
- byte[] reportTemplate;
-
- if (Base64.isBase64(template)) {
- reportTemplate = Base64.decodeBase64(template);
- } else {
- reportTemplate = template;
- }
-
- InputStream inputStreamJRXML = new ByteArrayInputStream(reportTemplate);
- JasperDesign jasperDesign = JRXmlLoader.load(inputStreamJRXML);
-// LOGGER.trace("load jasper design : {}", jasperDesign);
- return jasperDesign;
- } catch (JRException ex) {
- throw new SchemaException(ex.getMessage(), ex.getCause());
- }
- }
-
- public static PrismSchema parseReportConfigurationSchema(PrismObject report, PrismContext context)
- throws SchemaException {
-
- PrismContainer xmlSchema;
- PrismContainer jasper = report.findContainer(ReportType.F_JASPER);
- if (jasper != null) {
- xmlSchema = jasper.findContainer(JasperReportEngineConfigurationType.F_CONFIGURATION_SCHEMA);
- } else {
- xmlSchema = report.findContainer(JasperReportEngineConfigurationType.F_CONFIGURATION_SCHEMA);
- }
- Element xmlSchemaElement = ObjectTypeUtil.findXsdElement(xmlSchema);
- if (xmlSchemaElement == null) {
- //no schema definition available
- return null;
- }
-
- return PrismSchemaImpl.parse(xmlSchemaElement, true, "schema for " + report, context);
- }
-
- public static PrismContainerDefinition findReportConfigurationDefinition(PrismSchema schema) {
- if (schema == null) {
- return null;
- }
-
- QName configContainerQName = new QName(schema.getNamespace(), JasperReportEngineConfigurationType.F_CONFIGURATION.getLocalPart());
- return schema.findContainerDefinitionByElementName(configContainerQName);
- }
-
- public static void applyDefinition(PrismObject report, PrismContext prismContext)
- throws SchemaException {
-
- PrismContainer configuration;
- PrismContainer jasper = report.findContainer(ReportType.F_JASPER);
- if (jasper != null) {
- configuration = jasper.findContainer(JasperReportEngineConfigurationType.F_CONFIGURATION);
- } else {
- configuration = report.findContainer(JasperReportEngineConfigurationType.F_CONFIGURATION);
- }
- if (configuration == null) {
- //nothing to apply definitions on
- return;
- }
-
- PrismContainer xmlSchema = report.findContainer(JasperReportEngineConfigurationType.F_CONFIGURATION_SCHEMA);
- Element xmlSchemaElement = ObjectTypeUtil.findXsdElement(xmlSchema);
- if (xmlSchemaElement == null) {
- //no schema definition available
- throw new SchemaException("Couldn't find schema for configuration in report type " + report + ".");
- }
-
- PrismSchema schema = ReportTypeUtil.parseReportConfigurationSchema(report, prismContext);
- PrismContainerDefinition definition = ReportTypeUtil.findReportConfigurationDefinition(schema);
- if (definition == null) {
- //no definition found for container
- throw new SchemaException("Couldn't find definitions for report type " + report + ".");
- }
-
- configuration.applyDefinition(definition, true);
- }
-
- public static void applyConfigurationDefinition(PrismObject report, ObjectDelta delta, PrismContext prismContext)
- throws SchemaException {
-
- PrismSchema schema = ReportTypeUtil.parseReportConfigurationSchema(report, prismContext);
- PrismContainerDefinition definition = ReportTypeUtil.findReportConfigurationDefinition(schema);
- if (definition == null) {
- //no definition found for container
- throw new SchemaException("Couldn't find definitions for report type " + report + ".");
- }
- Collection modifications = delta.getModifications();
- for (ItemDelta itemDelta : modifications){
- if (itemDelta.hasCompleteDefinition()){
- continue;
- }
- ItemDefinition def = definition.findItemDefinition(itemDelta.getPath().rest());
- if (def != null){
- itemDelta.applyDefinition(def);
- }
- }
-
-
-
-
- }
-}
diff --git a/infra/schema/src/test/resources/diff/system-configuration-after.xml b/infra/schema/src/test/resources/diff/system-configuration-after.xml
index 379371a9e98..7a00cac0ecd 100644
--- a/infra/schema/src/test/resources/diff/system-configuration-after.xml
+++ b/infra/schema/src/test/resources/diff/system-configuration-after.xml
@@ -47,11 +47,6 @@
OFF
org.hibernate.internal.ExceptionMapperStandardImpl
-
-
- OFF
- net.sf.jasperreports.engine.fill.JRFillDataset
-
diff --git a/infra/schema/src/test/resources/diff/system-configuration-before.xml b/infra/schema/src/test/resources/diff/system-configuration-before.xml
index 3ad60353cbd..663d246bbd9 100644
--- a/infra/schema/src/test/resources/diff/system-configuration-before.xml
+++ b/infra/schema/src/test/resources/diff/system-configuration-before.xml
@@ -57,26 +57,22 @@
org.hibernate.internal.ExceptionMapperStandardImpl
- OFF
- net.sf.jasperreports.engine.fill.JRFillDataset
-
-
WARN
org.apache.wicket.resource.PropertiesFactory
-
+
ERROR
org.springframework.context.support.ResourceBundleMessageSource
-
+
INFO
com.evolveum.midpoint.model.impl.lens.projector.Projector
-
+
INFO
com.evolveum.midpoint.model.impl.lens.Clockwork
-
+
%date [%X{subsystem}] [%thread] %level \(%logger\): %msg%n
MIDPOINT_LOG
${midpoint.home}/log/midpoint.log
@@ -85,7 +81,7 @@
100MB
true
-
+
%date %level: %msg%n
MIDPOINT_PROFILE_LOG
${midpoint.home}/log/midpoint-profile.log
@@ -111,7 +107,7 @@
-
+
performance
Performance tracing
true
@@ -120,7 +116,7 @@
true
true
-
+
functional
Functional tracing
true
@@ -132,7 +128,7 @@
normal
-
+
functional-model-logging
Functional tracing (with model logging)
true
@@ -141,16 +137,16 @@
true
true
-
+
com.evolveum.midpoint.model
TRACE
-
+
normal
-
+
functional-sql-logging
Functional tracing (with SQL logging)
true
@@ -159,19 +155,19 @@
true
true
-
+
org.hibernate.SQL
TRACE
-
+
normal
-
+
/self/profile
View/edit your profile
@@ -182,7 +178,7 @@
http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#selfProfile
http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#selfAll
-
+
/self/credentials
View/edit your credentials
@@ -193,7 +189,7 @@
http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#selfCredentials
http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#selfAll
-
+
/admin/users
@@ -202,7 +198,7 @@
red
http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#users
-
+
/admin/resources
@@ -212,7 +208,7 @@
http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#resources
-
+
my-cases
@@ -230,7 +226,7 @@
-
+
manual-case-view
@@ -246,7 +242,7 @@
-
+
operation-request-case-view
@@ -262,7 +258,7 @@
-
+
approval-case-view
@@ -278,7 +274,7 @@
-
+
recon-tasks-view
30
TaskType
@@ -290,74 +286,74 @@
-
+
c:TaskType
-
+
150
- -
+
-
extension/mext:workerThreads
- -
+
-
cleanupAfterCompletion
- -
+
-
threadStopAction
- -
+
-
binding
-
+
900
- -
+
-
executionStatus
- -
+
-
unpauseAction
- -
+
-
taskIdentifier
- -
+
-
parent
- -
+
-
waitingReason
- -
+
-
stateBeforeSuspend
- -
+
-
category
- -
+
-
handlerUri
- -
+
-
lastRunStartTimestamp
- -
+
-
lastRunFinishTimestamp
- -
+
-
completionTimestamp
-
+
910
- -
+
-
progress
- -
+
-
stalledSince
@@ -365,7 +361,7 @@
-
+
safe
"Safe" expression profile. It is supposed to contain only operations that are "safe",
@@ -376,26 +372,26 @@
without any guarantees. Use at your own risk.
deny
-
+
asIs
allow
-
+
path
allow
-
+
value
allow
-
+
const
allow
-
+
script
deny
-
-
+
script-safe
deny
-
+
com.evolveum.midpoint.xml.ns._public.common.common_3
MidPoint common schema - generated bean classes
allow
-
+
com.evolveum.prism.xml.ns._public.types_3
Prism schema - bean classes
allow
-
+
java.lang.Integer
allow
-
+
java.lang.Object
Basic Java operations.
deny
-
+
equals
allow
-
+
hashCode
allow
-
+
java.lang.String
String operations are generally safe. But Groovy is adding execute() method which is very dangerous.
allow
-
+
execute
deny
-
+
java.lang.CharSequence
allow
-
+
java.lang.Enum
allow
-
+
java.util.List
List operations are generally safe. But Groovy is adding execute() method which is very dangerous.
allow
-
+
execute
deny
-
+
java.util.ArrayList
List operations are generally safe. But Groovy is adding execute() method which is very dangerous.
allow
-
+
execute
deny
-
+
java.util.Map
allow
-
+
java.util.HashMap
allow
-
+
java.util.Date
allow
-
+
javax.xml.namespace.QName
allow
-
+
javax.xml.datatype.XMLGregorianCalendar
allow
-
+
java.lang.System
Just a few methods of System are safe enough.
deny
-
+
currentTimeMillis
allow
-
+
java.lang.IllegalStateException
Basic Java exception. Also used in test.
allow
-
+
java.lang.IllegalArgumentException
Basic Java exception.
allow
-
+
com.evolveum.midpoint.model.common.expression.functions.BasicExpressionFunctions
MidPoint basic functions library
allow
-
+
com.evolveum.midpoint.model.common.expression.functions.LogExpressionFunctions
MidPoint logging functions library
allow
-
+
com.evolveum.midpoint.report.impl.ReportFunctions
MidPoint report functions library
allow
-
+
org.apache.commons.lang.StringUtils
Apache Commons: Strings
allow
diff --git a/model/certification-impl/src/main/resources/reports/_readme.txt b/model/certification-impl/src/main/resources/reports/_readme.txt
deleted file mode 100644
index 22dc14433c6..00000000000
--- a/model/certification-impl/src/main/resources/reports/_readme.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-Jasper reports stored here are just source files to be used when generating initial objects or samples for certification-related reports.
-
-TODO consider moving to other place (along with other reports, perhaps)
diff --git a/model/certification-impl/src/main/resources/reports/non-responders.xml b/model/certification-impl/src/main/resources/reports/non-responders.xml
deleted file mode 100644
index e58b5ccdfe6..00000000000
--- a/model/certification-impl/src/main/resources/reports/non-responders.xml
+++ /dev/null
@@ -1,232 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- report.getCertificationCampaignNonResponders(campaignName, stageNumber)
-]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/model/model-api/src/main/java/com/evolveum/midpoint/model/api/ModelInteractionService.java b/model/model-api/src/main/java/com/evolveum/midpoint/model/api/ModelInteractionService.java
index b6c6033d413..e9d568b5a6c 100644
--- a/model/model-api/src/main/java/com/evolveum/midpoint/model/api/ModelInteractionService.java
+++ b/model/model-api/src/main/java/com/evolveum/midpoint/model/api/ModelInteractionService.java
@@ -499,7 +499,7 @@ List validateValue(ProtectedStrin
throws SchemaException, PolicyViolationException, ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException;
@Experimental
- void searchObjectFromCollection(CollectionRefSpecificationType collection, QName typeForFilter, Predicate handler,
+ void processObjectsFromCollection(CollectionRefSpecificationType collection, QName typeForFilter, Predicate handler,
Collection> options, ObjectPaging paging, VariablesMap variables, Task task, OperationResult result, boolean recordProgress) throws SchemaException,
ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException;
}
diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/controller/ModelInteractionServiceImpl.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/controller/ModelInteractionServiceImpl.java
index 76319647d50..ed5454bc234 100644
--- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/controller/ModelInteractionServiceImpl.java
+++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/controller/ModelInteractionServiceImpl.java
@@ -1944,7 +1944,7 @@ public List validateValue(Protect
}
@Override
- public void searchObjectFromCollection(CollectionRefSpecificationType collectionConfig, QName typeForFilter, Predicate handler,
+ public void processObjectsFromCollection(CollectionRefSpecificationType collectionConfig, QName typeForFilter, Predicate handler,
Collection> defaultOptions, ObjectPaging paging, VariablesMap variables, Task task, OperationResult result, boolean recordProgress)
throws SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException {
Class extends Containerable> type = null;
diff --git a/model/report-impl/pom.xml b/model/report-impl/pom.xml
index c03d1d029a9..fc3336b2de9 100644
--- a/model/report-impl/pom.xml
+++ b/model/report-impl/pom.xml
@@ -114,32 +114,17 @@
commons-io
commons-io
-
- commons-codec
- commons-codec
-
commons-collections
commons-collections
-
-
- net.sf.jasperreports
- jasperreports
-
-
commons-javaflow
commons-javaflow
runtime
-
- org.apache.cxf
- cxf-core
-
-
org.springframework
spring-context
diff --git a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/CustomDataWriter.java b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/CustomDataWriter.java
deleted file mode 100644
index 55da55247d2..00000000000
--- a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/CustomDataWriter.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2010-2017 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.report.impl;
-
-import java.util.Collection;
-
-import javax.xml.validation.Schema;
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-
-import org.apache.cxf.databinding.DataWriter;
-import org.apache.cxf.interceptor.Fault;
-import org.apache.cxf.message.Attachment;
-import org.apache.cxf.service.model.MessagePartInfo;
-import org.apache.cxf.staxutils.StaxUtils;
-import org.w3c.dom.Element;
-
-import com.evolveum.midpoint.prism.PrismContext;
-import com.evolveum.midpoint.util.exception.SchemaException;
-
-public class CustomDataWriter implements DataWriter{
-
- private PrismContext prismContex;
-
-
- public CustomDataWriter(PrismContext prismContex) {
- this.prismContex = prismContex;
- }
-
-
- @Override
- public void write(Object obj, MessagePartInfo part, XMLStreamWriter output) {
- QName rootElement = part.getElementQName();
- Element serialized;
- try {
- serialized = prismContex.domSerializer().serializeAnyData(obj, rootElement);
- StaxUtils.copy(serialized, output);
-// output.writeCharacters(serialized);
- } catch (SchemaException | XMLStreamException e) {
- // TODO Auto-generated catch block
- throw new Fault(e);
- }
-
-
- }
-
- @Override
- public void setAttachments(Collection arg0) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void setProperty(String arg0, Object arg1) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void setSchema(Schema arg0) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void write(Object arg0, XMLStreamWriter arg1) {
- // TODO Auto-generated method stub
-
- }
-
-}
diff --git a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/JRMidpointCompiler.java b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/JRMidpointCompiler.java
deleted file mode 100644
index 0a7731cffa3..00000000000
--- a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/JRMidpointCompiler.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (c) 2010-2019 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.report.impl;
-
-import java.io.File;
-import java.io.Serializable;
-
-import net.sf.jasperreports.crosstabs.JRCrosstab;
-import net.sf.jasperreports.engine.JRDataset;
-import net.sf.jasperreports.engine.JRException;
-import net.sf.jasperreports.engine.JasperReport;
-import net.sf.jasperreports.engine.JasperReportsContext;
-import net.sf.jasperreports.engine.design.JRAbstractCompiler;
-import net.sf.jasperreports.engine.design.JRCompilationSourceCode;
-import net.sf.jasperreports.engine.design.JRCompilationUnit;
-import net.sf.jasperreports.engine.design.JRSourceCompileTask;
-import net.sf.jasperreports.engine.fill.JREvaluator;
-
-import com.evolveum.midpoint.schema.util.ReportTypeUtil;
-
-/**
- * Custom expression compiler for JasperReports. This class is used to direct all expression execution
- * to our custom evaluator (JRMidpointEvaluator).
- * This compiler is not really compiling anything. It just fakes everything.
- *
- * @author katkav
- */
-public class JRMidpointCompiler extends JRAbstractCompiler {
-
- public JRMidpointCompiler(JasperReportsContext jasperReportsContext) {
- super(jasperReportsContext, false);
- }
-
- /* (non-Javadoc)
- * @see net.sf.jasperreports.engine.design.JRCompiler#loadEvaluator(net.sf.jasperreports.engine.JasperReport)
- */
- @Override
- public JREvaluator loadEvaluator(JasperReport jasperReport) throws JRException {
- return new JRMidpointEvaluator(jasperReport);
- }
-
- /* (non-Javadoc)
- * @see net.sf.jasperreports.engine.design.JRCompiler#loadEvaluator(net.sf.jasperreports.engine.JasperReport, net.sf.jasperreports.crosstabs.JRCrosstab)
- */
- @Override
- public JREvaluator loadEvaluator(JasperReport jasperReport, JRCrosstab crosstab) throws JRException {
- return new JRMidpointEvaluator(jasperReport);
- }
-
- /* (non-Javadoc)
- * @see net.sf.jasperreports.engine.design.JRCompiler#loadEvaluator(net.sf.jasperreports.engine.JasperReport, net.sf.jasperreports.engine.JRDataset)
- */
- @Override
- public JREvaluator loadEvaluator(JasperReport jasperReport, JRDataset dataset) throws JRException {
- return new JRMidpointEvaluator(jasperReport, dataset);
- }
-
- /* (non-Javadoc)
- * @see net.sf.jasperreports.engine.design.JRAbstractCompiler#loadEvaluator(java.io.Serializable, java.lang.String)
- */
- @Override
- protected JREvaluator loadEvaluator(Serializable compileData, String unitName) throws JRException {
- return new JRMidpointEvaluator(compileData, unitName);
-
- }
-
- /* (non-Javadoc)
- * @see net.sf.jasperreports.engine.design.JRAbstractCompiler#checkLanguage(java.lang.String)
- */
- @Override
- protected void checkLanguage(String language) throws JRException {
- if (!ReportTypeUtil.REPORT_LANGUAGE.equals(language)) {
- throw new JRException("Expression language '"+language+" is not supported");
- }
- }
-
- /* (non-Javadoc)
- * @see net.sf.jasperreports.engine.design.JRAbstractCompiler#generateSourceCode(net.sf.jasperreports.engine.design.JRSourceCompileTask)
- */
- @Override
- protected JRCompilationSourceCode generateSourceCode(JRSourceCompileTask sourceTask) throws JRException {
-// return new JRDefaultCompilationSourceCode("FAKE", null);
- return null;
- }
-
- /* (non-Javadoc)
- * @see net.sf.jasperreports.engine.design.JRAbstractCompiler#compileUnits(net.sf.jasperreports.engine.design.JRCompilationUnit[], java.lang.String, java.io.File)
- */
- @Override
- protected String compileUnits(JRCompilationUnit[] units, String classpath, File tempDirFile) throws JRException {
- // just pretend compilation, do nothing
- return null;
- }
-
- /* (non-Javadoc)
- * @see net.sf.jasperreports.engine.design.JRAbstractCompiler#getSourceFileName(java.lang.String)
- */
- @Override
- protected String getSourceFileName(String unitName) {
- return unitName;
- }
-
-}
diff --git a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/JRMidpointEvaluator.java b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/JRMidpointEvaluator.java
deleted file mode 100644
index a4d6c16db73..00000000000
--- a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/JRMidpointEvaluator.java
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * Copyright (C) 2010-2020 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.report.impl;
-
-import java.io.Serializable;
-import java.util.Map;
-
-import net.sf.jasperreports.engine.*;
-import net.sf.jasperreports.engine.fill.*;
-
-import com.evolveum.midpoint.prism.PrismObject;
-import com.evolveum.midpoint.report.api.ReportService;
-import com.evolveum.midpoint.schema.expression.VariablesMap;
-import com.evolveum.midpoint.schema.result.OperationResult;
-import com.evolveum.midpoint.schema.util.ReportTypeUtil;
-import com.evolveum.midpoint.task.api.Task;
-import com.evolveum.midpoint.util.logging.Trace;
-import com.evolveum.midpoint.util.logging.TraceManager;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType;
-
-/**
- * @author katka
- */
-public class JRMidpointEvaluator extends JREvaluator {
-
- private static final Trace LOGGER = TraceManager.getTrace(JRMidpointEvaluator.class);
-
- private Serializable compileData = null;
- private String unitName = null;
-
- private ReportService reportService;
-
- private PrismObject report;
-
- private JasperReport jasperReport;
- private JRDataset dataset;
-
- private Map parametersMap;
- private Map fieldsMap;
- private Map variablesMap;
-
- public JRMidpointEvaluator(Serializable compileData, String unitName) {
- this.compileData = compileData;
- this.unitName = unitName;
- }
-
- public JRMidpointEvaluator(JasperReport jasperReprot, JRDataset dataset) {
- this.jasperReport = jasperReprot;
- this.dataset = dataset;
- }
-
- public JRMidpointEvaluator(JasperReport jasperReprot) {
- this.jasperReport = jasperReprot;
- }
-
- @Override
- public void customizedInit(Map parametersMap, Map fieldsMap,
- Map variablesMap) throws JRException {
- LOGGER.trace("customizedInit: ");
- LOGGER.trace(" parametersMap : {}", parametersMap);
- LOGGER.trace(" fieldsMap : {}", fieldsMap);
- LOGGER.trace(" variablesMap : {}", variablesMap);
-
- this.parametersMap = parametersMap;
- this.fieldsMap = fieldsMap;
- this.variablesMap = variablesMap;
-
- PrismObject midPointReportObject = (PrismObject) parametersMap.get(ReportTypeUtil.PARAMETER_REPORT_OBJECT).getValue();
- LOGGER.trace("midPointReportObject : {}", midPointReportObject);
-
- reportService = SpringApplicationContext.getBean(ReportService.class);
-
- }
-
- private Task getTask() {
- JRFillParameter taskParam = parametersMap.get(ReportTypeUtil.PARAMETER_TASK);
- if (taskParam == null) {
- //TODO throw exception??
- return null;
- }
-
- return (Task) taskParam.getValue();
- }
-
- private OperationResult getOperationResult() {
- JRFillParameter resultParam = parametersMap.get(ReportTypeUtil.PARAMETER_OPERATION_RESULT);
- if (resultParam == null) {
- //TODO throw exception???
-// return null;
- return new OperationResult("Evaluate report script"); //temporary fix because of training, MID-5457
- }
- return (OperationResult) resultParam.getValue();
- }
-
- private PrismObject getReport() {
- JRFillParameter resultParam = parametersMap.get(ReportTypeUtil.PARAMETER_REPORT_OBJECT);
- if (resultParam == null) {
- //TODO throw exception???
- return null;
- }
- return (PrismObject) resultParam.getValue();
- }
-
- @Override
- public Object evaluate(JRExpression expression) throws JRExpressionEvalException {
- return evaluateExpression(expression, Mode.DEFAULT);
- }
-
- @Override
- public Object evaluateOld(JRExpression expression) throws JRExpressionEvalException {
- return evaluateExpression(expression, Mode.OLD);
- }
-
- @Override
- public Object evaluateEstimated(JRExpression expression) throws JRExpressionEvalException {
- return evaluateExpression(expression, Mode.ESTIMATED);
- }
-
- private void logEvaluate(Mode mode, JRExpression expression) {
- LOGGER.trace("JasperReport expression: evaluate({}): {} (type:{})", mode, expression, expression == null ? null : expression.getType());
- }
-
- private Object evaluateExpression(JRExpression expression, Mode mode) {
- logEvaluate(mode, expression);
- if (expression == null) {
- return null;
- }
- JRExpressionChunk[] ch = expression.getChunks();
-
- VariablesMap variables = new VariablesMap();
-
- StringBuilder groovyCode = new StringBuilder();
-
- for (JRExpressionChunk chunk : expression.getChunks()) {
- if (chunk == null) {
- break;
- }
-
- groovyCode.append(chunk.getText());
- switch (chunk.getType()) {
- case JRExpressionChunk.TYPE_FIELD:
- JRFillField field = fieldsMap.get(chunk.getText());
- variables.put(field.getName(), getFieldValue(chunk.getText(), mode), field.getValueClass());
- break;
- case JRExpressionChunk.TYPE_PARAMETER:
- JRFillParameter param = parametersMap.get(chunk.getText());
- // Mode does not influence this one
- variables.put(param.getName(), param.getValue(), param.getValueClass());
- break;
- case JRExpressionChunk.TYPE_VARIABLE:
- JRFillVariable var = variablesMap.get(chunk.getText());
- variables.put(var.getName(), var.getValue(), var.getValueClass());
- break;
- case JRExpressionChunk.TYPE_TEXT:
- break;
- default:
- LOGGER.trace("nothing to do for chunk type {}", chunk.getType());
- }
- }
-
- if (reportService == null) {
- throw new JRRuntimeException("No report service");
- }
-
- try {
- Object evaluationResult = reportService.evaluate(getReport(), groovyCode.toString(), variables, getTask(), getOperationResult());
-
- traceEvaluationSuccess(mode, variables, groovyCode.toString(), evaluationResult);
- return evaluationResult;
- } catch (Throwable e) {
- traceEvaluationFailure(mode, variables, groovyCode.toString(), e);
- throw new JRRuntimeException(e.getMessage(), e);
- }
- }
-
- private void traceEvaluationSuccess(Mode mode, VariablesMap variables, String code, Object result) {
- if (!LOGGER.isTraceEnabled()) {
- return;
- }
- StringBuilder sb = traceEvaluationHead(mode, variables, code);
- sb.append("Result: ").append(result).append("\n");
- traceEvaluationTail(sb);
- }
-
- private void traceEvaluationFailure(Mode mode, VariablesMap variables, String code, Throwable e) {
- if (!LOGGER.isTraceEnabled()) {
- return;
- }
- StringBuilder sb = traceEvaluationHead(mode, variables, code);
- sb.append("Error: ").append(e).append("\n");
- traceEvaluationTail(sb);
- }
-
- private StringBuilder traceEvaluationHead(Mode mode, VariablesMap variables, String code) {
- StringBuilder sb = new StringBuilder();
- sb.append("---[ JasperReport expression evaluation ]---\n");
- sb.append("Report: ").append(getReport()).append("\n");
- sb.append("Mode: ").append(mode).append("\n");
- sb.append("Variables:\n");
- sb.append(variables.debugDump(1)).append("\n");
- sb.append("Code:\n");
- sb.append(code).append("\n");
- return sb;
- }
-
- private void traceEvaluationTail(StringBuilder sb) {
- sb.append("---------------------------------------------");
- LOGGER.trace("\n{}", sb.toString());
- }
-
- private Object getFieldValue(String name, Mode mode) {
- JRFillField field = fieldsMap.get(name);
- if (field == null) {
- return null;
- }
- switch (mode) {
- case DEFAULT:
- case ESTIMATED:
- return field.getValue();
- case OLD:
- return field.getOldValue();
- default:
- throw new IllegalArgumentException("Wrong mode " + mode);
- }
- }
-
- private Object getVariableValue(String name, Mode mode) {
- JRFillVariable var = variablesMap.get(name);
- if (var == null) {
- return null;
- }
- switch (mode) {
- case DEFAULT:
- return var.getValue();
- case ESTIMATED:
- return var.getEstimatedValue();
- case OLD:
- return var.getOldValue();
- default:
- throw new IllegalArgumentException("Wrong mode " + mode);
- }
- }
-
- enum Mode {DEFAULT, OLD, ESTIMATED}
-
- // NOT USED
-
- @Override
- protected Object evaluate(int id) throws Throwable {
- // Not used. Not even invoked.
- throw new UnsupportedOperationException("Boom! This code should not be reached");
- }
-
- @Override
- protected Object evaluateOld(int id) throws Throwable {
- // Not used. Not even invoked.
- throw new UnsupportedOperationException("Boom! This code should not be reached");
- }
-
- @Override
- protected Object evaluateEstimated(int id) throws Throwable {
- // Not used. Not even invoked.
- throw new UnsupportedOperationException("Boom! This code should not be reached");
- }
-}
diff --git a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/MidPointAbstractDataSource.java b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/MidPointAbstractDataSource.java
deleted file mode 100644
index 58679864535..00000000000
--- a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/MidPointAbstractDataSource.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 2010-2019 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.report.impl;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import com.evolveum.midpoint.prism.path.ItemName;
-import net.sf.jasperreports.engine.JRDataSource;
-import net.sf.jasperreports.engine.JRException;
-import net.sf.jasperreports.engine.JRField;
-
-import com.evolveum.midpoint.prism.Containerable;
-import com.evolveum.midpoint.prism.Item;
-import com.evolveum.midpoint.prism.PrismContainer;
-import com.evolveum.midpoint.prism.PrismContainerValue;
-import com.evolveum.midpoint.prism.PrismObject;
-import com.evolveum.midpoint.prism.PrismProperty;
-import com.evolveum.midpoint.prism.PrismReference;
-import com.evolveum.midpoint.prism.PrismReferenceValue;
-import com.evolveum.midpoint.prism.Referencable;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
-
-public class MidPointAbstractDataSource implements JRDataSource{
-
- List> resultList = null;
- Iterator> iterator = null;
- PrismObject extends ObjectType> currentObject = null;
-
-
- @Override
- public boolean next() throws JRException {
- // TODO Auto-generated method stub
- boolean hasNext = false;
- if (this.iterator != null) {
- hasNext = this.iterator.hasNext();
-
- if (hasNext) {
- this.currentObject = iterator.next();
- }
- }
-
- return hasNext;
- }
-
- @Override
- public Object getFieldValue(JRField jrField) throws JRException {
- // TODO Auto-generated method stub
- String fieldName = jrField.getName();
- if (fieldName.equals("oid")){
- return currentObject.getOid();
- }
- Item i = currentObject.findItem(new ItemName(fieldName));
- if (i == null){
- return null;
- }
-
- if (i instanceof PrismProperty){
- if (i.isSingleValue()){
- return ((PrismProperty) i).getRealValue();
- }
- return ((PrismProperty) i).getRealValues();
- } else if (i instanceof PrismReference){
- if (i.isSingleValue()){
- return ((PrismReference) i).getValue().asReferencable();
- }
-
- List refs = new ArrayList<>();
- for (PrismReferenceValue refVal : ((PrismReference) i).getValues()){
- refs.add(refVal.asReferencable());
- }
- return refs;
- } else if (i instanceof PrismContainer){
- if (i.isSingleValue()){
- return ((PrismContainer) i).getValue().asContainerable();
- }
- List containers = new ArrayList<>();
- for (Object pcv : i.getValues()){
- if (pcv instanceof PrismContainerValue){
- containers.add(((PrismContainerValue) pcv).asContainerable());
- }
- }
- return containers;
-
- } else
- throw new JRException("Could not get value of the fileld: " + fieldName);
- }
-
-
-}
diff --git a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/MidPointDataSource.java b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/MidPointDataSource.java
deleted file mode 100644
index 3379c9b60ca..00000000000
--- a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/MidPointDataSource.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) 2010-2019 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.report.impl;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import com.evolveum.midpoint.prism.PrismContainerable;
-import com.evolveum.midpoint.prism.path.ItemPath;
-import net.sf.jasperreports.engine.JRDataSource;
-import net.sf.jasperreports.engine.JRException;
-import net.sf.jasperreports.engine.JRField;
-
-import com.evolveum.midpoint.prism.Containerable;
-import com.evolveum.midpoint.prism.Item;
-import com.evolveum.midpoint.prism.PrismContainer;
-import com.evolveum.midpoint.prism.PrismContainerValue;
-import com.evolveum.midpoint.prism.PrismObject;
-import com.evolveum.midpoint.prism.PrismProperty;
-import com.evolveum.midpoint.prism.PrismReference;
-import com.evolveum.midpoint.prism.PrismReferenceValue;
-import com.evolveum.midpoint.prism.Referencable;
-import com.evolveum.midpoint.prism.polystring.PolyString;
-import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
-import com.evolveum.prism.xml.ns._public.types_3.ItemPathType;
-
-public class MidPointDataSource implements JRDataSource{
-
- public static final String PARENT_NAME = "_parent_";
- public static final String THIS_NAME = "_this_";
-
- Collection> resultList = null;
- Iterator> iterator = null;
- PrismContainerValue extends Containerable> currentObject = null;
-
- public MidPointDataSource(Collection> results) {
- this.resultList = results;
- if (results != null){
- iterator = results.iterator();
- }
- }
-
-
- @Override
- public boolean next() throws JRException {
- boolean hasNext = false;
- if (this.iterator != null) {
- hasNext = this.iterator.hasNext();
-
- if (hasNext) {
- this.currentObject = iterator.next();
- }
- }
-
- return hasNext;
- }
-
- @Override
- public Object getFieldValue(JRField jrField) throws JRException {
- String fieldName = jrField.getName();
- if (fieldName.equals("oid")){
- if (currentObject.getParent() instanceof PrismObject) {
- return ((PrismObject) currentObject.getParent()).getOid();
- } else {
- throw new IllegalStateException("oid property is not supported for " + currentObject.getClass());
- }
- } else if (PARENT_NAME.equals(fieldName)) {
- PrismContainerable parent1 = currentObject.getParent();
- if (!(parent1 instanceof PrismContainer)) {
- return null;
- }
- return ((PrismContainer) parent1).getParent();
- } else if (THIS_NAME.equals(fieldName)) {
- return currentObject;
- }
-
- ItemPathType itemPathType = new ItemPathType(ItemPath.create(fieldName));
- ItemPath path = itemPathType.getItemPath();
- Item i = currentObject.findItem(path);
- if (i == null) {
- return null;
- }
-
- if (i instanceof PrismProperty){
- if (i.isSingleValue()){
- return normalize(((PrismProperty) i).getRealValue(), jrField.getValueClass());
- }
- List normalized = new ArrayList<>();
- for (Object real : ((PrismProperty) i).getRealValues()){
- normalized.add(normalize(real, jrField.getValueClass()));
- }
- return ((PrismProperty) i).getRealValues();
- } else if (i instanceof PrismReference){
- if (i.isSingleValue()){
- return ObjectTypeUtil.createObjectRef(((PrismReference) i).getValue());
- }
-
- List refs = new ArrayList<>();
- for (PrismReferenceValue refVal : ((PrismReference) i).getValues()){
- refs.add(ObjectTypeUtil.createObjectRef(refVal));
- }
- return refs;
- } else if (i instanceof PrismContainer){
- if (i.isSingleValue()){
- return ((PrismContainer) i).getValue().asContainerable();
- }
- List containers = new ArrayList<>();
- for (Object pcv : i.getValues()){
- if (pcv instanceof PrismContainerValue){
- containers.add(((PrismContainerValue) pcv).asContainerable());
- }
- }
- return containers;
-
- } else
- throw new JRException("Could not get value of the fileld: " + fieldName);
-// return
-// throw new UnsupportedOperationException("dataSource.getFiledValue() not supported");
- }
-
- private Object normalize(Object realValue, Class fieldClass){
- if (realValue instanceof PolyString && fieldClass.equals(String.class)){
- return ((PolyString)realValue).getOrig();
- }
-
- return realValue;
- }
-
-}
diff --git a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/MidPointLocalQueryExecutor.java b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/MidPointLocalQueryExecutor.java
deleted file mode 100644
index b0b940c5889..00000000000
--- a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/MidPointLocalQueryExecutor.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright (c) 2010-2019 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.report.impl;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-
-import com.evolveum.midpoint.prism.Containerable;
-import com.evolveum.midpoint.prism.PrismContainerValue;
-import com.evolveum.midpoint.prism.PrismPropertyValue;
-import net.sf.jasperreports.engine.JRDataSource;
-import net.sf.jasperreports.engine.JRDataset;
-import net.sf.jasperreports.engine.JRValueParameter;
-import net.sf.jasperreports.engine.JasperReportsContext;
-
-import com.evolveum.midpoint.audit.api.AuditEventRecord;
-import com.evolveum.midpoint.prism.PrismObject;
-import com.evolveum.midpoint.prism.query.ObjectQuery;
-import com.evolveum.midpoint.report.api.ReportService;
-import com.evolveum.midpoint.schema.GetOperationOptions;
-import com.evolveum.midpoint.schema.SelectorOptions;
-import com.evolveum.midpoint.schema.expression.TypedValue;
-import com.evolveum.midpoint.schema.expression.VariablesMap;
-import com.evolveum.midpoint.schema.result.OperationResult;
-import com.evolveum.midpoint.schema.util.ReportTypeUtil;
-import com.evolveum.midpoint.task.api.Task;
-import com.evolveum.midpoint.util.exception.CommunicationException;
-import com.evolveum.midpoint.util.exception.ConfigurationException;
-import com.evolveum.midpoint.util.exception.ExpressionEvaluationException;
-import com.evolveum.midpoint.util.exception.ObjectNotFoundException;
-import com.evolveum.midpoint.util.exception.SchemaException;
-import com.evolveum.midpoint.util.exception.SecurityViolationException;
-import com.evolveum.midpoint.util.logging.Trace;
-import com.evolveum.midpoint.util.logging.TraceManager;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.JasperReportEngineConfigurationType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.JasperReportTypeType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType;
-
-public class MidPointLocalQueryExecutor extends MidPointQueryExecutor {
-
- private static final Trace LOGGER = TraceManager.getTrace(MidPointLocalQueryExecutor.class);
- private ReportService reportService;
- private PrismObject report;
- private Task task;
- private OperationResult operationResult;
-
-
- public MidPointLocalQueryExecutor(JasperReportsContext jasperReportsContext, JRDataset dataset,
- Map parametersMap, ReportService reportService){
- super(jasperReportsContext, dataset, parametersMap);
- }
-
- protected MidPointLocalQueryExecutor(JasperReportsContext jasperReportsContext, JRDataset dataset,
- Map parametersMap) {
- super(jasperReportsContext, dataset, parametersMap);
-
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("Creating MidPointLocalQueryExecutor, params:\n{}", ReportUtils.dumpParams(parametersMap, 1));
- }
-
- //JRFillParameter fillparam = (JRFillParameter) parametersMap.get(JRParameter.REPORT_PARAMETERS_MAP);
- //Map reportParams = (Map) fillparam.getValue();
- reportService = getParameterValue(parametersMap, ReportService.PARAMETER_REPORT_SERVICE);
- report = getParameterValue(parametersMap, ReportTypeUtil.PARAMETER_REPORT_OBJECT);
- task = getParameterValue(parametersMap, ReportTypeUtil.PARAMETER_TASK);
-
- // The PARAMETER_OPERATION_RESULT will not make it here. It is properly set in the task, but it won't arrive here.
- // No idea why.
-// operationResult = getParameterValue(parametersMap, ReportCreateTaskHandler.PARAMETER_OPERATION_RESULT);
- operationResult = task.getResult(); // WORKAROUND
-
- parseQuery();
- }
-
- private T getParameterValue(Map parametersMap, String name) {
- JRValueParameter jrValueParameter = parametersMap.get(name);
- if (jrValueParameter == null) {
- throw new IllegalArgumentException("No parameter '"+name+"' in JasperReport parameters");
- }
- return (T) jrValueParameter.getValue();
- }
-
- @Override
- protected TypedValue createTypedPropertyValue(T realValue, Class valueClass) {
- PrismPropertyValue pval = reportService.getPrismContext().itemFactory().createPropertyValue(realValue);
- return new TypedValue<>(pval, valueClass);
- }
-
- @Override
- protected Object getParsedQuery(String query, VariablesMap expressionParameters) throws SchemaException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException, SecurityViolationException {
- return reportService.parseQuery(report, query, expressionParameters, task, operationResult);
- }
-
- @Override
- protected Collection> searchObjects(Object query, Collection> options) throws SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException{
- return reportService.searchObjects((ObjectQuery) query, SelectorOptions.createCollection(GetOperationOptions.createRaw()), task, operationResult);
- }
-
- @Override
- protected Collection> evaluateScript(String script, VariablesMap parameters)
- throws SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException {
- return reportService.evaluateScript(report, script, getParameters(), task, operationResult);
- }
-
- @Override
- protected boolean isAuditReport() {
- JasperReportEngineConfigurationType jasperConfig = report.asObjectable().getJasper();
- if (jasperConfig != null) {
- JasperReportTypeType reportType = jasperConfig.getReportType();
- if (reportType != null) {
- return reportType.equals(JasperReportTypeType.AUDIT_SQL);
- }
- }
- // legacy
- return getScript().contains("AuditEventRecord") || getScript().contains("m_audit_event");
- }
-
- @Override
- protected Collection searchAuditRecords(String script, VariablesMap parameters) throws SchemaException, ExpressionEvaluationException, ObjectNotFoundException, CommunicationException, ConfigurationException, SecurityViolationException {
- return reportService.evaluateAuditScript(report, script, parameters, task, operationResult);
- }
-
- @Override
- protected JRDataSource createDataSourceFromObjects(Collection> results) {
- return new MidPointDataSource(toPcvList(results));
- }
-
- private Collection> toPcvList(Collection> objects) {
- ArrayList> pcvList = new ArrayList<>(objects.size());
- for (PrismObject object : objects) {
- pcvList.add(object.asObjectable().asPrismContainerValue());
- }
- return pcvList;
- }
-
- @Override
- protected JRDataSource createDataSourceFromContainerValues(Collection> results) {
- return new MidPointDataSource(results);
- }
-
-
-
-}
diff --git a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/MidPointQueryExecutor.java b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/MidPointQueryExecutor.java
deleted file mode 100644
index 7dd8ee72332..00000000000
--- a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/MidPointQueryExecutor.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (c) 2010-2019 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.report.impl;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-
-import com.evolveum.midpoint.prism.*;
-import net.sf.jasperreports.engine.JRDataSource;
-import net.sf.jasperreports.engine.JRDataset;
-import net.sf.jasperreports.engine.JRException;
-import net.sf.jasperreports.engine.JRParameter;
-import net.sf.jasperreports.engine.JRValueParameter;
-import net.sf.jasperreports.engine.JasperReportsContext;
-import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
-import net.sf.jasperreports.engine.query.JRAbstractQueryExecuter;
-
-import org.apache.commons.lang.StringUtils;
-
-import com.evolveum.midpoint.audit.api.AuditEventRecord;
-import com.evolveum.midpoint.schema.GetOperationOptions;
-import com.evolveum.midpoint.schema.SelectorOptions;
-import com.evolveum.midpoint.schema.expression.TypedValue;
-import com.evolveum.midpoint.schema.expression.VariablesMap;
-import com.evolveum.midpoint.util.exception.CommunicationException;
-import com.evolveum.midpoint.util.exception.ConfigurationException;
-import com.evolveum.midpoint.util.exception.ExpressionEvaluationException;
-import com.evolveum.midpoint.util.exception.ObjectNotFoundException;
-import com.evolveum.midpoint.util.exception.SchemaException;
-import com.evolveum.midpoint.util.exception.SecurityViolationException;
-import com.evolveum.midpoint.util.exception.SystemException;
-import com.evolveum.midpoint.util.logging.Trace;
-import com.evolveum.midpoint.util.logging.TraceManager;
-import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventRecordType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
-
-public abstract class MidPointQueryExecutor extends JRAbstractQueryExecuter {
-
- private static final Trace LOGGER = TraceManager.getTrace(MidPointLocalQueryExecutor.class);
-
- private Object query;
- private String script;
- private Class type;
-
- public String getScript() {
- return script;
- }
- public Object getQuery() {
- return query;
- }
- public Class getType() {
- return type;
- }
-
- protected abstract TypedValue createTypedPropertyValue(T realValue, Class valueClass);
-
- protected VariablesMap getParameters(){
- JRParameter[] params = dataset.getParameters();
- VariablesMap expressionParameters = new VariablesMap();
- for (JRParameter param : params){
- if (param.isSystemDefined()){
- continue;
- }
- //LOGGER.trace(((JRBaseParameter)param).getName());
- Object v = getParameterValue(param.getName());
- try{
- expressionParameters.put(param.getName(), createTypedPropertyValue(v, (Class)param.getValueClass()));
- } catch (Exception e){
- //just skip properties that are not important for midpoint
- }
-
- LOGGER.trace("p.val: {}", v);
- }
- return expressionParameters;
- }
-
- protected VariablesMap getPromptingParameters() {
- JRParameter[] params = dataset.getParameters();
- VariablesMap expressionParameters = new VariablesMap();
- for (JRParameter param : params) {
- if (param.isSystemDefined()) {
- continue;
- }
- if (!param.isForPrompting()) {
- continue;
- }
- //LOGGER.trace(((JRBaseParameter)param).getName());
- Object v = getParameterValue(param.getName());
- try{
- expressionParameters.put(param.getName(), createTypedPropertyValue(v, (Class)param.getValueClass()));
- } catch (Exception e){
- //just skip properties that are not important for midpoint
- }
-
- LOGGER.trace("p.val: {}", v);
- }
- return expressionParameters;
- }
-
- protected abstract Object getParsedQuery(String query, VariablesMap expressionParameters) throws SchemaException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException, SecurityViolationException;
-
- protected String getParsedScript(String script){
- String normalized = script.replace("", "");
- return normalized.replace("
", "");
- }
-
- protected MidPointQueryExecutor(JasperReportsContext jasperReportsContext, JRDataset dataset,
- Map parametersMap) {
- super(jasperReportsContext, dataset, parametersMap);
- }
-
- protected abstract Collection> searchObjects(Object query, Collection> options) throws SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException;
-
- protected abstract Collection> evaluateScript(String script, VariablesMap parameters) throws SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException;
-
- protected abstract Collection searchAuditRecords(String script, VariablesMap parameters) throws SchemaException, ExpressionEvaluationException, ObjectNotFoundException, CommunicationException, ConfigurationException, SecurityViolationException;
-
- protected abstract JRDataSource createDataSourceFromObjects(Collection> results);
-
- protected abstract JRDataSource createDataSourceFromContainerValues(Collection> results);
-
- @Override
- protected void parseQuery() {
- try {
-
- String s = dataset.getQuery().getText();
- LOGGER.trace("query: " + s);
- if (StringUtils.isEmpty(s)) {
- query = null;
- } else {
- if (s.startsWith("> results;
- results = (Collection) searchObjects(query, SelectorOptions.createCollection(GetOperationOptions.createRaw()));
- return createDataSourceFromObjects(results);
- } else {
- if (isAuditReport()) {
- Collection auditEventRecords = searchAuditRecords(script, getPromptingParameters());
- Collection auditEventRecordsType = new ArrayList<>();
- for (AuditEventRecord aer : auditEventRecords) {
- AuditEventRecordType aerType = aer.createAuditEventRecordType(true);
- auditEventRecordsType.add(aerType);
- }
- return new JRBeanCollectionDataSource(auditEventRecordsType);
- } else {
- Collection> results;
- results = evaluateScript(script, getParameters());
- return createDataSourceFromContainerValues(results);
- }
- }
- } catch (SchemaException | ObjectNotFoundException | SecurityViolationException
- | CommunicationException | ConfigurationException | ExpressionEvaluationException e) {
- // TODO Auto-generated catch block
- throw new JRException(e);
- }
- }
-
- protected abstract boolean isAuditReport();
-
- @Override
- public void close() {
-// throw new UnsupportedOperationException("QueryExecutor.close() not supported");
- //nothing to DO
- }
-
- @Override
- public boolean cancelQuery() throws JRException {
- throw new UnsupportedOperationException("QueryExecutor.cancelQuery() not supported");
- }
-
- @Override
- protected String getParameterReplacement(String parameterName) {
- throw new UnsupportedOperationException("QueryExecutor.getParameterReplacement() not supported");
- }
-
-
-
-}
diff --git a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/MidPointQueryExecutorFactory.java b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/MidPointQueryExecutorFactory.java
deleted file mode 100644
index 9ea612ec062..00000000000
--- a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/MidPointQueryExecutorFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2010-2019 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.report.impl;
-
-import java.util.Map;
-
-import net.sf.jasperreports.engine.JRDataset;
-import net.sf.jasperreports.engine.JRValueParameter;
-import net.sf.jasperreports.engine.JasperReportsContext;
-import net.sf.jasperreports.engine.query.AbstractQueryExecuterFactory;
-import net.sf.jasperreports.engine.query.JRQueryExecuter;
-
-import com.evolveum.midpoint.report.api.ReportService;
-import com.evolveum.midpoint.schema.util.ReportTypeUtil;
-
-public class MidPointQueryExecutorFactory extends AbstractQueryExecuterFactory {
-
- private static final Object[] MIDPOINT_BUILTIN_PARAMETERS = {
- ReportService.PARAMETER_REPORT_SERVICE, ReportTypeUtil.PARAMETER_OPERATION_RESULT,
- ReportTypeUtil.PARAMETER_REPORT_OBJECT, ReportTypeUtil.PARAMETER_REPORT_OID,
- ReportTypeUtil.PARAMETER_TASK, "midpoint.connection"
- };
-
- @Override
- public Object[] getBuiltinParameters() {
- return MIDPOINT_BUILTIN_PARAMETERS;
- }
-
- @Override
- public JRQueryExecuter createQueryExecuter(JasperReportsContext jasperReportsContext, JRDataset dataset,
- Map parameters) {
-
- return new MidPointLocalQueryExecutor(jasperReportsContext, dataset, parameters);
- }
-
- @Override
- public boolean supportsQueryParameterType(String className) {
- return true;
- }
-}
diff --git a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportJasperCreateTaskHandler.java b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportJasperCreateTaskHandler.java
deleted file mode 100644
index 1d6f660d6c4..00000000000
--- a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportJasperCreateTaskHandler.java
+++ /dev/null
@@ -1,639 +0,0 @@
-/*
- * Copyright (c) 2010-2019 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.report.impl;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.InputStream;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-import javax.annotation.PostConstruct;
-
-import com.evolveum.midpoint.common.configuration.api.MidpointConfiguration;
-import com.evolveum.midpoint.prism.delta.DeltaFactory;
-import com.evolveum.midpoint.repo.common.ObjectResolver;
-import com.evolveum.midpoint.repo.common.commandline.CommandLineScriptExecutor;
-import com.evolveum.midpoint.schema.expression.VariablesMap;
-
-import com.evolveum.midpoint.task.api.*;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
-import net.sf.jasperreports.engine.JRException;
-import net.sf.jasperreports.engine.JRTemplate;
-import net.sf.jasperreports.engine.JasperCompileManager;
-import net.sf.jasperreports.engine.JasperExportManager;
-import net.sf.jasperreports.engine.JasperFillManager;
-import net.sf.jasperreports.engine.JasperPrint;
-import net.sf.jasperreports.engine.JasperReport;
-import net.sf.jasperreports.engine.design.JRDesignExpression;
-import net.sf.jasperreports.engine.design.JRDesignParameter;
-import net.sf.jasperreports.engine.design.JRDesignReportTemplate;
-import net.sf.jasperreports.engine.design.JasperDesign;
-import net.sf.jasperreports.engine.export.JRCsvExporter;
-import net.sf.jasperreports.engine.export.JRRtfExporter;
-import net.sf.jasperreports.engine.export.JRXlsExporter;
-import net.sf.jasperreports.engine.export.oasis.JROdsExporter;
-import net.sf.jasperreports.engine.export.oasis.JROdtExporter;
-import net.sf.jasperreports.engine.export.ooxml.JRDocxExporter;
-import net.sf.jasperreports.engine.export.ooxml.JRPptxExporter;
-import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter;
-import net.sf.jasperreports.engine.xml.JRXmlTemplateLoader;
-import net.sf.jasperreports.export.Exporter;
-import net.sf.jasperreports.export.ExporterOutput;
-import net.sf.jasperreports.export.SimpleExporterInput;
-import net.sf.jasperreports.export.SimpleOutputStreamExporterOutput;
-import net.sf.jasperreports.export.SimpleWriterExporterOutput;
-
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.stereotype.Component;
-
-import com.evolveum.midpoint.model.api.ModelService;
-import com.evolveum.midpoint.prism.Item;
-import com.evolveum.midpoint.prism.PrismContainer;
-import com.evolveum.midpoint.prism.PrismContainerValue;
-import com.evolveum.midpoint.prism.PrismContext;
-import com.evolveum.midpoint.prism.PrismObject;
-import com.evolveum.midpoint.prism.PrismProperty;
-import com.evolveum.midpoint.prism.delta.ObjectDelta;
-import com.evolveum.midpoint.report.api.ReportConstants;
-import com.evolveum.midpoint.report.api.ReportService;
-import com.evolveum.midpoint.schema.ObjectDeltaOperation;
-import com.evolveum.midpoint.schema.SearchResultList;
-import com.evolveum.midpoint.schema.constants.ExpressionConstants;
-import com.evolveum.midpoint.schema.result.OperationResult;
-import com.evolveum.midpoint.schema.util.MiscSchemaUtil;
-import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
-import com.evolveum.midpoint.schema.util.ReportTypeUtil;
-import com.evolveum.midpoint.task.api.TaskRunResult.TaskRunResultStatus;
-import com.evolveum.midpoint.util.DebugUtil;
-import com.evolveum.midpoint.util.exception.CommunicationException;
-import com.evolveum.midpoint.util.exception.ConfigurationException;
-import com.evolveum.midpoint.util.exception.ExpressionEvaluationException;
-import com.evolveum.midpoint.util.exception.ObjectNotFoundException;
-import com.evolveum.midpoint.util.exception.SchemaException;
-import com.evolveum.midpoint.util.exception.SecurityViolationException;
-import com.evolveum.midpoint.util.exception.SystemException;
-import com.evolveum.midpoint.util.logging.LoggingUtils;
-import com.evolveum.midpoint.util.logging.Trace;
-import com.evolveum.midpoint.util.logging.TraceManager;
-import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;
-import net.sf.jasperreports.engine.JRParameter;
-import net.sf.jasperreports.engine.fill.JRAbstractLRUVirtualizer;
-import net.sf.jasperreports.engine.fill.JRFileVirtualizer;
-import net.sf.jasperreports.engine.fill.JRGzipVirtualizer;
-import net.sf.jasperreports.engine.fill.JRSwapFileVirtualizer;
-import net.sf.jasperreports.engine.util.JRSwapFile;
-import net.sf.jasperreports.governors.MaxPagesGovernor;
-import net.sf.jasperreports.governors.TimeoutGovernor;
-
-@Component
-public class ReportJasperCreateTaskHandler implements TaskHandler {
-
- static final String REPORT_CREATE_TASK_URI = "http://midpoint.evolveum.com/xml/ns/public/report/jasper/create/handler-3";
- private static final Trace LOGGER = TraceManager.getTrace(ReportJasperCreateTaskHandler.class);
-
- private static final String JASPER_VIRTUALIZER_PKG = "net.sf.jasperreports.engine.fill";
- private static final String OP_CREATE_REPORT_OUTPUT = ReportJasperCreateTaskHandler.class.getName() + "createReportOutput";
-
- @Autowired private TaskManager taskManager;
- @Autowired private ModelService modelService;
- @Autowired private PrismContext prismContext;
- @Autowired private ReportService reportService;
- @Autowired @Qualifier("modelObjectResolver") private ObjectResolver objectResolver;
- @Autowired private CommandLineScriptExecutor commandLineScriptExecutor;
-
- @PostConstruct
- protected void initialize() {
- LOGGER.trace("Registering with taskManager as a handler for {}", REPORT_CREATE_TASK_URI);
- taskManager.registerHandler(REPORT_CREATE_TASK_URI, this);
- }
-
- private File getExportDir() {
- return new File(getMidPointHomeDirName(), "export");
- }
-
- private String getTempDirName() {
- return new File(getMidPointHomeDirName(), "tmp/").getPath();
- }
-
- private String getMidPointHomeDirName() {
- return System.getProperty(MidpointConfiguration.MIDPOINT_HOME_PROPERTY);
- }
-
- @Override
- public TaskRunResult run(RunningTask task, TaskPartitionDefinitionType partition) {
- OperationResult parentResult = task.getResult();
- OperationResult result = parentResult.createSubresult(ReportJasperCreateTaskHandler.class.getSimpleName() + ".run");
-
- TaskRunResult runResult = new TaskRunResult();
- runResult.setOperationResult(result);
-
- recordProgress(task, 0, result);
- JRSwapFile swapFile = null;
- JRAbstractLRUVirtualizer virtualizer = null; // http://community.jaspersoft.com/wiki/virtualizers-jasperreports
-
- try {
- ReportType parentReport = objectResolver.resolve(task.getObjectRefOrClone(), ReportType.class, null, "resolving report", task, result);
- JasperReportEngineConfigurationType jasperConfig = parentReport.getJasper();
-
- if (!reportService.isAuthorizedToRunReport(parentReport.asPrismObject(), task, parentResult)) {
- LOGGER.error("Task {} is not authorized to run report {}", task, parentReport);
- throw new SecurityViolationException("Not authorized");
- }
-
- Map parameters = completeReport(parentReport, task, result);
-
- JasperReport jasperReport = loadJasperReport(jasperConfig);
- LOGGER.trace("compile jasper design, create jasper report : {}", jasperReport);
-
- //noinspection unchecked
- PrismContainer reportParams = (PrismContainer) task.getExtensionItemOrClone(ReportConstants.REPORT_PARAMS_PROPERTY_NAME);
- if (reportParams != null) {
- PrismContainerValue reportParamsValues = reportParams.getValue();
- Collection- > items = reportParamsValues.getItems();
- for (Item item : items) {
- PrismProperty pp = (PrismProperty) item;
- String paramName = pp.getPath().lastName().getLocalPart();
- Object value;
- if (isSingleValue(paramName, jasperReport.getParameters())) {
- value = pp.getRealValues().iterator().next();
- } else {
- value = pp.getRealValues();
- }
- parameters.put(paramName, value);
- }
- }
-
- String virtualizerS;
- Integer virtualizerKickOn;
- Integer maxPages;
- Integer timeout;
- virtualizerS = jasperConfig.getVirtualizer();
- virtualizerKickOn = jasperConfig.getVirtualizerKickOn();
- maxPages = jasperConfig.getMaxPages();
- timeout = jasperConfig.getTimeout();
-
- if (maxPages != null && maxPages > 0) {
- LOGGER.trace("Setting hard limit on number of report pages: " + maxPages);
- jasperReport.setProperty(MaxPagesGovernor.PROPERTY_MAX_PAGES_ENABLED, Boolean.TRUE.toString());
- jasperReport.setProperty(MaxPagesGovernor.PROPERTY_MAX_PAGES, String.valueOf(maxPages));
- }
-
- if (timeout != null && timeout > 0) {
- LOGGER.trace("Setting timeout on report execution [ms]: " + timeout);
- jasperReport.setProperty(TimeoutGovernor.PROPERTY_TIMEOUT_ENABLED, Boolean.TRUE.toString());
- jasperReport.setProperty(TimeoutGovernor.PROPERTY_TIMEOUT, String.valueOf(timeout));
- }
-
- if (virtualizerS != null && virtualizerKickOn != null && virtualizerKickOn > 0) {
-
- String virtualizerClassName = JASPER_VIRTUALIZER_PKG + "." + virtualizerS;
- try {
- Class> clazz = Class.forName(virtualizerClassName);
-
- if (clazz.equals(JRSwapFileVirtualizer.class)) {
- swapFile = new JRSwapFile(getTempDirName(), 4096, 200);
- virtualizer = new JRSwapFileVirtualizer(virtualizerKickOn, swapFile);
- } else if (clazz.equals(JRGzipVirtualizer.class)) {
- virtualizer = new JRGzipVirtualizer(virtualizerKickOn);
- } else if (clazz.equals(JRFileVirtualizer.class)) {
- virtualizer = new JRFileVirtualizer(virtualizerKickOn, getTempDirName());
- } else {
- throw new ClassNotFoundException("No support for virtualizer class: " + clazz.getName());
- }
-
- LOGGER.trace("Setting explicit Jasper virtualizer: {}", virtualizer);
- virtualizer.setReadOnly(false);
- parameters.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);
- } catch (ClassNotFoundException e) {
- LOGGER.error("Cannot find Jasper virtualizer: " + e.getMessage());
- }
- }
-
- LOGGER.trace("All Report parameters:\n{}", DebugUtil.debugDumpLazily(parameters, 1));
-
- JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters);
- LOGGER.trace("fill report : {}", jasperPrint);
-
- String reportFilePath = generateReport(parentReport, jasperPrint);
- LOGGER.trace("generate report : {}", reportFilePath);
-
- saveReportOutputType(reportFilePath, parentReport, task, result);
- LOGGER.trace("create report output type : {}", reportFilePath);
-
- if (parentReport.getPostReportScript() != null) {
- processPostReportScript(parentReport, reportFilePath, task, result);
- }
- result.computeStatus();
-
- } catch (Exception ex) {
- LOGGER.error("CreateReport: {}", ex.getMessage(), ex);
- result.recordFatalError(ex.getMessage(), ex);
- runResult.setRunResultStatus(TaskRunResultStatus.PERMANENT_ERROR);
- return runResult;
- } finally {
- if (swapFile != null) {
- swapFile.dispose();
- }
- if (virtualizer != null) {
- virtualizer.cleanup();
- }
- }
-
- // This "run" is finished. But the task goes on ...
- runResult.setRunResultStatus(TaskRunResultStatus.FINISHED);
- LOGGER.trace("CreateReportTaskHandler.run stopping");
- return runResult;
- }
-
- private boolean isSingleValue(String paramName, JRParameter[] jrParams) {
- Optional paramOptional = Arrays.stream(jrParams).filter(p -> p.getName().equals(paramName)).findAny();
- if (paramOptional.isPresent()) {
- JRParameter param = paramOptional.get();
- return !List.class.isAssignableFrom(param.getValueClass());
- } else {
- throw new IllegalArgumentException("Parameter " + paramName + " is not declared");
- }
- }
-
- private Map completeReport(ReportType reportType, Task task, OperationResult result) throws SchemaException,
- ObjectNotFoundException, CommunicationException, ConfigurationException, SecurityViolationException,
- ExpressionEvaluationException {
- return completeReport(reportType, null, null, task, result);
- }
-
- @SuppressWarnings("SameParameterValue")
- private Map completeReport(ReportType reportType, JasperReport subReport, String subReportName,
- Task task, OperationResult result) throws SchemaException, ObjectNotFoundException, CommunicationException,
- ConfigurationException, SecurityViolationException, ExpressionEvaluationException {
- JasperReportEngineConfigurationType jasperConfig = reportType.getJasper();
- Map params = new HashMap<>();
-
- if (subReport != null && StringUtils.isNotBlank(subReportName)) {
- params.put(subReportName, subReport);
- }
-
- Map parameters = prepareReportParameters(reportType, task, result);
- params.putAll(parameters);
-
- Map subreportParameters = processSubreportParameters(jasperConfig, task, result);
- params.putAll(subreportParameters);
-
- if (LOGGER.isTraceEnabled()) {
- LOGGER.trace("create report params:\n{}", DebugUtil.debugDump(parameters, 1));
- }
- return params;
- }
-
- private Map prepareReportParameters(ReportType reportType, Task task, OperationResult parentResult) {
- JasperReportEngineConfigurationType jasperConfig = reportType.getJasper();
- Map params = new HashMap<>();
- byte[] reportTemplateStyleBase64;
- reportTemplateStyleBase64 = jasperConfig.getTemplateStyle();
- if (reportTemplateStyleBase64 != null) {
- byte[] reportTemplateStyle = ReportUtils.decodeIfNeeded(reportTemplateStyleBase64);
- try {
- LOGGER.trace("Style template string {}", new String(reportTemplateStyle));
- InputStream inputStreamJRTX = new ByteArrayInputStream(reportTemplateStyle);
- JRTemplate jasperTemplateStyle = JRXmlTemplateLoader.load(inputStreamJRTX);
- params.put(ReportTypeUtil.PARAMETER_TEMPLATE_STYLES, jasperTemplateStyle);
- LOGGER.trace("Style template parameter {}", jasperTemplateStyle);
-
- } catch (Exception ex) {
- LOGGER.error("Error create style template parameter {}", ex.getMessage());
- throw new SystemException(ex);
- }
-
- }
-
- if (parentResult == null) {
- throw new IllegalArgumentException("No result");
- }
-
- // for our special datasource
- params.put(ReportTypeUtil.PARAMETER_REPORT_OID, reportType.getOid());
- params.put(ReportTypeUtil.PARAMETER_REPORT_OBJECT, reportType.asPrismObject());
- params.put(ReportTypeUtil.PARAMETER_TASK, task);
- params.put(ReportTypeUtil.PARAMETER_OPERATION_RESULT, parentResult);
- params.put(ReportService.PARAMETER_REPORT_SERVICE, reportService);
-
- return params;
- }
-
- private Map processSubreportParameters(JasperReportEngineConfigurationType jasperConfig, Task task, OperationResult subreportResult) throws SchemaException, ObjectNotFoundException, CommunicationException, ConfigurationException, SecurityViolationException, ExpressionEvaluationException {
- List subreports;
- subreports = jasperConfig.getSubreport();
-
- Map subreportParameters = new HashMap<>();
- for (SubreportType subreport : subreports) {
- Map subreportParam = getSubreportParameters(subreport, task, subreportResult);
- LOGGER.trace("create subreport params : {}", subreportParam);
- subreportParameters.putAll(subreportParam);
-
- }
- return subreportParameters;
- }
-
- private Map getSubreportParameters(SubreportType subreportType, Task task, OperationResult subResult)
- throws SchemaException, ObjectNotFoundException, CommunicationException, ConfigurationException, SecurityViolationException, ExpressionEvaluationException {
- ReportType reportType = objectResolver.resolve(subreportType.getReportRef(), ReportType.class, null,
- "resolve subreport", task, subResult);
- JasperReportEngineConfigurationType jasperConfig = reportType.getJasper();
-
- Map parameters = prepareReportParameters(reportType, task, subResult);
- Map reportParams = new HashMap<>(parameters);
-
- JasperReport jasperReport = loadJasperReport(jasperConfig);
- reportParams.put(subreportType.getName(), jasperReport);
-
- Map subReportParams = processSubreportParameters(jasperConfig, task, subResult);
- reportParams.putAll(subReportParams);
-
- return reportParams;
- }
-
- private JasperReport loadJasperReport(JasperReportEngineConfigurationType jasperConfig) throws SchemaException {
-
- byte[] template;
- byte[] templateStyle;
- template = jasperConfig.getTemplate();
- templateStyle = jasperConfig.getTemplateStyle();
- if (template == null) {
- throw new IllegalStateException("Could not create report. No jasper template defined.");
- }
-
- LOGGER.trace("Loading Jasper report for {}", jasperConfig);
- try {
- JasperDesign jasperDesign = ReportTypeUtil.loadJasperDesign(template);
-// LOGGER.trace("load jasper design : {}", jasperDesign);
- jasperDesign.setLanguage(ReportTypeUtil.REPORT_LANGUAGE);
-
- if (templateStyle != null) {
- JRDesignReportTemplate jasperTemplateStyle = new JRDesignReportTemplate(new JRDesignExpression("$P{" + ReportTypeUtil.PARAMETER_TEMPLATE_STYLES + "}"));
- jasperDesign.addTemplate(jasperTemplateStyle);
- jasperDesign.addParameter(createParameter(ReportTypeUtil.PARAMETER_TEMPLATE_STYLES, JRTemplate.class));
-
- }
-
- jasperDesign.addParameter(createParameter("finalQuery", Object.class));
- jasperDesign.addParameter(createParameter(ReportTypeUtil.PARAMETER_REPORT_OID, String.class));
- //TODO is this right place, we don't see e.g. task
-// jasperDesign.addParameter(createParameter(PARAMETER_TASK, Object.class));
- jasperDesign.addParameter(createParameter(ReportTypeUtil.PARAMETER_OPERATION_RESULT, OperationResult.class));
-
- //TODO maybe other paramteres? sunch as PARAMETER_REPORT_OBJECT PARAMETER_REPORT_SERVICE ???
-
- JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
-
- LOGGER.trace("Loaded Jasper report for {}: {}", jasperConfig, jasperReport);
-
- return jasperReport;
-
- } catch (JRException ex) {
- LOGGER.error("Error loading Jasper report for {}: {}", jasperConfig, ex.getMessage(), ex);
- throw new SchemaException(ex.getMessage(), ex.getCause());
- }
- }
-
- private JRDesignParameter createParameter(String paramName, Class> valueClass) {
- JRDesignParameter param = new JRDesignParameter();
- param.setName(paramName);
- param.setValueClass(valueClass);
- param.setForPrompting(false);
- param.setSystemDefined(true);
- return param;
-
- }
-
- @SuppressWarnings("SameParameterValue")
- void recordProgress(Task task, long progress, OperationResult opResult) {
- try {
- task.setProgressImmediate(progress, opResult);
- } catch (ObjectNotFoundException e) { // these exceptions are of so little probability and harmless, so we just log them and do not report higher
- LoggingUtils.logException(LOGGER, "Couldn't record progress to task {}, probably because the task does not exist anymore", e, task);
- } catch (SchemaException e) {
- LoggingUtils.logException(LOGGER, "Couldn't record progress to task {}, due to unexpected schema exception", e, task);
- }
- }
-
- private String generateReport(ReportType reportType, JasperPrint jasperPrint) throws JRException {
- JasperReportEngineConfigurationType jasperConfig = reportType.getJasper();
- String destinationFileName = getDestinationFileName(reportType);
- switch (getExport(reportType, jasperConfig)) {
- case PDF:
- JasperExportManager.exportReportToPdfFile(jasperPrint, destinationFileName);
- break;
- case XML:
- case XML_EMBED:
- JasperExportManager.exportReportToXmlFile(jasperPrint, destinationFileName, true);
- break;
- case XHTML:
- case HTML:
- JasperExportManager.exportReportToHtmlFile(jasperPrint, destinationFileName);
- break;
- case CSV:
- case RTF:
- case XLS:
- case ODT:
- case ODS:
- case DOCX:
- case XLSX:
- case PPTX:
- Exporter exporter = createExporter(getExport(reportType, jasperConfig), jasperPrint, destinationFileName);
- if (exporter != null) {
- exporter.exportReport();
- }
- default:
- break;
- }
- return destinationFileName;
- }
-
- private Exporter createExporter(JasperExportType type, JasperPrint jasperPrint, String destinationFileName) {
- Exporter exporter;
- boolean writerOutput;
- switch (type) {
- case CSV:
- writerOutput = true;
- exporter = new JRCsvExporter();
- break;
- case RTF:
- writerOutput = true;
- exporter = new JRRtfExporter();
- break;
- case XLS:
- writerOutput = false;
- exporter = new JRXlsExporter();
- break;
- case ODT:
- writerOutput = false;
- exporter = new JROdtExporter();
- break;
- case ODS:
- writerOutput = false;
- exporter = new JROdsExporter();
- break;
- case DOCX:
- writerOutput = false;
- exporter = new JRDocxExporter();
- break;
- case XLSX:
- writerOutput = false;
- exporter = new JRXlsxExporter();
- break;
- case PPTX:
- writerOutput = false;
- exporter = new JRPptxExporter();
- break;
- default:
- return null;
- }
- //noinspection unchecked
- exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
- ExporterOutput output = writerOutput
- ? new SimpleWriterExporterOutput(destinationFileName)
- : new SimpleOutputStreamExporterOutput(destinationFileName);
- //noinspection unchecked
- exporter.setExporterOutput(output);
- return exporter;
- }
-
- public static String getDateTime() {
- Date createDate = new Date(System.currentTimeMillis());
- SimpleDateFormat formatDate = new SimpleDateFormat("dd-MM-yyyy hh-mm-ss.SSS");
- return formatDate.format(createDate);
- }
-
- String getDestinationFileName(ReportType reportType) {
- File exportDir = getExportDir();
- if (!exportDir.exists() || !exportDir.isDirectory()) {
- if (!exportDir.mkdir()) {
- LOGGER.error("Couldn't create export dir {}", exportDir);
- }
- }
-
- String fileNamePrefix = reportType.getName().getOrig() + " " + getDateTime();
- String fileName;
- JasperReportEngineConfigurationType jasperConfig = reportType.getJasper();
- JasperExportType export = getExport(reportType, jasperConfig);
- if (export == JasperExportType.XML_EMBED) {
- fileName = fileNamePrefix + "_embed.xml";
- } else {
- fileName = fileNamePrefix + "." + export.value();
- }
- return new File(getExportDir(), fileName).getPath();
- }
-
- void saveReportOutputType(String filePath, ReportType reportType, Task task, OperationResult parentResult) throws Exception {
-
- String fileName = FilenameUtils.getBaseName(filePath);
- JasperReportEngineConfigurationType jasperConfig = reportType.getJasper();
- JasperExportType export = getExport(reportType, jasperConfig);
- String reportOutputName = fileName + " - " + export.value();
-
- ReportDataType reportDataType = new ReportDataType();
- prismContext.adopt(reportDataType);
-
- reportDataType.setFilePath(filePath);
- reportDataType.setReportRef(MiscSchemaUtil.createObjectReference(reportType.getOid(), ReportType.COMPLEX_TYPE));
- reportDataType.setName(new PolyStringType(reportOutputName));
- reportDataType.setDescription(reportType.getDescription() + " - " + export.value());
- if (reportType.getFileFormat() != null) {
- reportDataType.setFileFormat(reportType.getFileFormat().getType());
- }
-
-
- SearchResultList> nodes = modelService.searchObjects(NodeType.class, prismContext
- .queryFor(NodeType.class).item(NodeType.F_NODE_IDENTIFIER).eq(task.getNode()).build(), null, task, parentResult);
- if (nodes == null || nodes.isEmpty()) {
- LOGGER.error("Could not found node for storing the report.");
- throw new ObjectNotFoundException("Could not find node where to save report");
- }
-
- if (nodes.size() > 1) {
- LOGGER.error("Found more than one node with ID {}.", task.getNode());
- throw new IllegalStateException("Found more than one node with ID " + task.getNode());
- }
-
- reportDataType.setNodeRef(ObjectTypeUtil.createObjectRef(nodes.iterator().next(), prismContext));
-
- Collection> deltas = new ArrayList<>();
- ObjectDelta objectDelta = DeltaFactory.Object.createAddDelta(reportDataType.asPrismObject());
- deltas.add(objectDelta);
- OperationResult subResult = parentResult.createSubresult(OP_CREATE_REPORT_OUTPUT);
-
- Collection> executedDeltas = modelService.executeChanges(deltas, null, task, subResult);
- String reportOutputOid = ObjectDeltaOperation.findAddDeltaOid(executedDeltas, reportDataType.asPrismObject());
-
- LOGGER.debug("Created report output with OID {}", reportOutputOid);
- //noinspection unchecked
- PrismProperty outputOidProperty = prismContext.getSchemaRegistry()
- .findPropertyDefinitionByElementName(ReportConstants.REPORT_OUTPUT_OID_PROPERTY_NAME).instantiate();
- outputOidProperty.setRealValue(reportOutputOid);
- task.setExtensionPropertyImmediate(outputOidProperty, subResult);
-
- subResult.computeStatus();
- }
-
- void processPostReportScript(ReportType parentReport, String reportOutputFilePath, Task task, OperationResult parentResult) {
- CommandLineScriptType scriptType = parentReport.getPostReportScript();
- if (scriptType == null) {
- LOGGER.debug("No post report script found in {}, skipping", parentReport);
- return;
- }
-
- VariablesMap variables = new VariablesMap();
- variables.put(ExpressionConstants.VAR_OBJECT, parentReport, parentReport.asPrismObject().getDefinition());
- PrismObject taskObject = task.getRawTaskObjectClonedIfNecessary();
- variables.put(ExpressionConstants.VAR_TASK, taskObject.asObjectable(), taskObject.getDefinition());
- variables.put(ExpressionConstants.VAR_FILE, commandLineScriptExecutor.getOsSpecificFilePath(reportOutputFilePath), String.class);
-
- try {
- commandLineScriptExecutor.executeScript(scriptType, variables, "post-report script in "+parentReport, task, parentResult);
- } catch (Exception e) {
- LOGGER.error("An exception has occurred during post report script execution {}", e.getLocalizedMessage(), e);
- }
- }
-
- @Override
- public Long heartbeat(Task task) {
- return null;
- }
-
- @Override
- public void refreshStatus(Task task) {
- }
-
- @Override
- public String getCategoryName(Task task) {
- return TaskCategory.REPORT;
- }
-
- protected JasperExportType getExport(ReportType report, JasperReportEngineConfigurationType jasperConfig) {
- if (report.getFileFormat() != null && report.getFileFormat().getType() != null) {
- if (report.getFileFormat().getType().equals(FileFormatTypeType.CSV)) {
- return JasperExportType.CSV;
- } else if (report.getFileFormat().getType().equals(FileFormatTypeType.HTML)) {
- return JasperExportType.HTML;
- }
- }
- return ReportUtils.getExport(jasperConfig);
- }
-
- @Override
- public String getArchetypeOid() {
- return SystemObjectsType.ARCHETYPE_REPORT_TASK.value();
- }
-
- @Override
- public String getDefaultChannel() {
- return null; // The channel URI should be provided by the task creator.
- }
-}
diff --git a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportManagerImpl.java b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportManagerImpl.java
index 7ef0220bd9a..4106a9fd661 100644
--- a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportManagerImpl.java
+++ b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportManagerImpl.java
@@ -10,13 +10,6 @@
import com.evolveum.midpoint.model.api.ModelAuthorizationAction;
import com.evolveum.midpoint.model.api.ModelPublicConstants;
import com.evolveum.midpoint.model.api.ModelService;
-import com.evolveum.midpoint.model.api.context.ModelContext;
-import com.evolveum.midpoint.model.api.context.ModelElementContext;
-import com.evolveum.midpoint.model.api.context.ModelState;
-import com.evolveum.midpoint.model.api.hooks.ChangeHook;
-import com.evolveum.midpoint.model.api.hooks.HookOperationMode;
-import com.evolveum.midpoint.model.api.hooks.HookRegistry;
-import com.evolveum.midpoint.model.api.hooks.ReadHook;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.delta.ItemDelta;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
@@ -28,12 +21,10 @@
import com.evolveum.midpoint.report.api.ReportService;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
-import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.result.OperationResultStatus;
import com.evolveum.midpoint.schema.util.MiscSchemaUtil;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
-import com.evolveum.midpoint.schema.util.ReportTypeUtil;
import com.evolveum.midpoint.security.enforcer.api.AuthorizationParameters;
import com.evolveum.midpoint.security.enforcer.api.SecurityEnforcer;
import com.evolveum.midpoint.task.api.ClusterExecutionHelper;
@@ -46,29 +37,21 @@
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 net.sf.jasperreports.engine.JRException;
-import net.sf.jasperreports.engine.JasperCompileManager;
-import net.sf.jasperreports.engine.JasperReport;
-import net.sf.jasperreports.engine.design.JasperDesign;
-import net.sf.jasperreports.engine.xml.JRXmlLoader;
+
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
-import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
-import javax.annotation.PostConstruct;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.xml.datatype.Duration;
import javax.xml.datatype.XMLGregorianCalendar;
-import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
@@ -80,7 +63,7 @@
* @author lazyman, garbika
*/
@Service(value = "reportManager")
-public class ReportManagerImpl implements ReportManager, ChangeHook, ReadHook {
+public class ReportManagerImpl implements ReportManager {
public static final String HOOK_URI = "http://midpoint.evolveum.com/model/report-hook-1";
@@ -91,7 +74,6 @@ public class ReportManagerImpl implements ReportManager, ChangeHook, ReadHook {
private static final String DELETE_REPORT_OUTPUT = CLASS_NAME_WITH_DOT + "deleteReportOutput";
private static final String REPORT_OUTPUT_DATA = CLASS_NAME_WITH_DOT + "getReportOutputData";
- @Autowired private HookRegistry hookRegistry;
@Autowired private TaskManager taskManager;
@Autowired private PrismContext prismContext;
@Autowired private ReportService reportService;
@@ -100,22 +82,6 @@ public class ReportManagerImpl implements ReportManager, ChangeHook, ReadHook {
@Autowired @Qualifier("cacheRepositoryService") private RepositoryService repositoryService;
@Autowired private SecurityEnforcer securityEnforcer;
- @PostConstruct
- public void init() {
- hookRegistry.registerChangeHook(HOOK_URI, this);
- hookRegistry.registerReadHook(HOOK_URI, this);
- }
-
- @Override
- public void invoke(PrismObject object, Collection> options,
- Task task, OperationResult parentResult) throws SchemaException {
-
- if (ReportType.class.equals(object.getCompileTimeClass()) && !isRaw(options)) {
- //noinspection unchecked
- ReportTypeUtil.applyDefinition((PrismObject) object, prismContext);
- }
- }
-
private boolean isRaw(Collection> options) {
return GetOperationOptions.isRaw(SelectorOptions.findRootOptions(options));
}
@@ -141,14 +107,10 @@ public void runReport(PrismObject object, PrismContainer report, PrismObject object) {
- if(object.getRealValue() != null && object.getRealValue().getJasper() != null) {
- return true;
- }
- return false;
- }
-
- /**
- * Transforms change:
- * 1/ ReportOutputType DELETE to MODIFY some attribute to mark it for deletion.
- * 2/ ReportType ADD and MODIFY should compute jasper design and styles if necessary
- *
- * @param context
- * @param task
- * @param parentResult
- * @return
- * @throws UnsupportedEncodingException
- */
- @Override
- public HookOperationMode invoke(@NotNull ModelContext context, @NotNull Task task, @NotNull OperationResult parentResult) {
- ModelState state = context.getState();
- if (state != ModelState.FINAL) {
- LOGGER.trace("report manager called in state = {}, exiting.", state);
- return HookOperationMode.FOREGROUND;
- } else {
- LOGGER.trace("report manager called in state = {}, proceeding.", state);
- }
-
- boolean relatesToReport = false;
- boolean isDeletion = false;
- PrismObject> object = null;
- for (Object o : context.getProjectionContexts()) {
- boolean deletion = false;
- object = ((ModelElementContext>) o).getObjectNew();
- if (object == null) {
- deletion = true;
- object = ((ModelElementContext>) o).getObjectOld();
- }
- if (object == null) {
- LOGGER.warn("Probably invalid projection context: both old and new objects are null");
- } else if (object.getCompileTimeClass().isAssignableFrom(ReportType.class)) {
- relatesToReport = true;
- isDeletion = deletion;
- }
- }
-
- if (LOGGER.isTraceEnabled()) {
- LOGGER.trace("change relates to report: " + relatesToReport + ", is deletion: " + isDeletion);
- }
-
- if (!relatesToReport) {
- LOGGER.trace("invoke() EXITING: Changes not related to report");
- return HookOperationMode.FOREGROUND;
- }
-
- if (isDeletion) {
- LOGGER.trace("invoke() EXITING because operation is DELETION");
- return HookOperationMode.FOREGROUND;
- }
-
- OperationResult result = parentResult.createSubresult(CLASS_NAME_WITH_DOT + "invoke");
- try {
- ReportType reportType = (ReportType) object.asObjectable();
- JasperReportEngineConfigurationType jasperConfig = reportType.getJasper();
- JasperDesign jasperDesign = null;
-
- byte[] reportTemplateBase64;
- reportTemplateBase64 = jasperConfig.getTemplate();
-
- if (reportTemplateBase64 == null){
- String message = "Report template must not be null";
- LOGGER.error(message);
- result.recordFatalError(message, new SystemException());
- }
- else
- {
- byte[] reportTemplate = ReportUtils.decodeIfNeeded(reportTemplateBase64);
- InputStream inputStreamJRXML = new ByteArrayInputStream(reportTemplate);
- jasperDesign = JRXmlLoader.load(inputStreamJRXML);
- LOGGER.trace("load jasper design : {}", jasperDesign);
- }
- // Compile template
- JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
- LOGGER.trace("compile jasper design, create jasper report : {}", jasperReport);
-
- //result.computeStatus();
- result.recordSuccessIfUnknown();
-
- }
- catch (JRException ex) {
- String message = "Cannot load or compile jasper report: " + ex.getMessage();
- LOGGER.error(message);
- result.recordFatalError(message, ex);
- }
-
-
- return HookOperationMode.FOREGROUND;
- }
-
-
- @Override
- public void invokeOnException(@NotNull ModelContext context, @NotNull Throwable throwable, @NotNull Task task, @NotNull OperationResult result) {
-
- }
-
@Override
public void cleanupReports(CleanupPolicyType cleanupPolicy, OperationResult parentResult) {
OperationResult result = parentResult.createSubresult(CLEANUP_REPORT_OUTPUTS);
@@ -343,7 +200,7 @@ public void cleanupReports(CleanupPolicyType cleanupPolicy, OperationResult pare
int deleted = 0;
int problems = 0;
- for (PrismObject reportDataPrism : obsoleteReportDatas){
+ for (PrismObject reportDataPrism : obsoleteReportDatas) {
ReportDataType reportData = reportDataPrism.asObjectable();
LOGGER.trace("Removing report output {} along with {} file.", reportData.getName().getOrig(),
@@ -365,15 +222,15 @@ public void cleanupReports(CleanupPolicyType cleanupPolicy, OperationResult pare
result.computeStatusIfUnknown();
LOGGER.info("Report cleanup procedure " +
- (interrupted ? "was interrupted" : "finished") +
- ". Successfully deleted {} report outputs; there were problems with deleting {} report ouptuts.", deleted, problems);
+ (interrupted ? "was interrupted" : "finished") +
+ ". Successfully deleted {} report outputs; there were problems with deleting {} report ouptuts.", deleted, problems);
String suffix = interrupted ? " Interrupted." : "";
if (problems == 0) {
parentResult.createSubresult(CLEANUP_REPORT_OUTPUTS + ".statistics").recordStatus(OperationResultStatus.SUCCESS,
"Successfully deleted " + deleted + " report output(s)." + suffix);
} else {
parentResult.createSubresult(CLEANUP_REPORT_OUTPUTS + ".statistics").recordPartialError("Successfully deleted " +
- deleted + " report output(s), "
+ deleted + " report output(s), "
+ "there was problems with deleting " + problems + " report outputs.");
}
}
@@ -428,8 +285,7 @@ public void deleteReportData(ReportDataType reportData, OperationResult parentRe
modelService.executeChanges(deltas, null, task, result);
result.computeStatusIfUnknown();
- }
- catch (Exception e) {
+ } catch (Exception e) {
result.recordFatalError("Cannot delete the report output because of a exception.", e);
throw e;
}
@@ -451,16 +307,16 @@ public InputStream getReportDataStream(String reportDataOid, OperationResult par
// and should not depend on user privileges.
try {
- ReportDataType reportOutput = modelService.getObject(ReportDataType.class, reportDataOid, null, task,
+ ReportDataType reportData = modelService.getObject(ReportDataType.class, reportDataOid, null, task,
result).asObjectable();
// Extra safety check: traces can be retrieved only when special authorization is present
- if (ObjectTypeUtil.hasArchetype(reportOutput, SystemObjectsType.ARCHETYPE_TRACE.value())) {
+ if (ObjectTypeUtil.hasArchetype(reportData, SystemObjectsType.ARCHETYPE_TRACE.value())) {
securityEnforcer.authorize(ModelAuthorizationAction.READ_TRACE.getUrl(), null,
AuthorizationParameters.EMPTY, null, task, result);
}
- String filePath = reportOutput.getFilePath();
+ String filePath = reportData.getFilePath();
if (StringUtils.isEmpty(filePath)) {
result.recordFatalError("Report output file path is not defined.");
return null;
@@ -474,7 +330,7 @@ public InputStream getReportDataStream(String reportDataOid, OperationResult par
return null;
}
Holder inputStreamHolder = new Holder<>();
- String originalNodeId = reportOutput.getNodeRef() != null ? reportOutput.getNodeRef().getOid() : null;
+ String originalNodeId = reportData.getNodeRef() != null ? reportData.getNodeRef().getOid() : null;
PrismObject executorNode = clusterExecutionHelper.executeWithFallback(originalNodeId,
(client, node, result1) -> {
client.path(ModelPublicConstants.CLUSTER_REPORT_FILE_PATH);
@@ -483,7 +339,7 @@ public InputStream getReportDataStream(String reportDataOid, OperationResult par
Response response = client.get();
Response.StatusType statusInfo = response.getStatusInfo();
LOGGER.debug("Retrieving report output file ({}) from {} finished with status {}: {}",
- fileName, reportOutput.getNodeRef().getOid(), statusInfo.getStatusCode(), statusInfo.getReasonPhrase());
+ fileName, reportData.getNodeRef().getOid(), statusInfo.getStatusCode(), statusInfo.getReasonPhrase());
if (statusInfo.getFamily() == Response.Status.Family.SUCCESSFUL) {
Object entity = response.getEntity();
if (entity == null || entity instanceof InputStream) {
@@ -496,14 +352,14 @@ public InputStream getReportDataStream(String reportDataOid, OperationResult par
}
} else {
LOGGER.warn("Retrieving report output file ({}) from {} finished with status {}: {}",
- fileName, reportOutput.getNodeRef().getOid(), statusInfo.getStatusCode(), statusInfo.getReasonPhrase());
+ fileName, reportData.getNodeRef().getOid(), statusInfo.getStatusCode(), statusInfo.getReasonPhrase());
result1.recordFatalError("Could not retrieve report output file: Got " + statusInfo.getStatusCode() + ": " + statusInfo.getReasonPhrase());
response.close();
}
}, new ClusterExecutionOptions().tryNodesInTransition().skipDefaultAccept(), "get report output", result);
if (executorNode != null && !executorNode.getOid().equals(originalNodeId)) {
- LOGGER.info("Recording new location of {}: {}", reportOutput, executorNode);
+ LOGGER.info("Recording new location of {}: {}", reportData, executorNode);
List> deltas = prismContext.deltaFor(ReportDataType.class)
.item(ReportDataType.F_NODE_REF).replace(createObjectRef(executorNode, prismContext))
.asItemDeltas();
diff --git a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportUtils.java b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportUtils.java
index c732ddeeaec..a0e03e9aaa5 100644
--- a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportUtils.java
+++ b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportUtils.java
@@ -54,8 +54,6 @@
import com.evolveum.prism.xml.ns._public.types_3.ProtectedStringType;
import com.evolveum.prism.xml.ns._public.types_3.RawType;
-import net.sf.jasperreports.engine.JRValueParameter;
-
import org.jetbrains.annotations.NotNull;
import java.lang.reflect.Method;
@@ -1009,24 +1007,6 @@ public static String printProperty(List property, String defaultValue) {
: defaultValue;
}
- public static Object dumpParams(Map parametersMap, int indent) {
- StringBuilder sb = new StringBuilder();
- for (Entry entry : parametersMap.entrySet()) {
- DebugUtil.debugDumpWithLabelToStringLn(sb, entry.getKey(), entry.getValue().getValue(), indent);
- }
- return sb.toString();
- }
-
- public static byte[] decodeIfNeeded(byte[] input) {
- if (input == null || input.length == 0) {
- return input;
- }
- if (input[0] == '<') {
- return input;
- }
- return Base64.decodeBase64(input);
- }
-
public static Map jasperParamsToAuditParams(Map jasperParams) {
Map auditParams = new HashMap<>();
for (Entry jasperParam : jasperParams.entrySet()) {
diff --git a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/SpringApplicationContext.java b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/SpringApplicationContext.java
deleted file mode 100644
index 64fa2cfdd1b..00000000000
--- a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/SpringApplicationContext.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2010-2018 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.report.impl;
-
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.stereotype.Component;
-
-/**
- * @author katka
- *
- */
-@Component
-public class SpringApplicationContext implements ApplicationContextAware {
-
- private static ApplicationContext appCtx;
-
-
- @Override
- public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
- SpringApplicationContext.appCtx = applicationContext;
- }
-
- public static T getBean(Class beanClass) {
- return appCtx.getBean(beanClass);
- }
-
-}
diff --git a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/controller/fileformat/FileFormatController.java b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/controller/fileformat/FileFormatController.java
index 2bb9c4224ea..fad42f2abf5 100644
--- a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/controller/fileformat/FileFormatController.java
+++ b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/controller/fileformat/FileFormatController.java
@@ -484,7 +484,7 @@ protected void searchObjectFromCollection(CollectionRefSpecificationType collect
Collection> defaultOptions, ObjectPaging paging, Task task, OperationResult result, boolean recordProgress)
throws SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException {
checkVariables(task);
- getReportService().getModelInteractionService().searchObjectFromCollection(
+ getReportService().getModelInteractionService().processObjectsFromCollection(
collectionConfig, typeForFilter, handler, defaultOptions, paging, variables, task, result, recordProgress);
}
}
diff --git a/model/report-impl/src/main/resources/jasperreports.properties b/model/report-impl/src/main/resources/jasperreports.properties
deleted file mode 100644
index 905df165ab5..00000000000
--- a/model/report-impl/src/main/resources/jasperreports.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-net.sf.jasperreports.query.executer.factory.mql=com.evolveum.midpoint.report.impl.MidPointQueryExecutorFactory
-
-net.sf.jasperreports.subreport.runner.factory=net.sf.jasperreports.engine.fill.JRContinuationSubreportRunnerFactory
-
-net.sf.jasperreports.compiler.midPoint=com.evolveum.midpoint.report.impl.JRMidpointCompiler
diff --git a/model/report-impl/src/test/java/com/evolveum/midpoint/report/AbstractReportIntegrationTest.java b/model/report-impl/src/test/java/com/evolveum/midpoint/report/AbstractReportIntegrationTest.java
index 468ed721f61..e6447e25c47 100644
--- a/model/report-impl/src/test/java/com/evolveum/midpoint/report/AbstractReportIntegrationTest.java
+++ b/model/report-impl/src/test/java/com/evolveum/midpoint/report/AbstractReportIntegrationTest.java
@@ -23,14 +23,12 @@
import com.evolveum.midpoint.report.api.ReportConstants;
import com.evolveum.midpoint.report.api.ReportManager;
-import com.evolveum.midpoint.report.impl.ReportJasperCreateTaskHandler;
import com.evolveum.midpoint.report.impl.ReportTaskHandler;
import com.evolveum.midpoint.test.util.MidPointTestConstants;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.testng.annotations.Test;
diff --git a/pom.xml b/pom.xml
index cfc2951ea12..c7b398f2658 100644
--- a/pom.xml
+++ b/pom.xml
@@ -196,7 +196,6 @@
2.5.14
2.1.4
1.5.0.17
- 6.5.0
10.11.1.1
1.9.0
3.0.0-M3
@@ -844,7 +843,7 @@
org.apache.geronimo.javamail
geronimo-javamail_1.4_mail
-
+
org.bouncycastle
bcprov-jdk15on
@@ -864,7 +863,7 @@
wss4j-ws-security-dom
${wss4j.version}
-
+
org.bouncycastle
bcprov-jdk15on
@@ -1070,85 +1069,6 @@
0.8
-
-
- net.sf.jasperreports
- jasperreports
- ${jasper.version}
-
-
- xml-apis
- xml-apis
-
-
- com.fasterxml.jackson.core
- jackson-core
-
-
- com.fasterxml.jackson.core
- jackson-databind
-
-
- com.fasterxml.jackson.core
- jackson-annotations
-
-
-
- commons-logging
- commons-logging
-
-
- bouncycastle
- bcmail-jdk14
-
-
- org.bouncycastle
- bcmail-jdk14
-
-
- bouncycastle
- bcprov-jdk14
-
-
- org.bouncycastle
- bcprov-jdk14
-
-
- org.bouncycastle
- bctsp-jdk14
-
-
-
- javax.xml.stream
- stax-api
-
-
-
-
-
- stax
- stax
- 1.2.0
-
-
- stax
- stax-api
-
-
-
-
org.apache.poi
diff --git a/repo/repo-sql-impl-test/src/test/resources/modify/system-configuration-after.xml b/repo/repo-sql-impl-test/src/test/resources/modify/system-configuration-after.xml
index fed43c10ed7..34e06010844 100644
--- a/repo/repo-sql-impl-test/src/test/resources/modify/system-configuration-after.xml
+++ b/repo/repo-sql-impl-test/src/test/resources/modify/system-configuration-after.xml
@@ -47,11 +47,6 @@
OFF
org.hibernate.internal.ExceptionMapperStandardImpl
-
-
- OFF
- net.sf.jasperreports.engine.fill.JRFillDataset
-
diff --git a/repo/repo-sql-impl-test/src/test/resources/modify/system-configuration-before.xml b/repo/repo-sql-impl-test/src/test/resources/modify/system-configuration-before.xml
index cec3f7758ef..2aa7b550efe 100644
--- a/repo/repo-sql-impl-test/src/test/resources/modify/system-configuration-before.xml
+++ b/repo/repo-sql-impl-test/src/test/resources/modify/system-configuration-before.xml
@@ -57,26 +57,22 @@
org.hibernate.internal.ExceptionMapperStandardImpl
- OFF
- net.sf.jasperreports.engine.fill.JRFillDataset
-
-
WARN
org.apache.wicket.resource.PropertiesFactory
-
+
ERROR
org.springframework.context.support.ResourceBundleMessageSource
-
+
INFO
com.evolveum.midpoint.model.impl.lens.projector.Projector
-
+
INFO
com.evolveum.midpoint.model.impl.lens.Clockwork
-
+
%date [%X{subsystem}] [%thread] %level \(%logger\): %msg%n
MIDPOINT_LOG
${midpoint.home}/log/midpoint.log
@@ -85,7 +81,7 @@
100MB
true
-
+
%date %level: %msg%n
MIDPOINT_PROFILE_LOG
${midpoint.home}/log/midpoint-profile.log
@@ -111,7 +107,7 @@
-
+
performance
Performance tracing
true
@@ -120,7 +116,7 @@
true
true
-
+
functional
Functional tracing
true
@@ -128,11 +124,11 @@
true
true
true
-
+
normal
-
+
functional-model-logging
Functional tracing (with model logging)
true
@@ -141,16 +137,16 @@
true
true
-
+
com.evolveum.midpoint.model
TRACE
-
+
normal
-
+
functional-sql-logging
Functional tracing (with SQL logging)
true
@@ -159,19 +155,19 @@
true
true
-
+
org.hibernate.SQL
TRACE
-
+
normal
-
+
/self/profile
View/edit your profile
@@ -182,7 +178,7 @@
http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#selfProfile
http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#selfAll
-
+
/self/credentials
View/edit your credentials
@@ -193,7 +189,7 @@
http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#selfCredentials
http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#selfAll
-
+
/admin/users
@@ -202,7 +198,7 @@
red
http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#users
-
+
/admin/resources
@@ -212,7 +208,7 @@
http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#resources
-
+
my-cases
@@ -230,7 +226,7 @@
-
+
manual-case-view
@@ -246,7 +242,7 @@
-
+
operation-request-case-view
@@ -262,7 +258,7 @@
-
+
approval-case-view
@@ -278,7 +274,7 @@
-
+
recon-tasks-view
30
TaskType
@@ -290,74 +286,74 @@
-
+
c:TaskType
-
+
150
- -
+
-
extension/mext:workerThreads
- -
+
-
cleanupAfterCompletion
- -
+
-
threadStopAction
- -
+
-
binding
-
+
900
- -
+
-
executionStatus
- -
+
-
unpauseAction
- -
+
-
taskIdentifier
- -
+
-
parent
- -
+
-
waitingReason
- -
+
-
stateBeforeSuspend
- -
+
-
category
- -
+
-
handlerUri
- -
+
-
lastRunStartTimestamp
- -
+
-
lastRunFinishTimestamp
- -
+
-
completionTimestamp
-
+
910
- -
+
-
progress
- -
+
-
stalledSince
@@ -365,7 +361,7 @@
-
+
safe
"Safe" expression profile. It is supposed to contain only operations that are "safe",
@@ -376,26 +372,26 @@
without any guarantees. Use at your own risk.
deny
-
+
asIs
allow
-
+
path
allow
-
+
value
allow
-
+
const
allow
-
+
script
deny
-
-
+
script-safe
deny
-
+
com.evolveum.midpoint.xml.ns._public.common.common_3
MidPoint common schema - generated bean classes
allow
-
+
com.evolveum.prism.xml.ns._public.types_3
Prism schema - bean classes
allow
-
+
java.lang.Integer
allow
-
+
java.lang.Object
Basic Java operations.
deny
-
+
equals
allow
-
+
hashCode
allow
-
+
java.lang.String
String operations are generally safe. But Groovy is adding execute() method which is very dangerous.
allow
-
+
execute
deny
-
+
java.lang.CharSequence
allow
-
+
java.lang.Enum
allow
-
+
java.util.List
List operations are generally safe. But Groovy is adding execute() method which is very dangerous.
allow
-
+
execute
deny
-
+
java.util.ArrayList
List operations are generally safe. But Groovy is adding execute() method which is very dangerous.
allow
-
+
execute
deny
-
+
java.util.Map
allow
-
+
java.util.HashMap
allow
-
+
java.util.Date
allow
-
+
javax.xml.namespace.QName
allow
-
+
javax.xml.datatype.XMLGregorianCalendar
allow
-
+
java.lang.System
Just a few methods of System are safe enough.
deny
-
+
currentTimeMillis
allow
-
+
java.lang.IllegalStateException
Basic Java exception. Also used in test.
allow
-
+
java.lang.IllegalArgumentException
Basic Java exception.
allow
-
+
com.evolveum.midpoint.model.common.expression.functions.BasicExpressionFunctions
MidPoint basic functions library
allow
-
+
com.evolveum.midpoint.model.common.expression.functions.LogExpressionFunctions
MidPoint logging functions library
allow
-
+
com.evolveum.midpoint.report.impl.ReportFunctions
MidPoint report functions library
allow
-
+
org.apache.commons.lang.StringUtils
Apache Commons: Strings
allow