package net.rrm.ehour.ui.admin.backup.restore;
import net.rrm.ehour.backup.common.BackupEntityType;
import net.rrm.ehour.backup.domain.ParseSession;
import net.rrm.ehour.ui.common.panel.AbstractBasePanel;
import org.apache.wicket.Component;
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.model.IModel;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author thies (Thies Edeling - thies@te-con.nl)
* Created on: 12/3/10 - 5:30 PM
*/
public class ParseStatusPanel extends AbstractBasePanel<ParseSession>
{
private static final long serialVersionUID = 5985903285180288975L;
public ParseStatusPanel(String id, IModel<ParseSession> model)
{
super(id, model);
initPanel();
}
private void initPanel()
{
ParseSession session = getPanelModel().getObject();
Map<BackupEntityType, List<String>> errors = session.getErrors();
add(createGlobalErrors("globalError", session));
ListView<BackupEntityType> errorsView = createErrorsList("errors", errors);
errorsView.setVisible(!errors.isEmpty());
add(errorsView);
ListView<BackupEntityType> insertionsView = createInsertionsList("insertions", session.getInsertions());
insertionsView.setVisible(!session.getInsertions().isEmpty());
add(insertionsView);
}
private Component createGlobalErrors(String id, ParseSession session) {
Label label = new Label(id, session.getGlobalErrorMessage());
label.setVisible(session.isGlobalError());
return label;
}
private ListView<BackupEntityType> createInsertionsList(String id, final Map<BackupEntityType, Integer> insertions)
{
return new ListView<BackupEntityType>(id, new ArrayList<>(insertions.keySet()))
{
@Override
protected void populateItem(ListItem<BackupEntityType> entryListItem)
{
BackupEntityType type = entryListItem.getModelObject();
entryListItem.add(new Label("key", type.name()));
entryListItem.add(new Label("insertions", insertions.get(type).toString()));
}
};
}
private ListView<BackupEntityType> createErrorsList(String id, final Map<BackupEntityType, List<String>> errors)
{
return new ListView<BackupEntityType>(id, new ArrayList<>(errors.keySet()))
{
@Override
protected void populateItem(ListItem<BackupEntityType> entryListItem)
{
BackupEntityType entry = entryListItem.getModelObject();
entryListItem.add(new Label("key", entry.name()));
ListView<String> msgsList = new ListView<String>("msgs", errors.get(entry))
{
@Override
protected void populateItem(ListItem<String> item)
{
item.add(new Label("msg", item.getModel()));
}
};
entryListItem.add(msgsList);
}
};
}
}