package fr.openwide.maven.artifact.notifier.web.application.administration.component; import org.apache.wicket.MarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.markup.repeater.data.IDataProvider; import org.apache.wicket.model.IModel; import org.apache.wicket.model.ResourceModel; import org.apache.wicket.model.StringResourceModel; import org.apache.wicket.spring.injection.annot.SpringBean; import fr.openwide.core.jpa.exception.SecurityServiceException; import fr.openwide.core.jpa.exception.ServiceException; import fr.openwide.core.wicket.markup.html.link.EmailLink; import fr.openwide.core.wicket.more.markup.html.image.BooleanIcon; import fr.openwide.core.wicket.more.markup.html.list.GenericPortfolioPanel; import fr.openwide.core.wicket.more.model.BindingModel; import fr.openwide.core.wicket.more.model.ReadOnlyModel; import fr.openwide.maven.artifact.notifier.core.business.user.model.User; import fr.openwide.maven.artifact.notifier.core.business.user.service.IUserService; import fr.openwide.maven.artifact.notifier.core.util.binding.Binding; import fr.openwide.maven.artifact.notifier.web.application.MavenArtifactNotifierSession; import fr.openwide.maven.artifact.notifier.web.application.administration.page.AdministrationUserDescriptionPage; public class UserPortfolioPanel extends GenericPortfolioPanel<User> { private static final long serialVersionUID = 6030960404037116497L; @SpringBean private IUserService userService; public UserPortfolioPanel(String id, IDataProvider<User> dataProvider, int itemsPerPage) { super(id, dataProvider, itemsPerPage); } @Override protected void addItemColumns(Item<User> item, IModel<? extends User> userModel) { Link<Void> userNameLink = AdministrationUserDescriptionPage.linkDescriptor(ReadOnlyModel.of(userModel)).link("userNameLink"); userNameLink.add(new Label("userName", BindingModel.of(userModel, Binding.user().userName()))); item.add(userNameLink); item.add(new Label("fullName", BindingModel.of(userModel, Binding.user().fullName()))); item.add(new BooleanIcon("active", BindingModel.of(userModel, Binding.user().active()))); item.add(new EmailLink("email", BindingModel.of(userModel, Binding.user().email()))); } @Override protected boolean isActionAvailable() { return true; } @Override protected boolean isDeleteAvailable() { return MavenArtifactNotifierSession.get().hasRoleAdmin(); } @Override protected boolean isEditAvailable() { return false; } @Override protected MarkupContainer getActionLink(String id, IModel<? extends User> userModel) { return AdministrationUserDescriptionPage.linkDescriptor(ReadOnlyModel.of(userModel)).link(id); } @Override protected IModel<String> getActionText(IModel<? extends User> userModel) { return new ResourceModel("common.portfolio.action.viewDetails"); } @Override protected boolean hasWritePermissionOn(IModel<? extends User> userModel) { return MavenArtifactNotifierSession.get().hasRoleAdmin(); } @Override protected void doDeleteItem(IModel<? extends User> userModel) throws ServiceException, SecurityServiceException { userService.delete(userModel.getObject()); } @Override protected IModel<String> getDeleteConfirmationTitleModel(IModel<? extends User> userModel) { return new StringResourceModel("administration.user.delete.confirmation.title") .setParameters(userModel.getObject().getDisplayName()); } @Override protected IModel<String> getDeleteConfirmationTextModel(IModel<? extends User> userModel) { return new StringResourceModel("administration.user.delete.confirmation.text") .setParameters(userModel.getObject().getDisplayName()); } }