Skip to content

Commit

Permalink
Task events table for audit event details page
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Oct 28, 2016
1 parent 9788950 commit bfbda88
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 60 deletions.
Expand Up @@ -20,7 +20,10 @@
import com.evolveum.midpoint.web.component.form.Form;
import com.evolveum.midpoint.web.component.prism.ObjectWrapper;
import com.evolveum.midpoint.web.page.admin.reports.component.AuditLogViewerPanel;
import com.evolveum.midpoint.web.page.admin.reports.dto.AuditSearchDto;
import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventStageType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType;

/**
* Created by honchar.
Expand All @@ -35,7 +38,14 @@ public ObjectHistoryTabPanel(String id, Form mainForm, LoadableModel<ObjectWrapp
}

private void initLayout(LoadableModel<ObjectWrapper<F>> focusWrapperModel, PageBase page) {
AuditLogViewerPanel panel = new AuditLogViewerPanel(ID_MAIN_PANEL, page, focusWrapperModel.getObject().getOid());
AuditSearchDto searchDto = new AuditSearchDto();
ObjectReferenceType ort = new ObjectReferenceType();
ort.setOid(focusWrapperModel.getObject().getOid());
searchDto.setTargetName(ort);

searchDto.setEventStage(AuditEventStageType.EXECUTION);

AuditLogViewerPanel panel = new AuditLogViewerPanel(ID_MAIN_PANEL, page, searchDto);
panel.setOutputMarkupId(true);
add(panel);
}
Expand Down
Expand Up @@ -15,9 +15,11 @@
import com.evolveum.midpoint.web.page.admin.reports.dto.AuditEventRecordProvider;
import com.evolveum.midpoint.web.page.admin.reports.dto.AuditSearchDto;
import com.evolveum.midpoint.web.page.admin.workflow.dto.ProcessInstanceDto;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventStageType;
import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventTypeType;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
Expand Down Expand Up @@ -101,6 +103,7 @@ public class PageAuditLogDetails extends PageBase{

private static final String ID_BUTTON_BACK = "back";
private static final String TASK_IDENTIFIER_PARAMETER = "taskIdentifier";
private static final int TASK_EVENTS_TABLE_SIZE = 10;

private static final String OPERATION_RESOLVE_REFENRENCE_NAME = PageAuditLogDetails.class.getSimpleName()
+ ".resolveReferenceName()";
Expand Down Expand Up @@ -142,31 +145,44 @@ public Map<String, Object> getParameters() {


BoxedTablePanel<AuditEventRecordType> table = new BoxedTablePanel<AuditEventRecordType>(
ID_HISTORY_PANEL, provider, initColumns()) {
ID_HISTORY_PANEL, provider, initColumns(), UserProfileStorage.TableId.TASK_EVENTS_TABLE, TASK_EVENTS_TABLE_SIZE) {

@Override
protected Item<AuditEventRecordType> customizeNewRowItem(Item<AuditEventRecordType> item,
protected Item<AuditEventRecordType> customizeNewRowItem(final Item<AuditEventRecordType> item,
final IModel<AuditEventRecordType> rowModel) {

if (rowModel.getObject().getTimestamp().equals(recordModel.getObject().getTimestamp())){
item.add(new AttributeAppender("style", "background-color: #eee; border-color: #d6d6d6; color: #000"));
}

item.add(new AttributeAppender("style", new AbstractReadOnlyModel<String>() {
item.add(new AjaxEventBehavior("click") {
private static final long serialVersionUID = 1L;

@Override
public String getObject() {
// if (rowModel.getObject().isSelected()){
// return "background-color: #eee; border-color: #d6d6d6; color: #000;";
// } else {
// return "";
// }
return "";
protected void onEvent(AjaxRequestTarget target) {
PageAuditLogDetails.this.rowItemClickPerformed(target, item, rowModel);
}
}));
});
return item;
}
};
table.getFooterMenu().setVisible(false);
table.getFooterCountLabel().setVisible(false);

table.setOutputMarkupId(true);
table.setAdditionalBoxCssClasses("without-box-header-top-border");
eventPanel.add(table);
eventPanel.addOrReplace(table);

}

protected void rowItemClickPerformed(AjaxRequestTarget target,
Item<AuditEventRecordType> item, final IModel<AuditEventRecordType> rowModel){
recordModel.setObject(rowModel.getObject());
WebMarkupContainer eventPanel = (WebMarkupContainer)PageAuditLogDetails.this.get(ID_EVENT_PANEL);
initAuditLogHistoryPanel(eventPanel);
initEventPanel(eventPanel);
initDeltasPanel(eventPanel);
target.add(eventPanel);

}

Expand Down Expand Up @@ -227,7 +243,7 @@ private void initEventPanel(WebMarkupContainer eventPanel){

WebMarkupContainer eventDetailsPanel = new WebMarkupContainer(ID_EVENT_DETAILS_PANEL);
eventDetailsPanel.setOutputMarkupId(true);
eventPanel.add(eventDetailsPanel);
eventPanel.addOrReplace(eventDetailsPanel);

final Label identifier = new Label(ID_PARAMETERS_EVENT_IDENTIFIER , new PropertyModel(recordModel,ID_PARAMETERS_EVENT_IDENTIFIER));
identifier.setOutputMarkupId(true);
Expand Down Expand Up @@ -329,7 +345,7 @@ private void initDeltasPanel(WebMarkupContainer eventPanel){


}
eventPanel.add(deltaScene);
eventPanel.addOrReplace(deltaScene);

}

Expand Down
Expand Up @@ -23,33 +23,33 @@
<span wicket:id="feedback" class="text-danger"/>
</div>
<div wicket:id="parametersPanel" class="box-body">
<div class="col-md-4">
<label class=".col-ms-1"><wicket:message key="PageAuditLogViewer.fromLabel" /></label>
<div class=".col-ms-3" wicket:id="fromField"/>
<label class=".col-ms-1"><wicket:message key="PageAuditLogViewer.toLabel" /></label>
<div class=".col-ms-3" wicket:id="toField" />
<div class="col-md-6">
<label><wicket:message key="PageAuditLogViewer.fromLabel" /></label>
<div wicket:id="fromField"/>
<label><wicket:message key="PageAuditLogViewer.toLabel" /></label>
<div wicket:id="toField" />
<label wicket:id="targetNameLabel"></label>
<div class="col-ms-3" wicket:id="targetNameField" />
<div wicket:id="targetNameField" />
<label><wicket:message key="PageAuditLogViewer.targetOwnerNameLabel" /></label>
<div class="col-ms-3" wicket:id="targetOwnerNameField" />
<div wicket:id="targetOwnerNameField" />
<label><wicket:message key="PageAuditLogViewer.initiatorNameLabel" /></label>
<div class="col-ms-3" wicket:id="initiatorNameField"/>
<div wicket:id="initiatorNameField"/>
</div>
<div class="col-md-4" style="padding-left: 5px;">
<label class="col-ms-1"><wicket:message key="PageAuditLogViewer.eventTypeLabel" /></label>
<div class="col-ms-3" wicket:id="eventTypeField" />
<label class="col-ms-1"><wicket:message key="PageAuditLogViewer.eventStageLabel" /></label>
<div class="col-ms-3" wicket:id="eventStageField" />
<label class="col-ms-1"><wicket:message key="PageAuditLogViewer.outcomeLabel" /></label>
<div class="col-ms-3" wicket:id="outcomeField" />
</div>
<div class="col-md-4" style="padding-left: 5px;">
<label class=".col-ms-1"><wicket:message key="PageAuditLogViewer.channelLabel" /></label>
<div class=".col-ms-3" wicket:id="channelField" />
<div class="col-md-6" style="padding-left: 5px;">
<label><wicket:message key="PageAuditLogViewer.eventTypeLabel" /></label>
<div wicket:id="eventTypeField" />
<label wicket:id="eventStageLabel" />
<div wicket:id="eventStageField" />
<label><wicket:message key="PageAuditLogViewer.outcomeLabel" /></label>
<div wicket:id="outcomeField" />
<!--</div>-->
<!--<div class="col-md-4" style="padding-left: 5px;">-->
<label><wicket:message key="PageAuditLogViewer.channelLabel" /></label>
<div wicket:id="channelField" />

<label class=".col-ms-1"><wicket:message key="PageAuditLogViewer.hostIdentifierLabel" /></label>
<div class=".col-ms-3" wicket:id="hostIdentifierField" />
<div class=".col-ms-1"><a class="btn btn-primary" wicket:id="searchButton"/></div>
<label><wicket:message key="PageAuditLogViewer.hostIdentifierLabel" /></label>
<div wicket:id="hostIdentifierField" />
<div><a class="btn btn-primary" wicket:id="searchButton"/></div>
</div>
</div>
<div wicket:id="table"/>
Expand Down
Expand Up @@ -73,6 +73,7 @@ public class AuditLogViewerPanel extends BasePanel{
private static final String ID_HOST_IDENTIFIER = "hostIdentifierField";
private static final String ID_EVENT_TYPE = "eventTypeField";
private static final String ID_EVENT_STAGE = "eventStageField";
private static final String ID_EVENT_STAGE_LABEL = "eventStageLabel";
private static final String ID_OUTCOME = "outcomeField";

private static final String ID_MAIN_FORM = "mainForm";
Expand All @@ -83,26 +84,25 @@ public class AuditLogViewerPanel extends BasePanel{
+ ".resolveReferenceName()";

private IModel<AuditSearchDto> auditSearchDto;
private AuditSearchDto searchDto;
private PageBase pageBase;
private String targetObjectOid;

public AuditLogViewerPanel(String id, PageBase pageBase){
this(id, pageBase, null);
}

public AuditLogViewerPanel(String id, PageBase pageBase, String targetObjectOid){
public AuditLogViewerPanel(String id, PageBase pageBase, AuditSearchDto searchDto){
super(id);
this.pageBase = pageBase;
this.targetObjectOid = targetObjectOid;
this.searchDto = searchDto;
initAuditSearchModel();
initLayout();
}

private void initAuditSearchModel(){
AuditSearchDto searchDto = new AuditSearchDto();
ObjectReferenceType ort = new ObjectReferenceType();
ort.setOid(targetObjectOid);
searchDto.setTargetName(ort);
if (searchDto == null){
searchDto = new AuditSearchDto();
}
auditSearchDto = new Model<AuditSearchDto>(searchDto);

}
Expand All @@ -117,7 +117,7 @@ private void initLayout() {
mainForm.add(feedback);

initParametersPanel(mainForm);
initTable(mainForm);
addOrReplaceTable(mainForm);
}

private void initParametersPanel(Form mainForm) {
Expand Down Expand Up @@ -174,13 +174,31 @@ private void initParametersPanel(Form mainForm) {
eventType.setOutputMarkupId(true);
parametersPanel.add(eventType);

Label eventStageLabel = new Label(ID_EVENT_STAGE_LABEL, pageBase.createStringResource("PageAuditLogViewer.eventStageLabel"));
eventStageLabel.add(new VisibleEnableBehaviour(){
@Override
public boolean isVisible(){
return searchDto.getEventStage() == null ||
StringUtils.isEmpty(searchDto.getEventStage().value());
}
});
eventStageLabel.setOutputMarkupId(true);
parametersPanel.add(eventStageLabel);

ListModel<AuditEventStageType> eventStageListModel = new ListModel<AuditEventStageType>(
Arrays.asList(AuditEventStageType.values()));
PropertyModel<AuditEventStageType> eventStageModel = new PropertyModel<AuditEventStageType>(
auditSearchDto, AuditSearchDto.F_EVENT_STAGE);
DropDownChoicePanel<AuditEventStageType> eventStage = new DropDownChoicePanel<AuditEventStageType>(
ID_EVENT_STAGE, eventStageModel, eventStageListModel,
new EnumChoiceRenderer<AuditEventStageType>(), true);
eventStage.add(new VisibleEnableBehaviour() {
@Override
public boolean isVisible() {
return searchDto.getEventStage() == null ||
StringUtils.isEmpty(searchDto.getEventStage().value());
}
});
eventStage.getBaseFormComponent().add(new EmptyOnChangeAjaxFormUpdatingBehavior());
eventStage.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour());
eventStage.setOutputMarkupId(true);
Expand Down Expand Up @@ -250,7 +268,7 @@ protected void replaceIfEmpty(ObjectType object) {
targetNameLabel.add(new VisibleEnableBehaviour(){
@Override
public boolean isVisible(){
return StringUtils.isEmpty(targetObjectOid);
return searchDto.getTargetName() == null || StringUtils.isEmpty(searchDto.getTargetName().getOid());
}
});
parametersPanel.add(targetNameLabel);
Expand All @@ -270,7 +288,7 @@ protected void replaceIfEmpty(ObjectType object) {
chooseTargetPanel.add(new VisibleEnableBehaviour(){
@Override
public boolean isVisible(){
return StringUtils.isEmpty(targetObjectOid);
return searchDto.getTargetName() == null || StringUtils.isEmpty(searchDto.getTargetName().getOid());
}
});
parametersPanel.add(chooseTargetPanel);
Expand All @@ -282,7 +300,7 @@ public boolean isVisible(){
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
Form mainForm = (Form) getParent().getParent();
refreshTable(mainForm);
addOrReplaceTable(mainForm);
getFeedbackPanel().getFeedbackMessages().clear();
target.add(getFeedbackPanel());
target.add(mainForm);
Expand All @@ -297,17 +315,7 @@ protected void onError(AjaxRequestTarget target, Form<?> form){
parametersPanel.add(ajaxButton);
}

private void initTable(Form mainForm) {
AuditEventRecordProvider provider = new AuditEventRecordProvider(AuditLogViewerPanel.this);
BoxedTablePanel table = new BoxedTablePanel(ID_TABLE, provider, initColumns(),
UserProfileStorage.TableId.PAGE_AUDIT_LOG_VIEWER,
(int) pageBase.getItemsPerPage(UserProfileStorage.TableId.PAGE_AUDIT_LOG_VIEWER));
table.setShowPaging(true);
table.setOutputMarkupId(true);
mainForm.addOrReplace(table);
}

private void refreshTable(Form mainForm) {
private void addOrReplaceTable(Form mainForm) {
AuditEventRecordProvider provider = new AuditEventRecordProvider(AuditLogViewerPanel.this) {
private static final long serialVersionUID = 1L;

Expand Down
Expand Up @@ -77,7 +77,8 @@ public enum TableId {
PAGE_WORK_ITEM_HISTORY_PANEL,
PAGE_TASK_HISTORY_PANEL,
PAGE_TASK_CURRENT_WORK_ITEMS_PANEL,
PAGE_AUDIT_LOG_VIEWER
PAGE_AUDIT_LOG_VIEWER,
TASK_EVENTS_TABLE

}

Expand Down

0 comments on commit bfbda88

Please sign in to comment.