Skip to content

Commit

Permalink
Merge branch 'master' into feature/password-hash
Browse files Browse the repository at this point in the history
  • Loading branch information
semancik committed Mar 13, 2017
2 parents f8f9e3a + a8837dc commit 8f545b4
Show file tree
Hide file tree
Showing 20 changed files with 892 additions and 193 deletions.
Expand Up @@ -15,15 +15,28 @@
*/
package com.evolveum.midpoint.gui.api.component;

import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import com.evolveum.midpoint.web.component.AjaxIconButton;
import com.evolveum.midpoint.web.component.util.Selectable;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.export.CSVDataExporter;
import org.apache.wicket.extensions.markup.html.repeater.data.table.export.ExportToolbar;
import org.apache.wicket.extensions.markup.html.repeater.data.table.export.IDataExporter;
import org.apache.wicket.extensions.markup.html.repeater.data.table.export.IExportableColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.markup.html.link.ResourceLink;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.markup.repeater.data.IDataProvider;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

Expand All @@ -36,6 +49,9 @@
import com.evolveum.midpoint.web.page.admin.configuration.PageImportObject;
import com.evolveum.midpoint.web.session.UserProfileStorage.TableId;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.request.resource.ResourceStreamResource;
import org.apache.wicket.util.resource.IResourceStream;

/**
* @author katkav
Expand Down Expand Up @@ -94,17 +110,14 @@ public boolean isClickable(IModel<SelectableBean<O>> rowModel) {
}
}

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

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

protected abstract void newObjectPerformed(AjaxRequestTarget target);

protected void exportData(AjaxRequestTarget target){

}

@Override
protected WebMarkupContainer createTableButtonToolbar(String id) {
Expand All @@ -113,9 +126,9 @@ protected WebMarkupContainer createTableButtonToolbar(String id) {

private static class ButtonBar extends Fragment {

private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 1L;

public <O extends ObjectType> ButtonBar(String id, String markupId, MainObjectListPanel<O> markupProvider) {
public <O extends ObjectType> ButtonBar(String id, String markupId, MainObjectListPanel<O> markupProvider) {
super(id, markupId, markupProvider);

initLayout(markupProvider);
Expand All @@ -125,13 +138,13 @@ private <O extends ObjectType> void initLayout(final MainObjectListPanel<O> main
AjaxIconButton refreshIcon = new AjaxIconButton(ID_REFRESH, new Model<>("fa fa-refresh"),
mainObjectListPanel.createStringResource("MainObjectListPanel.refresh")) {

private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 1L;

@Override
@Override
public void onClick(AjaxRequestTarget target) {
mainObjectListPanel.clearCache();
mainObjectListPanel.refreshTable((Class<O>) mainObjectListPanel.getType(), target);
mainObjectListPanel.clearCache();
mainObjectListPanel.refreshTable((Class<O>) mainObjectListPanel.getType(), target);

target.add((Component) mainObjectListPanel.getTable());
}
};
Expand All @@ -140,8 +153,8 @@ public void onClick(AjaxRequestTarget target) {
AjaxIconButton newObjectIcon = new AjaxIconButton(ID_NEW_OBJECT, new Model<>("fa fa-plus"),
mainObjectListPanel.createStringResource("MainObjectListPanel.newObject")) {

private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
mainObjectListPanel.newObjectPerformed(target);
Expand All @@ -152,26 +165,27 @@ public void onClick(AjaxRequestTarget target) {
AjaxIconButton importObject = new AjaxIconButton(ID_IMPORT_OBJECT, new Model<>("fa fa-upload"),
mainObjectListPanel.createStringResource("MainObjectListPanel.import")) {

private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
((PageBase) getPage()).navigateToNext(PageImportObject.class);
}
};
add(importObject);

AjaxIconButton exportData = new AjaxIconButton(ID_EXPORT_DATA, new Model<>("fa fa-download"),
mainObjectListPanel.createStringResource("MainObjectListPanel.export")) {
String fileName = mainObjectListPanel.getType().getSimpleName() +
"_" + mainObjectListPanel.createStringResource("MainObjectListPanel.exportFileName").getString();
CSVDataExporter csvDataExporter = new CSVDataExporter();
ResourceStreamResource resource = (new ResourceStreamResource() {
protected IResourceStream getResourceStream() {
return new ExportToolbar.DataExportResourceStreamWriter(csvDataExporter, mainObjectListPanel.getTable().getDataTable());
}
}).setFileName(fileName + "." + csvDataExporter.getFileNameExtension());
AbstractLink exportDataLink = (new ResourceLink(ID_EXPORT_DATA, resource)).setBody(csvDataExporter.getDataFormatNameModel());

private static final long serialVersionUID = 1L;
add(exportDataLink);

@Override
public void onClick(AjaxRequestTarget target) {
mainObjectListPanel.exportData(target);
}
};
add(exportData);
}
}
}
}
Expand Up @@ -194,6 +194,7 @@ protected WebMarkupContainer createButtonToolbar(String id) {

return bar != null ? bar : super.createButtonToolbar(id);
}

};
table.setOutputMarkupId(true);
String storageKey = getStorageKey();
Expand Down Expand Up @@ -373,7 +374,7 @@ private PageStorage getPageStorage(String storageKey){
}

@SuppressWarnings("unchecked")
private BaseSortableDataProvider<SelectableBean<O>> getDataProvider() {
protected BaseSortableDataProvider<SelectableBean<O>> getDataProvider() {
BoxedTablePanel<SelectableBean<O>> table = getTable();
BaseSortableDataProvider<SelectableBean<O>> provider = (BaseSortableDataProvider<SelectableBean<O>>) table
.getDataTable().getDataProvider();
Expand Down
Expand Up @@ -18,12 +18,15 @@

import java.util.List;

import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.ISortableDataProvider;
import org.apache.wicket.extensions.markup.html.repeater.data.table.export.CSVDataExporter;
import org.apache.wicket.extensions.markup.html.repeater.data.table.export.ExportToolbar;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.navigation.paging.IPageable;
Expand Down
Expand Up @@ -19,6 +19,7 @@
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.export.IExportableColumn;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.AbstractReadOnlyModel;
Expand All @@ -32,12 +33,14 @@
import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusPresentationProperties;
import com.evolveum.midpoint.web.page.error.PageOperationResult;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import org.apache.wicket.model.Model;

/**
* @author semancik
*
*/
public class ObjectNameColumn<O extends ObjectType> extends AbstractColumn<SelectableBean<O>, String> {
public class ObjectNameColumn<O extends ObjectType> extends AbstractColumn<SelectableBean<O>, String>
implements IExportableColumn<SelectableBean<O>, String>{
private static final long serialVersionUID = 1L;

private static final Trace LOGGER = TraceManager.getTrace(ObjectNameColumn.class);
Expand Down Expand Up @@ -79,7 +82,7 @@ public String getObject() {


}
}
}
};

if (isClickable(rowModel)) { // beware: rowModel is very probably resolved at this moment; but it seems to cause no problems
Expand Down Expand Up @@ -114,4 +117,10 @@ public boolean isClickable(IModel<SelectableBean<O>> rowModel) {
public void onClick(AjaxRequestTarget target, IModel<SelectableBean<O>> rowModel) {
}

public IModel<String> getDataModel(IModel<SelectableBean<O>> rowModel) {
SelectableBean<O> selectableBean = rowModel.getObject();
O value = selectableBean.getValue();
return Model.of(value == null ? "" : WebComponentUtil.getName(value));
}

}
Expand Up @@ -40,6 +40,7 @@
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.export.AbstractExportableColumn;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.repeater.Item;
Expand Down Expand Up @@ -253,7 +254,7 @@ private List<IColumn<SelectableBean<UserType>, String>> initColumns() {
SelectableBean.F_VALUE + ".emailAddress");
columns.add(column);

column = new AbstractColumn<SelectableBean<UserType>, String>(
column = new AbstractExportableColumn<SelectableBean<UserType>, String>(
createStringResource("pageUsers.accounts")) {

@Override
Expand All @@ -263,6 +264,14 @@ public void populateItem(Item<ICellPopulator<SelectableBean<UserType>>> cellItem
model.getObject().getValue() != null ?
model.getObject().getValue().getLinkRef().size() : null));
}

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


};

columns.add(column);
Expand Down
Expand Up @@ -10,6 +10,7 @@
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.export.AbstractExportableColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
Expand Down Expand Up @@ -54,6 +55,7 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
import org.apache.wicket.model.Model;

public abstract class AbstractRoleMemberPanel<T extends AbstractRoleType> extends BasePanel<T> {

Expand Down Expand Up @@ -400,7 +402,7 @@ protected void detailsPerformed(AjaxRequestTarget target, ObjectType object) {
private List<IColumn<SelectableBean<ObjectType>, String>> createMembersColumns() {
List<IColumn<SelectableBean<ObjectType>, String>> columns = new ArrayList<>();

IColumn<SelectableBean<ObjectType>, String> column = new AbstractColumn<SelectableBean<ObjectType>, String>(
IColumn<SelectableBean<ObjectType>, String> column = new AbstractExportableColumn<SelectableBean<ObjectType>, String>(
createStringResource("TreeTablePanel.fullName.displayName")) {
private static final long serialVersionUID = 1L;

Expand All @@ -409,22 +411,19 @@ public void populateItem(Item<ICellPopulator<SelectableBean<ObjectType>>> cellIt
String componentId, IModel<SelectableBean<ObjectType>> rowModel) {
SelectableBean<ObjectType> bean = rowModel.getObject();
ObjectType object = bean.getValue();
if (object instanceof UserType) {
cellItem.add(new Label(componentId,
WebComponentUtil.getOrigStringFromPoly(((UserType) object).getFullName())));
} else if (object instanceof AbstractRoleType) {
cellItem.add(new Label(componentId, WebComponentUtil
.getOrigStringFromPoly(((AbstractRoleType) object).getDisplayName())));
} else {
cellItem.add(new Label(componentId, ""));
}
cellItem.add(new Label(componentId,
getMemberObjectDisplayName(object)));
}

@Override
public IModel<String> getDataModel(IModel<SelectableBean<ObjectType>> rowModel) {
return Model.of(getMemberObjectDisplayName(rowModel.getObject().getValue()));
}

};
columns.add(column);

column = new AbstractColumn<SelectableBean<ObjectType>, String>(
column = new AbstractExportableColumn<SelectableBean<ObjectType>, String>(
createStringResource("TreeTablePanel.identifier.description")) {
private static final long serialVersionUID = 1L;

Expand All @@ -433,14 +432,12 @@ public void populateItem(Item<ICellPopulator<SelectableBean<ObjectType>>> cellIt
String componentId, IModel<SelectableBean<ObjectType>> rowModel) {
SelectableBean<ObjectType> bean = rowModel.getObject();
ObjectType object = bean.getValue();
if (object instanceof UserType) {
cellItem.add(new Label(componentId, ((UserType) object).getEmailAddress()));
} else if (object instanceof AbstractRoleType) {
cellItem.add(new Label(componentId, ((AbstractRoleType) object).getIdentifier()));
} else {
cellItem.add(new Label(componentId, object.getDescription()));
}
cellItem.add(new Label(componentId, getMemberObjectIdentifier(object)));
}

@Override
public IModel<String> getDataModel(IModel<SelectableBean<ObjectType>> rowModel) {
return Model.of(getMemberObjectIdentifier(rowModel.getObject().getValue()));
}

};
Expand Down Expand Up @@ -471,9 +468,30 @@ protected String getTaskName(String operation, QueryScope scope) {
return getTaskName(operation, scope, false);
}

// public <F extends ObjectType> MainObjectListPanel<F> getMemberTable() {
// return (MainObjectListPanel<F>) get(
// createComponentPath(ID_FORM, ID_CONTAINER_MEMBER, ID_MEMBER_TABLE));
// }
private String getMemberObjectDisplayName(ObjectType object){
if (object == null){
return "";
}
if (object instanceof UserType) {
return WebComponentUtil.getOrigStringFromPoly(((UserType) object).getFullName());
} else if (object instanceof AbstractRoleType) {
return WebComponentUtil
.getOrigStringFromPoly(((AbstractRoleType) object).getDisplayName());
} else {
return "";
}
}

private String getMemberObjectIdentifier(ObjectType object){
if (object == null){
return "";
}
if (object instanceof UserType) {
return ((UserType) object).getEmailAddress();
} else if (object instanceof AbstractRoleType) {
return ((AbstractRoleType) object).getIdentifier();
} else {
return object.getDescription();
}
}
}

0 comments on commit 8f545b4

Please sign in to comment.