Skip to content

Commit

Permalink
Fix Case Details page, display case data
Browse files Browse the repository at this point in the history
  • Loading branch information
bpowers1215 committed Oct 6, 2017
1 parent 55739ac commit 15f5c4a
Show file tree
Hide file tree
Showing 2 changed files with 125 additions and 68 deletions.
@@ -1,23 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2010-2017 Evolveum
~ Copyright (c) 2010-2015 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
~ 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.
-->
<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<body>
<wicket:extend>
<wicket:child />
<form wicket:id="mainForm" class="clearfix form-horizontal">
<div class="row">
<div class="col-md-12">
<div class="box box-success">
<div class="box-header with-border">
<h3 class="box-title"><wicket:message key="PageCase.details"/></h3>
</div>
<div class="box-body no-padding">
<table class="table table-striped">
<tr>
<td><wicket:message key="PageCase.name"/></td>
<td><div wicket:id="caseName" /></td>
</tr>
<tr>
<td><wicket:message key="PageCase.description"/></td>
<td><div wicket:id="caseDescription" /></td>
</tr>
<tr>
<td><wicket:message key="PageCase.resource"/></td>
<td><div wicket:id="caseResource" /></td>
</tr>
<tr>
<td><wicket:message key="PageCase.event"/></td>
<td><div wicket:id="caseEvent" /></td>
</tr>
<tr>
<td><wicket:message key="PageCase.outcome"/></td>
<td><div wicket:id="caseOutcome" /></td>
</tr>
<tr>
<td><wicket:message key="PageCase.closeTimestamp"/></td>
<td><div wicket:id="caseCloseTimestamp" /></td>
</tr>
<tr>
<td><wicket:message key="PageCase.state"/></td>
<td><div wicket:id="caseState" /></td>
</tr>
</table>
</div>
</div>
</div>
</div>

<div class="main-button-bar" style="padding-top: 15px"> <!-- TODO some implicit way of inserting the padding? -->
<a class="btn btn-default" wicket:id="backButton" />
</div>

</form>

</wicket:extend>
</body>
</html>
@@ -1,6 +1,7 @@
package com.evolveum.midpoint.web.page.admin.cases;

import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.model.NonEmptyLoadableModel;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.prism.PrismObject;
Expand All @@ -20,19 +21,18 @@
import com.evolveum.midpoint.web.component.prism.ContainerStatus;
import com.evolveum.midpoint.web.component.prism.ObjectWrapper;
import com.evolveum.midpoint.web.component.prism.PrismObjectPanel;
import com.evolveum.midpoint.web.component.progress.ProgressReportingAwarePage;
import com.evolveum.midpoint.web.component.util.ObjectWrapperUtil;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.resources.PageResources;
import com.evolveum.midpoint.web.page.admin.resources.content.PageAccount;
import com.evolveum.midpoint.web.resource.img.ImgResources;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.PackageResourceReference;
import org.apache.wicket.util.string.StringValue;
Expand All @@ -54,23 +54,33 @@ public class PageCase extends PageAdminCases {
private static final String OPERATION_LOAD_CASE = DOT_CLASS + "loadCase";
private static final String OPERATION_SAVE_CASE = DOT_CLASS + "saveCase";


private IModel<ObjectWrapper<CaseType>> caseModel;
private static final String ID_MAIN_FORM = "mainForm";
private static final String ID_CASE_NAME = "caseName";
private static final String ID_CASE_DESCRIPTION = "caseDescription";
private static final String ID_CASE_RESOURCE = "caseResource";
private static final String ID_CASE_EVENT = "caseEvent";
private static final String ID_CASE_OUTCOME = "caseOutcome";
private static final String ID_CASE_CLOSE_TIMESTAMP = "caseCloseTimestamp";
private static final String ID_CASE_STATE = "caseState";
private static final String ID_BACK_BUTTON = "backButton";

//private IModel<ObjectWrapper<CaseType>> caseModel;
private PrismObject<CaseType> caseInstance;
private NonEmptyLoadableModel<CaseType> caseModel;
private static final String ID_PROTECTED_MESSAGE = "protectedMessage";

public PageCase(PageParameters parameters) {
caseModel = new LoadableModel<ObjectWrapper<CaseType>>(false) {
caseModel = new NonEmptyLoadableModel<CaseType>(false) {

@Override
protected ObjectWrapper<CaseType> load() {
protected CaseType load() {
return loadCase(parameters);
}
};
LOGGER.trace("initLayout()");
initLayout();
}

private ObjectWrapper<CaseType> loadCase(PageParameters parameters) {
private CaseType loadCase(PageParameters parameters) {

Task task = createSimpleTask(OPERATION_LOAD_CASE);
OperationResult result = task.getResult();
Expand All @@ -83,95 +93,93 @@ private ObjectWrapper<CaseType> loadCase(PageParameters parameters) {
LOGGER.trace("loadCase(parameters[oid]={})", oid);


PrismObject<CaseType> caseInstance = WebModelServiceUtils.loadObject(CaseType.class, oid.toString(), options,
caseInstance = WebModelServiceUtils.loadObject(CaseType.class, oid.toString(), options,
PageCase.this, task, result);

if (caseInstance == null) {
LOGGER.trace("caseInstance:[oid]={} was null", oid);
getSession().error(getString("pageCase.message.cantEditCase"));
showResult(result);
throw new RestartResponseException(PageCases.class);
}else{
return caseInstance.asObjectable();
}


ObjectWrapper wrapper = ObjectWrapperUtil.createObjectWrapper(null, null, caseInstance, ContainerStatus.MODIFYING, task, this);
OperationResultType fetchResult = caseInstance.getPropertyRealValue(ShadowType.F_FETCH_RESULT, OperationResultType.class);
wrapper.setFetchResult(OperationResult.createOperationResult(fetchResult));
wrapper.setShowEmpty(false);
return wrapper;
// LOGGER.trace("caseInstance={})", caseInstance);
// ObjectWrapper wrapper = ObjectWrapperUtil.createObjectWrapper(null, null, caseInstance, ContainerStatus.MODIFYING, task, this);
// OperationResultType fetchResult = caseInstance.getPropertyRealValue(ShadowType.F_FETCH_RESULT, OperationResultType.class);
// wrapper.setFetchResult(OperationResult.createOperationResult(fetchResult));
// wrapper.setShowEmpty(false);
// return caseInstance;
}

private void initLayout() {
Form mainForm = new Form("mainForm");
mainForm.setMultiPart(true);
LOGGER.trace("initLayout()");
Form mainForm = new Form(ID_MAIN_FORM);
add(mainForm);

PrismObjectPanel<CaseType> caseForm = new PrismObjectPanel<CaseType>("case", caseModel, new PackageResourceReference(
ImgResources.class, ImgResources.HDD_PRISM), mainForm, this);

mainForm.add(caseForm);
//PrismObjectPanel<CaseType> caseForm = new PrismObjectPanel<CaseType>("case", caseModel, new PackageResourceReference(
// ImgResources.class, ImgResources.HDD_PRISM), mainForm, this);
//mainForm.add(caseForm);

PropertyModel caseNameProperty = new PropertyModel<>(caseModel, CaseType.F_NAME.getLocalPart());
mainForm.add(new Label(ID_CASE_NAME, caseNameProperty));
PropertyModel caseDescriptionProperty = new PropertyModel<>(caseModel, CaseType.F_DESCRIPTION.getLocalPart());
mainForm.add(new Label(ID_CASE_DESCRIPTION, caseDescriptionProperty));
PropertyModel caseResourceProperty = new PropertyModel<>(caseModel, CaseType.F_OBJECT_REF.getLocalPart());
PropertyModel caseResourceNameProperty = new PropertyModel<>(caseResourceProperty, ObjectReferenceType.F_TARGET_NAME.getLocalPart());
mainForm.add(new Label(ID_CASE_RESOURCE, caseResourceNameProperty));
PropertyModel caseEventProperty = new PropertyModel<>(caseModel, CaseType.F_EVENT.getLocalPart());
mainForm.add(new Label(ID_CASE_EVENT, caseEventProperty));
PropertyModel caseOutcomeProperty = new PropertyModel<>(caseModel, CaseType.F_OUTCOME.getLocalPart());
mainForm.add(new Label(ID_CASE_OUTCOME, caseOutcomeProperty));
PropertyModel caseCloseTimestampProperty = new PropertyModel<>(caseModel, CaseType.F_CLOSE_TIMESTAMP.getLocalPart());
mainForm.add(new Label(ID_CASE_CLOSE_TIMESTAMP, caseCloseTimestampProperty));
PropertyModel caseStateProperty = new PropertyModel<>(caseModel, CaseType.F_STATE.getLocalPart());
mainForm.add(new Label(ID_CASE_STATE, caseStateProperty));

initButtons(mainForm);
}

private void initButtons(Form mainForm) {
AjaxSubmitButton save = new AjaxSubmitButton("save", createStringResource("pageCase.button.save")) {

@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
savePerformed(target);
}

@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
target.add(getFeedbackPanel());
}
};
save.add(new VisibleEnableBehaviour() {

@Override
public boolean isVisible() {
ObjectWrapper wrapper = caseModel.getObject();
return !wrapper.isProtectedAccount();
}
});
mainForm.add(save);

AjaxButton back = new AjaxButton("back", createStringResource("pageCase.button.back")) {
AjaxButton back = new AjaxButton(ID_BACK_BUTTON, createStringResource("pageCase.button.back")) {

@Override
public void onClick(AjaxRequestTarget target) {
cancelPerformed(target);
}
};
mainForm.add(back);
// AjaxSubmitButton save = new AjaxSubmitButton("save", createStringResource("pageCase.button.save")) {
//
// @Override
// protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
// savePerformed(target);
// }
//
// @Override
// protected void onError(AjaxRequestTarget target, Form<?> form) {
// target.add(getFeedbackPanel());
// }
// };
// save.add(new VisibleEnableBehaviour() {
//
// @Override
// public boolean isVisible() {
// ObjectWrapper wrapper = caseModel.getObject();
// return !wrapper.isProtectedAccount();
// }
// });
// mainForm.add(save);
}


@Override
protected IModel<String> createPageTitleModel() {
return new LoadableModel<String>(false) {

@Override
protected String load() {
PrismObject<CaseType> caseInstance = caseModel.getObject().getObject();
String caseName = WebComponentUtil.getName(caseInstance);

String name = caseInstance.asObjectable().getDescription();

return createStringResourceStatic(PageCase.this, "PageCase.title", caseName, name).getString();
}
};
}


private void savePerformed(AjaxRequestTarget target) {
LOGGER.debug("Saving account changes.");

OperationResult result = new OperationResult(OPERATION_SAVE_CASE);
try {
WebComponentUtil.revive(caseModel, getPrismContext());
ObjectWrapper wrapper = caseModel.getObject();
ObjectWrapper wrapper = ObjectWrapperUtil.createObjectWrapper(null, null, caseInstance, ContainerStatus.MODIFYING, null, this);
ObjectDelta<CaseType> delta = wrapper.getObjectDelta();
if (delta == null) {
return;
Expand Down

0 comments on commit 15f5c4a

Please sign in to comment.