blob: 6333b1976051483c07ddcf9684cce8da798a2c05 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.syncope.client.console.widgets;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.client.ui.commons.Constants;
import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
import org.apache.syncope.client.console.panels.AbstractModalPanel;
import org.apache.syncope.client.console.panels.DirectoryPanel;
import org.apache.syncope.client.console.rest.BaseRestClient;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
import org.apache.syncope.client.console.widgets.reconciliation.Any;
import org.apache.syncope.client.console.widgets.reconciliation.Misaligned;
import org.apache.syncope.client.console.wizards.WizardMgtPanel;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.PageReference;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
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.markup.html.basic.Label;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
public class ReconDetailsModalPanel extends AbstractModalPanel<Any> {
private static final long serialVersionUID = 1469396040405535283L;
private static final int ROWS = 10;
private final String resource;
private final List<Misaligned> misaligned;
public ReconDetailsModalPanel(
final BaseModal<Any> modal,
final String resource,
final List<Misaligned> misaligned,
final PageReference pageRef) {
super(modal, pageRef);
this.resource = resource;
this.misaligned = misaligned;
add(new DiffPanel("diff", pageRef));
}
private class DiffPanel extends DirectoryPanel<
Misaligned, Misaligned, DetailsProvider, BaseRestClient> {
private static final long serialVersionUID = -8214546246301342868L;
DiffPanel(final String id, final PageReference pageRef) {
super(id, new Builder<Misaligned, Misaligned, BaseRestClient>(null, pageRef) {
private static final long serialVersionUID = 8769126634538601689L;
@Override
protected WizardMgtPanel<Misaligned> newInstance(final String id, final boolean wizardInModal) {
throw new UnsupportedOperationException();
}
}.disableCheckBoxes().hidePaginator());
rows = 10;
initResultTable();
}
@Override
protected DetailsProvider dataProvider() {
return new DetailsProvider();
}
@Override
protected String paginatorRowsKey() {
return StringUtils.EMPTY;
}
@Override
protected Collection<ActionLink.ActionType> getBatches() {
return List.of();
}
@Override
protected List<IColumn<Misaligned, String>> getColumns() {
List<IColumn<Misaligned, String>> columns = new ArrayList<>();
columns.add(new PropertyColumn<>(new ResourceModel(Constants.KEY_FIELD_NAME),
Constants.NAME_FIELD_NAME, Constants.NAME_FIELD_NAME));
columns.add(new AbstractColumn<>(Model.of(Constants.SYNCOPE)) {
private static final long serialVersionUID = 2054811145491901166L;
@Override
public void populateItem(
final Item<ICellPopulator<Misaligned>> cellItem,
final String componentId,
final IModel<Misaligned> rowModel) {
cellItem.add(new Label(componentId, rowModel.getObject().getOnSyncope().toString()));
cellItem.add(new AttributeModifier("class", "code-deletion"));
}
});
columns.add(new AbstractColumn<>(Model.of(resource)) {
private static final long serialVersionUID = 2054811145491901166L;
@Override
public void populateItem(
final Item<ICellPopulator<Misaligned>> cellItem,
final String componentId,
final IModel<Misaligned> rowModel) {
cellItem.add(new Label(componentId, rowModel.getObject().getOnResource().toString()));
cellItem.add(new AttributeModifier("class", "code-addition"));
}
});
return columns;
}
}
protected final class DetailsProvider extends DirectoryDataProvider<Misaligned> {
private static final long serialVersionUID = -1500081449932597854L;
private final SortableDataProviderComparator<Misaligned> comparator;
private DetailsProvider() {
super(ROWS);
setSort(Constants.NAME_FIELD_NAME, SortOrder.ASCENDING);
comparator = new SortableDataProviderComparator<>(this);
}
@Override
public Iterator<Misaligned> iterator(final long first, final long count) {
misaligned.sort(comparator);
return misaligned.subList((int) first, (int) first + (int) count).iterator();
}
@Override
public long size() {
return misaligned.size();
}
@Override
public IModel<Misaligned> model(final Misaligned object) {
return new CompoundPropertyModel<>(object);
}
}
}