package org.dcache.webadmin.view.pages.spacetokens;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Collections;
import java.util.List;
import org.dcache.webadmin.controller.exceptions.LinkGroupsServiceException;
import org.dcache.webadmin.view.pages.basepage.SortableBasePage;
import org.dcache.webadmin.view.pages.spacetokens.beans.LinkGroupBean;
import org.dcache.webadmin.view.pages.spacetokens.beans.SpaceReservationBean;
import org.dcache.webadmin.view.pages.spacetokens.spacereservationpanel.SpaceReservationPanel;
import org.dcache.webadmin.view.util.EvenOddListView;
/**
* @author jans
*/
public class SpaceTokens extends SortableBasePage {
private static final long serialVersionUID = -8335635306002254217L;
private SpaceReservationPanel _spaceReservationsPanel =
new SpaceReservationPanel("spaceReservationsPanel",
new PropertyModel<List<SpaceReservationBean>>(
this, "reservations"));
private LinkGroupBean _currentLinkGroup;
private static final Logger _log = LoggerFactory.getLogger(SpaceTokens.class);
public SpaceTokens() {
createMarkup();
}
protected void renderHeadInternal(IHeaderResponse response) {
super.renderHeadInternal(response);
addFilterSelectScript("tokens", response);
}
private void createMarkup() {
Form<?> form = new Form<Void>("spaceTokensForm");
form.add(new FeedbackPanel("feedback"));
form.add(new LinkGroupListView("linkGroupView", new PropertyModel(this,
"tokenInfo")));
form.add(_spaceReservationsPanel);
add(form);
}
public List<SpaceReservationBean> getReservations() {
if (_currentLinkGroup == null) {
return Collections.emptyList();
}
return _currentLinkGroup.getReservations();
}
public List<LinkGroupBean> getTokenInfo() {
try {
return getWebadminApplication().getLinkGroupsService().getLinkGroups();
} catch (LinkGroupsServiceException ex) {
this.error(getStringResource("error.getTokenInfoFailed") + ex.getMessage());
_log.debug("getTokenInfo failed {}", ex.getMessage());
return Collections.emptyList();
}
}
private class LinkGroupListView extends EvenOddListView<LinkGroupBean> {
private static final long serialVersionUID = 7758280747018444858L;
LinkGroupListView(String id, IModel<? extends List<LinkGroupBean>> model) {
super(id, model);
}
@Override
protected void populateItem(ListItem<LinkGroupBean> item) {
final LinkGroupBean linkGroup = item.getModelObject();
Link linkGroupName = new Link("linkGroupLink") {
private static final long serialVersionUID = 5087459585392227658L;
@Override
public void onClick() {
_currentLinkGroup = linkGroup;
_spaceReservationsPanel.setLinkGroupName(linkGroup.getName());
}
};
linkGroupName.add(new Label("nameMessage", linkGroup.getName()));
item.add(linkGroupName);
item.add(new Label("id", Long.toString(linkGroup.getId())));
item.add(new Label("allowed", linkGroup.getAllowed()));
item.add(new Label("vo", linkGroup.getVos()));
item.add(new Label("availableSpace", Long.valueOf(
linkGroup.getAvailable()).toString()));
item.add(new Label("reservedSpace", Long.valueOf(
linkGroup.getReserved()).toString()));
item.add(new Label("freeSpace", Long.valueOf(
linkGroup.getFree()).toString()));
item.add(new Label("totalSpace", Long.valueOf(
linkGroup.getTotal()).toString()));
}
}
}