Skip to content

Commit

Permalink
Merge branch 'feature/reports'
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Jun 25, 2020
2 parents 1d04d16 + 1b9d2c1 commit a246c32
Show file tree
Hide file tree
Showing 20 changed files with 1,102 additions and 199 deletions.
Expand Up @@ -4396,6 +4396,20 @@ public static Class<? extends PageBase> resolveSelfPage() {
return null;
}

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

String lookupTableUid = valueEnumerationRef.getOid();
Task task = page.createSimpleTask("loadLookupTable");
OperationResult result = task.getResult();

Collection<SelectorOptions<GetOperationOptions>> options = WebModelServiceUtils.createLookupTableRetrieveOptions(page.getSchemaHelper());
return WebModelServiceUtils.loadObject(LookupTableType.class, lookupTableUid, options, page, task, result);
}

public static <AH extends AssignmentHolderType> boolean hasAnyArchetypeAssignemnt(AH assignmentHolder) {
if (assignmentHolder.getAssignment() == null) {
return false;
Expand Down
Expand Up @@ -9,6 +9,15 @@

import javax.annotation.PostConstruct;

import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper;

import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.web.page.admin.reports.component.SearchFilterConfigurationPanel;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectCollectionType;

import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;

import org.apache.wicket.markup.html.panel.Panel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
Expand All @@ -34,6 +43,14 @@ public <IW extends ItemWrapper> boolean match(IW wrapper) {

@Override
protected Panel getPanel(PrismPropertyPanelContext<SearchFilterType> panelCtx) {
PrismPropertyWrapper<SearchFilterType> searchFilterItemWrapper = panelCtx.unwrapWrapperModel();
PrismContainerValueWrapper containerWrapper = searchFilterItemWrapper.getParent();
if (containerWrapper != null && containerWrapper.getRealValue() instanceof ObjectCollectionType){
ObjectCollectionType collectionObj = (ObjectCollectionType) containerWrapper.getRealValue();
return new SearchFilterConfigurationPanel(panelCtx.getComponentId(), panelCtx.getRealValueModel(),
(Class<? extends ObjectType>)WebComponentUtil.qnameToClass(panelCtx.getPageBase().getPrismContext(),
collectionObj.getType() != null ? collectionObj.getType() : ObjectType.COMPLEX_TYPE));
}
return new AceEditorPanel(panelCtx.getComponentId(), null, new SearchFilterTypeModel(panelCtx.getRealValueModel(), panelCtx.getPageBase()), 10);
}

Expand Down
Expand Up @@ -13,8 +13,9 @@
<wicket:child/>
</div>
<div wicket:id="buttonsPanel" class="box-footer pull-right">
<a wicket:id="applyFilterButton" class="btn btn-group btn-sm btn-default"></a>
<a wicket:id="saveFilterButton" class="btn btn-group btn-sm btn-default"></a>
<a wicket:id="okButton" class="btn btn-group btn-sm btn-default"></a>
<!-- <a wicket:id="applyFilterButton" class="btn btn-group btn-sm btn-default"></a>-->
<!-- <a wicket:id="saveFilterButton" class="btn btn-group btn-sm btn-default"></a>-->
<a wicket:id="cancelButton" class="btn btn-group btn-sm btn-default"></a>
</div>
</wicket:panel>
Expand Down
Expand Up @@ -6,6 +6,10 @@
*/
package com.evolveum.midpoint.web.component.search;

import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.web.component.search.filter.SearchFilter;
import com.evolveum.prism.xml.ns._public.query_3.SearchFilterType;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.model.IModel;
Expand All @@ -20,19 +24,23 @@
/**
* @author Kateryna Honchar
*/
public abstract class AbstractSearchConfigurationPanel extends BasePanel<Search> {
public abstract class AbstractSearchConfigurationPanel<F extends SearchFilter, O extends ObjectType> extends BasePanel<F> {
private static final long serialVersionUID = 1L;

private static final Trace LOG = TraceManager.getTrace(AbstractSearchConfigurationPanel.class);

protected static final String ID_CONFIGURATION_PANEL = "configurationPanel";
private static final String ID_BUTTONS_PANEL = "buttonsPanel";
private static final String ID_APPLY_FILTER_BUTTON = "applyFilterButton";
private static final String ID_SAVE_FILTER_BUTTON = "saveFilterButton";
private static final String ID_OK_BUTTON = "okButton";
// private static final String ID_APPLY_FILTER_BUTTON = "applyFilterButton";
// private static final String ID_SAVE_FILTER_BUTTON = "saveFilterButton";
private static final String ID_CANCEL_BUTTON = "cancelButton";

public AbstractSearchConfigurationPanel(String id, IModel<Search> searchModel) {
private Class<O> type;

public AbstractSearchConfigurationPanel(String id, IModel<F> searchModel, Class<O> type) {
super(id, searchModel);
this.type = type;
}

@Override
Expand All @@ -56,27 +64,38 @@ private void initButtonsPanel() {
buttonsPanel.setOutputMarkupId(true);
add(buttonsPanel);

AjaxButton applyFilterButton = new AjaxButton(ID_APPLY_FILTER_BUTTON, createStringResource("SearchPropertiesConfigPanel.applyFilterButton")) {
AjaxButton applyFilterButton = new AjaxButton(ID_OK_BUTTON, createStringResource("Button.ok")) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget ajaxRequestTarget) {
//todo
okButtonClicked(ajaxRequestTarget);
}
};
applyFilterButton.setOutputMarkupId(true);
buttonsPanel.add(applyFilterButton);

AjaxButton saveFilterButton = new AjaxButton(ID_SAVE_FILTER_BUTTON, createStringResource("SearchPropertiesConfigPanel.saveFilterButton")) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget ajaxRequestTarget) {
//todo
}
};
saveFilterButton.setOutputMarkupId(true);
buttonsPanel.add(saveFilterButton);
// AjaxButton applyFilterButton = new AjaxButton(ID_APPLY_FILTER_BUTTON, createStringResource("SearchPropertiesConfigPanel.applyFilterButton")) {
// private static final long serialVersionUID = 1L;
//
// @Override
// public void onClick(AjaxRequestTarget ajaxRequestTarget) {
// //todo
// }
// };
// applyFilterButton.setOutputMarkupId(true);
// buttonsPanel.add(applyFilterButton);
//
// AjaxButton saveFilterButton = new AjaxButton(ID_SAVE_FILTER_BUTTON, createStringResource("SearchPropertiesConfigPanel.saveFilterButton")) {
// private static final long serialVersionUID = 1L;
//
// @Override
// public void onClick(AjaxRequestTarget ajaxRequestTarget) {
// //todo
// }
// };
// saveFilterButton.setOutputMarkupId(true);
// buttonsPanel.add(saveFilterButton);

AjaxButton cancelButton = new AjaxButton(ID_CANCEL_BUTTON, createStringResource("SearchPropertiesConfigPanel.cancelButton")) {
private static final long serialVersionUID = 1L;
Expand All @@ -92,6 +111,11 @@ public void onClick(AjaxRequestTarget ajaxRequestTarget) {

protected abstract void initConfigurationPanel(WebMarkupContainer configPanel);

@NotNull
protected abstract <O extends ObjectType> Class<O> getObjectClass();
protected void okButtonClicked(AjaxRequestTarget target){

}

public Class<O> getType() {
return type;
}
}
@@ -0,0 +1,76 @@
/*
* 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.component.search;

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.impl.factory.panel.SearchFilterTypeModel;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.util.exception.SchemaException;
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.component.search.filter.BasicSearchFilter;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.prism.xml.ns._public.query_3.SearchFilterType;

import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.model.IModel;

/**
* @author honchar
*/
public class BasicSearchFilterModel<O extends ObjectType> implements IModel<BasicSearchFilter<O>> {

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

private static final long serialVersionUID = 1L;

private IModel<SearchFilterType> baseModel;
private PageBase pageBase;
private Class<O> type;
private BasicSearchFilter<O> basicSearchFilter;

public BasicSearchFilterModel(IModel<SearchFilterType> valueWrapper, Class<O> type, PageBase pageBase) {
this.baseModel = valueWrapper;
this.pageBase = pageBase;
this.type = type;
}

@Override
public void detach() {
// TODO Auto-generated method stub

}

@Override
public BasicSearchFilter<O> getObject() {
if (basicSearchFilter == null){
basicSearchFilter = loadBasicSearchFilter();
}
return basicSearchFilter;
}

private BasicSearchFilter<O> loadBasicSearchFilter(){
try {
// SearchFilterType value = baseModel.getObject();
// if (value == null) {
// return new BasicSearchFilter<O>(pageBase.getPrismContext(), null, type);
// }

ObjectFilter objectFilter = pageBase.getPrismContext().getQueryConverter().createObjectFilter(type, baseModel.getObject());
return new BasicSearchFilter<O>(pageBase.getPrismContext(), objectFilter, type);
} catch (SchemaException e) {
// TODO handle
LoggingUtils.logUnexpectedException(LOGGER, "Cannot serialize filter", e);
}
return null;
}

@Override
public void setObject(BasicSearchFilter<O> object) {
}
}
@@ -0,0 +1,27 @@
<!--
~ Copyright (c) 2010-2020 Evolveum
~
~ This work is dual-licensed under the Apache License 2.0
~ and European Union Public License. See LICENSE file for details.
-->

<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div>
<div class="col-md-10" wicket:id="referenceValueTextField"/>
<div class="col-sm-1">
<a wicket:id="editButton" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-edit fa-lg"/>
</a>
</div>
</div>

<div wicket:id="refPopover" class="popover bottom">
<div class="popover-content" wicket:id="refPopoverBody">
<div wicket:id="refPopoverPanel" class="input-group input-group-sm">
</div>
</div>
</div>
</wicket:panel>
</html>

0 comments on commit a246c32

Please sign in to comment.