Skip to content

Commit

Permalink
further refactoring for object list pages
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Dec 17, 2018
1 parent 87c0bad commit b161a03
Show file tree
Hide file tree
Showing 20 changed files with 359 additions and 541 deletions.
Expand Up @@ -3079,4 +3079,59 @@ public static IModel<String> getIconUrlModel(IconType icon){

return Model.of(StringUtils.left(prefix, prefix.length() - 1) + sUrl);
}

public static void deleteSyncTokenPerformed(AjaxRequestTarget target, ResourceType resourceType, PageBase pageBase){
String resourceOid = resourceType.getOid();
String handlerUri = "http://midpoint.evolveum.com/xml/ns/public/model/synchronization/task/live-sync/handler-3";
ObjectReferenceType resourceRef = new ObjectReferenceType();
resourceRef.setOid(resourceOid);
PrismObject<TaskType> oldTask;

OperationResult result = new OperationResult(pageBase.getClass().getName() + "." + "deleteSyncToken");
ObjectQuery query = pageBase.getPrismContext().queryFor(TaskType.class)
.item(TaskType.F_OBJECT_REF).ref(resourceOid)
.and().item(TaskType.F_HANDLER_URI).eq(handlerUri)
.build();

List<PrismObject<TaskType>> taskList = WebModelServiceUtils.searchObjects(TaskType.class, query, result, pageBase);

if (taskList.size() != 1) {
pageBase.error(pageBase.createStringResource("pageResource.message.invalidTaskSearch"));
} else {
oldTask = taskList.get(0);
saveTask(oldTask, result, pageBase);
}

result.recomputeStatus();
pageBase.showResult(result);
target.add(pageBase.getFeedbackPanel());
}

public static void saveTask(PrismObject<TaskType> oldTask, OperationResult result, PageBase pageBase){
Task task = pageBase.createSimpleTask(pageBase.getClass().getName() + "." + "saveSyncTask");

PrismProperty property = oldTask.findProperty(ItemPath.create(TaskType.F_EXTENSION, SchemaConstants.SYNC_TOKEN));

if(property == null){
return;
}
Object value = property.getRealValue();

ObjectDelta<TaskType> delta = pageBase.getPrismContext().deltaFactory().object().createModifyDelta(oldTask.getOid(),
pageBase.getPrismContext().deltaFactory().property()
.createModificationDeleteProperty(ItemPath.create(TaskType.F_EXTENSION, SchemaConstants.SYNC_TOKEN), property.getDefinition(), value),
TaskType.class);

if(LOGGER.isTraceEnabled()){
LOGGER.trace(delta.debugDump());
}

try {
pageBase.getModelService().executeChanges(WebComponentUtil.createDeltaCollection(delta), null, task, result);
} catch (Exception e){
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't save task.", e);
result.recordFatalError("Couldn't save task.", e);
}
result.recomputeStatus();
}
}
Expand Up @@ -18,7 +18,8 @@
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<body>
<wicket:extend>
<form wicket:id="mainForm" class="form-inline">
<form wicket:id="mainForm" class="clearfix form-horizontal">
<wicket:child/>
<div wicket:id="table"/>
</form>
</wicket:extend>
Expand Down
Expand Up @@ -18,6 +18,7 @@
import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.component.MainObjectListPanel;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectOrdering;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
Expand All @@ -27,10 +28,14 @@
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportOutputType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.ColGroup;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;

import java.util.ArrayList;
Expand Down Expand Up @@ -65,17 +70,16 @@ protected void onInitialize(){
initLayout();
}

private void initLayout() {
protected void initLayout() {
Form mainForm = new com.evolveum.midpoint.web.component.form.Form(ID_MAIN_FORM);
add(mainForm);

initTable(mainForm);
}

private void initTable(Form mainForm) {
Collection<SelectorOptions<GetOperationOptions>> options = new ArrayList<>();
MainObjectListPanel<O> userListPanel = new MainObjectListPanel<O>(ID_TABLE,
getType(), UserProfileStorage.TableId.TABLE_USERS, options, this) {
getType(), UserProfileStorage.TableId.TABLE_USERS, getQueryOptions(), this) {
private static final long serialVersionUID = 1L;

@Override
Expand Down Expand Up @@ -110,6 +114,21 @@ protected ObjectQuery createContentQuery() {
}
return contentQuery;
}

@Override
protected ObjectQuery addFilterToContentQuery(ObjectQuery query) {
return PageAdminObjectList.this.addCustomFilterToContentQuery(query);
}

@Override
protected boolean isClickable(IModel<SelectableBean<O>> rowModel) {
return isNameColumnClickable(rowModel);
}

@Override
protected List<ObjectOrdering> createCustomOrdering(SortParam<String> sortParam) {
return PageAdminObjectList.this.createCustomOrdering(sortParam);
}
};

userListPanel.setAdditionalBoxCssClasses(GuiStyleConstants.CLASS_OBJECT_USER_BOX_CSS_CLASSES);
Expand All @@ -123,16 +142,37 @@ protected ObjectQuery createContentQuery() {

protected abstract List<InlineMenuItem> createRowActions();

protected abstract void objectDetailsPerformed(AjaxRequestTarget target, O object);
protected void objectDetailsPerformed(AjaxRequestTarget target, O object){}

protected abstract void newObjectActionPerformed(AjaxRequestTarget target);
protected void newObjectActionPerformed(AjaxRequestTarget target){}

protected ObjectFilter getArchetypeViewFilter(){
return null;
}

protected ObjectQuery addCustomFilterToContentQuery(ObjectQuery query){
return query;
}

protected boolean isNameColumnClickable(IModel<SelectableBean<O>> rowModel) {
return true;
}

protected List<ObjectOrdering> createCustomOrdering(SortParam<String> sortParam) {
return null;
}

protected Collection<SelectorOptions<GetOperationOptions>> getQueryOptions(){
return null;
}

protected Form getMainForm(){
return (Form) get(ID_MAIN_FORM);
}

public MainObjectListPanel<O> getObjectListPanel() {
return (MainObjectListPanel<O>) get(createComponentPath(ID_MAIN_FORM, ID_TABLE));
}


}
Expand Up @@ -61,7 +61,7 @@


@PageDescriptor(url = "/admin/auditLogDetails", action = {
@AuthorizationAction(actionUri = PageAdminReports.AUTH_REPORTS_ALL,
@AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_REPORTS_ALL_URL,
label = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_LABEL,
description = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_DESCRIPTION),
@AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_AUDIT_LOG_VIEWER_URL,
Expand Down
Expand Up @@ -17,7 +17,7 @@
* Created by honchar.
*/
@PageDescriptor(url = "/admin/auditLogViewer", action = {
@AuthorizationAction(actionUri = PageAdminReports.AUTH_REPORTS_ALL, label = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_LABEL, description = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_DESCRIPTION),
@AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_REPORTS_ALL_URL, label = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_LABEL, description = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_DESCRIPTION),
@AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_AUDIT_LOG_VIEWER_URL, label = "PageAuditLogViewer.auth.auditLogViewer.label", description = "PageAuditLogViewer.auth.auditLogViewer.description") })
public class PageAuditLogViewer extends PageBase {

Expand Down
Expand Up @@ -17,30 +17,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<body>
<wicket:extend>

<form wicket:id="mainForm" class="form-inline">


<div wicket:id="reportType" />



<div wicket:id="table"/>

</form>

<!-- <wicket:fragment wicket:id="tableHeader"> -->
<!-- <form class="form-inline pull-right search-form" wicket:id="searchForm"> -->
<!-- <div class="form-group"> -->
<!-- <label class="sr-only"> -->
<!-- <wicket:message key="pageCreatedReports.filter.reportType"/> -->
<!-- </label> -->
<!-- <select class="form-control input-sm" wicket:id="reportType"/> -->
<!-- </div> -->

<!-- <div wicket:id="basicSearch"/> -->
<!-- </form> -->
<!-- </wicket:fragment> -->
<div wicket:id="reportType"/>
</wicket:extend>
</body>
</html>

0 comments on commit b161a03

Please sign in to comment.