Skip to content

Commit

Permalink
Merge branch 'master' into feature/tracing
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Jun 21, 2019
2 parents 003d893 + b1db339 commit 6d3c155
Show file tree
Hide file tree
Showing 61 changed files with 2,338 additions and 524 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,11 @@ protected WebMarkupContainer createButtonToolbar(String id) {
return bar != null ? bar : super.createButtonToolbar(id);
}

@Override
protected boolean hideFooterIfSinglePage(){
return ObjectListPanel.this.hideFooterIfSinglePage();
}

};
table.setOutputMarkupId(true);
String storageKey = getStorageKey();
Expand Down Expand Up @@ -695,4 +700,8 @@ public ObjectPaging getCurrentTablePaging(){
}
return storage.getPaging();
}

protected boolean hideFooterIfSinglePage(){
return false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ public String getCssClass() {


});
experimental.add(AttributeModifier.replace("title", createStringResource("ItemHeaderPanel.experimentalFeature")));
experimental.add(new VisibleBehaviour(() -> getModelObject() != null && getModelObject().isExperimental()));
labelContainer.add(experimental);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -970,9 +970,9 @@ public void onClick(AjaxRequestTarget target) {

if (targetRef != null && targetRef.getValues() != null && targetRef.getValues().size() > 0) {
PrismReferenceValueWrapperImpl<ObjectReferenceType> refWrapper = (PrismReferenceValueWrapperImpl<ObjectReferenceType>)targetRef.getValues().get(0);
ObjectReferenceType ort = refWrapper.getRealValue();
if (!StringUtils.isEmpty(ort.getOid())) {
WebComponentUtil.dispatchToObjectDetailsPage(ort, AssignmentPanel.this, false);
if (!StringUtils.isEmpty(refWrapper.getNewValue().getOid())) {
Class<? extends ObjectType> targetClass = ObjectTypes.getObjectTypeFromTypeQName(refWrapper.getRealValue().getType()).getClassDefinition();
WebComponentUtil.dispatchToObjectDetailsPage(targetClass, refWrapper.getNewValue().getOid(), AssignmentPanel.this, false);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,11 @@
import com.evolveum.midpoint.schema.util.ApprovalContextUtil;
import com.evolveum.midpoint.web.component.DateLabelComponent;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.page.admin.cases.PageCases;
import com.evolveum.midpoint.web.util.TooltipBehavior;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
Expand All @@ -50,6 +53,7 @@
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.StringResourceModel;

import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;
import java.util.*;

Expand Down Expand Up @@ -621,6 +625,141 @@ public IModel<String> getDataModel(IModel<PrismContainerValueWrapper<CaseWorkIte
return columns;
}

public static List<IColumn<SelectableBean<CaseType>, String>> getDefaultCaseColumns(PageBase pageBase) {

List<IColumn<SelectableBean<CaseType>, String>> columns = new ArrayList<IColumn<SelectableBean<CaseType>, String>>();

IColumn column = new PropertyColumn(createStringResource("pageCases.table.description"), "value.description");
columns.add(column);

column = new AbstractColumn<SelectableBean<CaseType>, String>(createStringResource("pageCases.table.objectRef"), "objectRef"){
@Override
public void populateItem(Item<ICellPopulator<SelectableBean<CaseType>>> item, String componentId, IModel<SelectableBean<CaseType>> rowModel) {
item.add(new Label(componentId, new IModel<String>() {
@Override
public String getObject() {
CaseType caseModelObject = rowModel.getObject().getValue();
if (caseModelObject == null || caseModelObject.getObjectRef() == null) {
return "";
}
return WebComponentUtil.getEffectiveName(caseModelObject.getObjectRef(), AbstractRoleType.F_DISPLAY_NAME, pageBase,
pageBase.getClass().getSimpleName() + "." + "loadCaseObjectRefName");
}
}));
}
};
columns.add(column);

column = new AbstractColumn<SelectableBean<CaseType>, String>(createStringResource("pageCases.table.actors")){
@Override
public void populateItem(Item<ICellPopulator<SelectableBean<CaseType>>> item, String componentId, IModel<SelectableBean<CaseType>> rowModel) {
item.add(new Label(componentId, new IModel<String>() {
@Override
public String getObject() {
String actors = null;
SelectableBean<CaseType> caseModel = rowModel.getObject();
if (caseModel != null) {
CaseType caseIntance = caseModel.getValue();
if (caseIntance != null) {
List<CaseWorkItemType> caseWorkItemTypes = caseIntance.getWorkItem();
List<String> actorsList = new ArrayList<String>();
for (CaseWorkItemType caseWorkItem : caseWorkItemTypes) {
List<ObjectReferenceType> assignees = caseWorkItem.getAssigneeRef();
for (ObjectReferenceType actor : assignees) {
actorsList.add(WebComponentUtil.getEffectiveName(actor, AbstractRoleType.F_DISPLAY_NAME, pageBase,
pageBase.getClass().getSimpleName() + "." + "loadCaseActorsNames"));
}
}
actors = String.join(", ", actorsList);
}
}
return actors;
}
}));
}
};
columns.add(column);

column = new AbstractColumn<SelectableBean<CaseType>, String>(
createStringResource("pageCases.table.openTimestamp"),
MetadataType.F_CREATE_TIMESTAMP.getLocalPart()) {

private static final long serialVersionUID = 1L;

@Override
public void populateItem(Item<ICellPopulator<SelectableBean<CaseType>>> cellItem,
String componentId, final IModel<SelectableBean<CaseType>> rowModel) {
CaseType object = rowModel.getObject().getValue();
MetadataType metadata = object != null ? object.getMetadata() : null;
XMLGregorianCalendar createdCal = metadata != null ? metadata.getCreateTimestamp() : null;
final Date created;
if (createdCal != null) {
created = createdCal.toGregorianCalendar().getTime();
// cellItem.add(AttributeModifier.replace("title", WebComponentUtil.getLocalizedDate(created, DateLabelComponent.LONG_MEDIUM_STYLE)));
// cellItem.add(new TooltipBehavior());
} else {
created = null;
}
cellItem.add(new Label(componentId, new IModel<String>() {
@Override
public String getObject() {
return WebComponentUtil.getShortDateTimeFormattedValue(created, pageBase);
}
}));
}
};
columns.add(column);

column = new PropertyColumn<SelectableBean<CaseType>, String>(createStringResource("pageCases.table.closeTimestamp"), CaseType.F_CLOSE_TIMESTAMP.getLocalPart(), "value.closeTimestamp") {
@Override
public void populateItem(Item<ICellPopulator<SelectableBean<CaseType>>> cellItem,
String componentId, final IModel<SelectableBean<CaseType>> rowModel) {
CaseType object = rowModel.getObject().getValue();
XMLGregorianCalendar closedCal = object != null ? object.getCloseTimestamp() : null;
final Date closed;
if (closedCal != null) {
closed = closedCal.toGregorianCalendar().getTime();
cellItem.add(AttributeModifier.replace("title", WebComponentUtil.getLocalizedDate(closed, DateLabelComponent.LONG_MEDIUM_STYLE)));
cellItem.add(new TooltipBehavior());
} else {
closed = null;
}
cellItem.add(new Label(componentId, new IModel<String>() {
@Override
public String getObject() {
return WebComponentUtil.getShortDateTimeFormattedValue(closed, pageBase);
}
}));
}
};
columns.add(column);

column = new PropertyColumn<SelectableBean<CaseType>, String>(createStringResource("pageCases.table.state"), CaseType.F_STATE.getLocalPart(), "value.state");
columns.add(column);

column = new AbstractExportableColumn<SelectableBean<CaseType>, String>(
createStringResource("pageCases.table.workitems")) {

@Override
public void populateItem(Item<ICellPopulator<SelectableBean<CaseType>>> cellItem,
String componentId, IModel<SelectableBean<CaseType>> model) {
cellItem.add(new Label(componentId,
model.getObject().getValue() != null && model.getObject().getValue().getWorkItem() != null ?
model.getObject().getValue().getWorkItem().size() : null));
}

@Override
public IModel<String> getDataModel(IModel<SelectableBean<CaseType>> rowModel) {
return Model.of(rowModel.getObject().getValue() != null && rowModel.getObject().getValue().getWorkItem() != null ?
Integer.toString(rowModel.getObject().getValue().getWorkItem().size()) : "");
}


};
columns.add(column);
return columns;
}

public static <C extends Containerable> C unwrapRowModel(IModel<PrismContainerValueWrapper<C>> rowModel){
return rowModel.getObject().getRealValue();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2010-2019 Evolveum
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->

<wicket:panel xmlns:wicket="http://wicket.apache.org">
<div wicket:id="casesTable" />
</wicket:panel>
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
/*
* Copyright (c) 2010-2019 Evolveum
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.evolveum.midpoint.web.page.admin.cases;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.component.MainObjectListPanel;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.web.component.data.column.CheckBoxHeaderColumn;
import com.evolveum.midpoint.web.component.data.column.ColumnUtils;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.request.mapper.parameter.PageParameters;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
* Created by honchar
*/
//TODO very-very temporary panel. to be refactored/unified with PageCases table
public class CasesListPanel extends BasePanel<CaseType> {
private static final long serialVersionUID = 1L;

private static final String ID_CASES_TABLE = "casesTable";

public CasesListPanel(String id){
super(id);
}

@Override
protected void onInitialize(){
super.onInitialize();
initLayout();
}

private void initLayout(){
MainObjectListPanel<CaseType, CompiledObjectCollectionView> table = new MainObjectListPanel<CaseType, CompiledObjectCollectionView>(ID_CASES_TABLE,
CaseType.class, UserProfileStorage.TableId.PAGE_CASE_CHILD_CASES_TAB, Collections.emptyList(), getPageBase()) {

@Override
protected void objectDetailsPerformed(AjaxRequestTarget target, CaseType caseInstance) {
PageParameters pageParameters = new PageParameters();
pageParameters.add(OnePageParameterEncoder.PARAMETER, caseInstance.getOid());
CasesListPanel.this.getPageBase().navigateToNext(PageCase.class, pageParameters);
}

@Override
protected IColumn<SelectableBean<CaseType>, String> createCheckboxColumn() {
if (isDashboard()){
return null;
} else {
return super.createCheckboxColumn();
}
}


@Override
protected List<IColumn<SelectableBean<CaseType>, String>> createColumns() {
return ColumnUtils.getDefaultCaseColumns(CasesListPanel.this.getPageBase());
}

@Override
protected boolean isCreateNewObjectEnabled(){
return false;
}

@Override
protected ObjectQuery addFilterToContentQuery(ObjectQuery query) {
if (query == null) {
query = CasesListPanel.this.getPageBase().getPrismContext().queryFor(CaseType.class)
.build();
}
ObjectFilter casesFilter = getCasesFilter();
if (casesFilter != null){
query.addFilter(casesFilter);
}
return query;
}

@Override
protected WebMarkupContainer createTableButtonToolbar(String id) {
return null;
}

@Override
protected List<InlineMenuItem> createInlineMenu(){
return new ArrayList<>();
}

@Override
protected WebMarkupContainer createHeader(String headerId) {
if (!isDashboard()){
return super.createHeader(headerId);
} else {
WebMarkupContainer headerContainer = new WebMarkupContainer(headerId);
headerContainer.setVisible(false);
return headerContainer;
}
}

@Override
protected boolean hideFooterIfSinglePage(){
return CasesListPanel.this.isDashboard();
}

};
table.setOutputMarkupId(true);
add(table);
}

protected ObjectFilter getCasesFilter(){
return null;
}

protected boolean isDashboard(){
return false;
}

}
Loading

0 comments on commit 6d3c155

Please sign in to comment.