package org.dcache.webadmin.view.pages.poolselectionsetup.panels.partitions;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.model.IModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.dcache.webadmin.view.pages.poolselectionsetup.beans.PartitionsBean;
import org.dcache.webadmin.view.panels.basepanel.BasePanel;
/**
*
* @author jans
*/
public class PartitionsPanel extends BasePanel {
private static final Logger _log = LoggerFactory.getLogger(PartitionsPanel.class);
private static final long serialVersionUID = -2606040316145565815L;
private final IModel<List<PartitionsBean>> _model;
public PartitionsPanel(String id, IModel<List<PartitionsBean>> partitions) {
super(id);
_model = partitions;
addMarkup();
}
private void addMarkup() {
ListView<PartitionsBean> partitionNames =
new ListView<PartitionsBean>("partitionNames", _model.getObject()) {
private static final long serialVersionUID = -872567003908613003L;
@Override
protected void populateItem(ListItem<PartitionsBean> item) {
item.add(new Label("partitionName", item.getModelObject().getPartitionName()));
}
};
add(partitionNames);
PartitionsBean firstPartitionsBean = null;
if (_model != null && _model.getObject() != null) {
firstPartitionsBean = _model.getObject().get(0);
}
List<String> keys;
if (firstPartitionsBean != null) {
keys = new ArrayList<>(firstPartitionsBean.getProperties().keySet());
} else {
keys = Collections.emptyList();
}
ListView<String> rows = new ListView<String>("keyRows", keys) {
private static final long serialVersionUID = -3882120426084480841L;
@Override
protected void populateItem(ListItem<String> item) {
item.add(new KeyValueFragment("keyValuePairs", item.getModelObject()));
}
};
add(rows);
}
private class KeyValueFragment extends Fragment {
private static final long serialVersionUID = -7677472115011654762L;
public KeyValueFragment(String id, final String key) {
super(id, "keyValueFragment", PartitionsPanel.this);
add(new Label("key", key));
ListView<PartitionsBean> columns =
new ListView<PartitionsBean>("keyColumns",
_model.getObject()) {
private static final long serialVersionUID = -4903201605492027439L;
@Override
protected void populateItem(ListItem<PartitionsBean> item) {
PartitionsBean partition = item.getModelObject();
item.add(new Label("value", partition.getProperties().get(key)));
}
};
add(columns);
}
}
}