Skip to content

Commit

Permalink
added case events tab (not finished)
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Mar 13, 2019
1 parent bb61b01 commit 8f4615a
Show file tree
Hide file tree
Showing 8 changed files with 215 additions and 3 deletions.
Expand Up @@ -301,6 +301,9 @@ public static String getReferencedObjectDisplayNamesAndNames(List<ObjectReferenc
}

public static String getReferencedObjectDisplayNamesAndNames(Referencable ref, boolean showTypes) {
if (ref == null){
return "";
}
String name = ref.getTargetName() == null ? "" : ref.getTargetName().getOrig();
StringBuilder sb = new StringBuilder(name);
if(showTypes) {
Expand Down
@@ -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="caseEventsPanel" />
</wicket:panel>
@@ -0,0 +1,162 @@
/*
* 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.model.LoadableModel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.component.MultivalueContainerListPanel;
import com.evolveum.midpoint.gui.impl.session.ObjectTabStorage;
import com.evolveum.midpoint.prism.PrismContainerDefinition;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.web.component.data.column.LinkColumn;
import com.evolveum.midpoint.web.component.form.Form;
import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectTabPanel;
import com.evolveum.midpoint.web.component.prism.ContainerValueWrapper;
import com.evolveum.midpoint.web.component.prism.ObjectWrapper;
import com.evolveum.midpoint.web.component.search.SearchItemDefinition;
import com.evolveum.midpoint.web.model.ContainerWrapperFromObjectWrapperModel;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseEventType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseWorkItemType;
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.model.IModel;
import org.apache.wicket.model.Model;

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

/**
* Created by honchar
*/
public class CaseEventsTabPanel extends AbstractObjectTabPanel<CaseType> {
private static final long serialVersionUID = 1L;

private static final String ID_EVENTS_PANEL = "caseEventsPanel";

public CaseEventsTabPanel(String id, Form<ObjectWrapper<CaseType>> mainForm, LoadableModel<ObjectWrapper<CaseType>> objectWrapperModel, PageBase pageBase) {
super(id, mainForm, objectWrapperModel, pageBase);
}

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

private void initLayout() {
setOutputMarkupId(true);

ContainerWrapperFromObjectWrapperModel<CaseEventType, CaseType> eventsModel = new ContainerWrapperFromObjectWrapperModel<>(getObjectWrapperModel(), CaseType.F_EVENT);
MultivalueContainerListPanel<CaseEventType, String> multivalueContainerListPanel =
new MultivalueContainerListPanel<CaseEventType, String>(ID_EVENTS_PANEL,
eventsModel, UserProfileStorage.TableId.PAGE_CASE_EVENTS_TAB,
getEventsTabStorage()) {

private static final long serialVersionUID = 1L;

@Override
protected void initPaging() {
// getWorkitemsTabStorage().setPaging(getPrismContext().queryFactory()
// .createPaging(0, ((int) CaseWorkItemsTablePanel.this.getPageBase().getItemsPerPage(getTableId()))));
}

@Override
protected ObjectQuery createQuery() {
return null;
}

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

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

@Override
protected List<IColumn<ContainerValueWrapper<CaseEventType>, String>> createColumns() {
return createCaseEventsColumns();
}

@Override
protected void itemPerformedForDefaultAction(AjaxRequestTarget target, IModel<ContainerValueWrapper<CaseEventType>> rowModel,
List<ContainerValueWrapper<CaseEventType>> listItems) {

}

@Override
protected WebMarkupContainer getSearchPanel(String contentAreaId) {
return new WebMarkupContainer(contentAreaId);
}

@Override
protected List<ContainerValueWrapper<CaseEventType>> postSearch(
List<ContainerValueWrapper<CaseEventType>> workItems) {
return workItems;
}

@Override
protected List<SearchItemDefinition> initSearchableItems(PrismContainerDefinition<CaseEventType> containerDef) {
List<SearchItemDefinition> defs = new ArrayList<>();
return defs;
}

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

setOutputMarkupId(true);

}

private List<IColumn<ContainerValueWrapper<CaseEventType>, String>> createCaseEventsColumns(){
List<IColumn<ContainerValueWrapper<CaseEventType>, String>> columns = new ArrayList<>();
columns.add(new LinkColumn<ContainerValueWrapper<CaseEventType>>(createStringResource("CaseEventsTabPanel.initiatorRefColumn")){
private static final long serialVersionUID = 1L;

@Override
protected IModel<String> createLinkModel(IModel<ContainerValueWrapper<CaseEventType>> rowModel) {
return Model.of(WebComponentUtil.getReferencedObjectDisplayNamesAndNames(unwrapRowModel(rowModel).getInitiatorRef(), false));
}

@Override
public boolean isEnabled(IModel<ContainerValueWrapper<CaseEventType>> rowModel) {
//TODO should we check any authorization?
return true;
}

@Override
public void onClick(AjaxRequestTarget target, IModel<ContainerValueWrapper<CaseEventType>> rowModel) {
}
});

return columns;
}

private ObjectTabStorage getEventsTabStorage(){
return getPageBase().getSessionStorage().getCaseEventsTabStorage();
}

private CaseEventType unwrapRowModel(IModel<ContainerValueWrapper<CaseEventType>> rowModel){
return rowModel.getObject().getContainerValue().asContainerable();
}
}
Expand Up @@ -163,8 +163,6 @@ public boolean isEnabled(IModel<ContainerValueWrapper<CaseWorkItemType>> rowMode

@Override
public void onClick(AjaxRequestTarget target, IModel<ContainerValueWrapper<CaseWorkItemType>> rowModel) {
// AssignmentPanel.this.assignmentDetailsPerformed(target);
// getMultivalueContainerListPanel().itemDetailsPerformed(target, rowModel);
}
});

Expand Down
Expand Up @@ -182,6 +182,22 @@ public String getCount() {
return Integer.toString(countWorkItems());
}
});
tabs.add(
new CountablePanelTab(parentPage.createStringResource("PageCase.events"),
getTabVisibility(ComponentConstants.UI_CASE_TAB_EVENTS_URL, false, parentPage)) {

private static final long serialVersionUID = 1L;

@Override
public WebMarkupContainer createPanel(String panelId) {
return new CaseEventsTabPanel(panelId, getMainForm(), getObjectModel(), parentPage);
}

@Override
public String getCount() {
return Integer.toString(countEvents());
}
});
return tabs;
}

Expand Down Expand Up @@ -316,4 +332,9 @@ private int countWorkItems(){
List<CaseWorkItemType> workItemsList = getObjectModel().getObject().getObject().asObjectable().getWorkItem();
return workItemsList == null ? 0 : workItemsList.size();
}

private int countEvents(){
List<CaseEventType> eventsList = getObjectModel().getObject().getObject().asObjectable().getEvent();
return eventsList == null ? 0 : eventsList.size();
}
}
Expand Up @@ -65,6 +65,7 @@ public class SessionStorage implements Serializable, DebugDumpable {
public static final String KEY_WORK_ITEMS = "workItems";
public static final String KEY_OBJECT_LIST = "objectListPage";
public static final String KEY_CASE_WORKITEMS_TAB = "workitemsTab";
public static final String KEY_CASE_EVENTS_TAB = "caseEventsTab";

private static final String KEY_TASKS = "tasks";
private static final String KEY_CERT_CAMPAIGNS = "certCampaigns";
Expand Down Expand Up @@ -196,6 +197,10 @@ public ObjectTabStorage getCaseWorkitemsTabStorage() {
return getObjectTabStorage(KEY_CASE_WORKITEMS_TAB);
}

public ObjectTabStorage getCaseEventsTabStorage() {
return getObjectTabStorage(KEY_CASE_EVENTS_TAB);
}

public ObjectTabStorage getObjectPoliciesConfigurationTabStorage() {
return getObjectTabStorage(KEY_OBJECT_POLICIES_TAB);
}
Expand Down
Expand Up @@ -94,7 +94,8 @@ public enum TableId {
NOTIFICATION_TAB_MAIL_SERVER_TABLE,
COLLECTION_VIEW_TABLE,
USERS_VIEW_TABLE,
PAGE_CASE_WORKITEMS_TAB
PAGE_CASE_WORKITEMS_TAB,
PAGE_CASE_EVENTS_TAB
}

private Map<String, Integer> tables = new HashMap<>();
Expand Down
Expand Up @@ -2472,6 +2472,7 @@ pageUser.userDetails=User details

PageCase.title=Case details
PageCase.workitemsTab=Workitems
PageCase.events=Events
PageCaseWorkItem.title=Case work item details
pageCase.button.save=Save
pageCase.button.back=Back
Expand Down Expand Up @@ -4145,6 +4146,7 @@ PolicyRulesPanel.orderColumn=Order
PolicyRule.constraintsLabel=Constraints
PolicyRule.situationLabel=Situation
PolicyRule.actionLabel=Action
CaseEventsTabPanel.initiatorRefColumn=Initiator
AbstractAssignmentDetailsPanel.doneButton=Done
ApprovalProcessesPreviewPanel.processRelatedTo=Approval process related to {0}
ApprovalProcessesPreviewPanel.process=Approval process
Expand Down

0 comments on commit 8f4615a

Please sign in to comment.