package fr.openwide.core.wicket.more.console.maintenance.upgrade.component;
import static fr.openwide.core.jpa.more.property.JpaMorePropertyIds.dataUpgrade;
import java.util.List;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.openwide.core.jpa.more.business.upgrade.model.IDataUpgrade;
import fr.openwide.core.jpa.more.business.upgrade.service.IAbstractDataUpgradeService;
import fr.openwide.core.spring.property.service.IPropertyService;
import fr.openwide.core.wicket.more.condition.Condition;
import fr.openwide.core.wicket.more.markup.html.basic.PlaceholderContainer;
public class HashTableFileStoreTestPanel extends Panel {
private static final Logger LOGGER = LoggerFactory.getLogger(HashTableFileStoreTestPanel.class);
private static final long serialVersionUID = -414549819686746010L;
@SpringBean
private IPropertyService propertyService;
@SpringBean
private IAbstractDataUpgradeService dataUpgradeService;
public HashTableFileStoreTestPanel(String id) {
super(id);
IModel<List<IDataUpgrade>> dataUpgrades = new LoadableDetachableModel<List<IDataUpgrade>>() {
private static final long serialVersionUID = 1L;
@Override
protected List<IDataUpgrade> load() {
return dataUpgradeService.listDataUpgrades();
}
};
ListView<IDataUpgrade> dataUpgradeListView = new ListView<IDataUpgrade>("dataUpgrades", dataUpgrades) {
private static final long serialVersionUID = 8364566356668905714L;
@Override
protected void populateItem(ListItem<IDataUpgrade> item) {
final boolean executee = propertyService.get(dataUpgrade(item.getModelObject()));
item.add(new Label("upgradeName", new PropertyModel<String>(item.getModel(), "name")));
AbstractLink executeLink = new Link<IDataUpgrade>("executeLink", item.getModel()) {
private static final long serialVersionUID = -2506223138809658833L;
@Override
public void onClick() {
try {
dataUpgradeService.executeDataUpgrade(getModelObject());
getSession().success(getString("console.maintenance.dataUpgrade.execute.success"));
} catch (Exception e) {
LOGGER.error("Erreur lors de l'exécution de la mise à jour '" + getModelObject() +"'", e);
getSession().error(getString("console.maintenance.dataUpgrade.execute.error"));
}
setResponsePage(getPage());
}
@Override
public void onConfigure() {
super.onConfigure();
setVisible(!executee);
}
};
executeLink.add(new AttributeModifier("title", getString("console.maintenance.dataUpgrade.execute")));
item.add(executeLink);
item.add(new PlaceholderContainer("alreadyExecutedContainer").condition(Condition.componentVisible(executeLink)));
}
@Override
protected void onConfigure() {
super.onConfigure();
setVisible(!getModelObject().isEmpty());
}
};
add(dataUpgradeListView);
add(new PlaceholderContainer("emptyList").condition(Condition.componentVisible(dataUpgradeListView)));
}
}