package fr.openwide.maven.artifact.notifier.web.application.notification.service; import java.util.concurrent.Callable; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import fr.openwide.core.wicket.more.link.descriptor.generator.IPageLinkGenerator; import fr.openwide.core.wicket.more.model.GenericEntityModel; import fr.openwide.core.wicket.more.notification.service.AbstractNotificationUrlBuilderServiceImpl; import fr.openwide.core.wicket.more.notification.service.IWicketContextExecutor; import fr.openwide.maven.artifact.notifier.core.business.artifact.model.Artifact; import fr.openwide.maven.artifact.notifier.core.business.notification.service.INotificationUrlBuilderService; import fr.openwide.maven.artifact.notifier.core.business.user.model.EmailAddress; import fr.openwide.maven.artifact.notifier.core.business.user.model.User; import fr.openwide.maven.artifact.notifier.core.config.application.MavenArtifactNotifierConfigurer; import fr.openwide.maven.artifact.notifier.web.application.artifact.page.ArtifactDescriptionPage; import fr.openwide.maven.artifact.notifier.web.application.navigation.page.AboutPage; import fr.openwide.maven.artifact.notifier.web.application.navigation.page.HomePage; import fr.openwide.maven.artifact.notifier.web.application.navigation.page.ViewProfilePage; import fr.openwide.maven.artifact.notifier.web.application.navigation.util.LinkUtils; import fr.openwide.maven.artifact.notifier.web.application.notification.page.ConfirmEmailNotificationPage; import fr.openwide.maven.artifact.notifier.web.application.notification.page.ConfirmRegistrationNotificationPage; import fr.openwide.maven.artifact.notifier.web.application.notification.page.DeleteEmailNotificationPage; import fr.openwide.maven.artifact.notifier.web.application.notification.page.ResetPasswordNotificationPage; @Service("webappNotificationUrlBuilderService") public class WebappNotificationUrlBuilderServiceImpl extends AbstractNotificationUrlBuilderServiceImpl implements INotificationUrlBuilderService { @Autowired private MavenArtifactNotifierConfigurer configurer; @Autowired public WebappNotificationUrlBuilderServiceImpl(IWicketContextExecutor wicketExecutor) { super(wicketExecutor); } @Override public String getHomeUrl() { Callable<IPageLinkGenerator> pageLinkGeneratorTask = new Callable<IPageLinkGenerator>() { @Override public IPageLinkGenerator call() throws Exception { return HomePage.linkDescriptor(); } }; return buildUrl(pageLinkGeneratorTask); } @Override public String getAboutUrl() { Callable<IPageLinkGenerator> pageLinkGeneratorTask = new Callable<IPageLinkGenerator>() { @Override public IPageLinkGenerator call() throws Exception { return AboutPage.linkDescriptor(); } }; return buildUrl(pageLinkGeneratorTask); } @Override public String getGitHubUrl() { return configurer.getLinkGitHubProject(); } @Override public String getProfileUrl() { Callable<IPageLinkGenerator> pageLinkGeneratorTask = new Callable<IPageLinkGenerator>() { @Override public IPageLinkGenerator call() throws Exception { return ViewProfilePage.linkDescriptor(); } }; return buildUrl(pageLinkGeneratorTask); } @Override public String getConfirmRegistrationUrl(User user) { return buildUrl(ConfirmRegistrationNotificationPage.class, LinkUtils.getUserHashPageParameters(user)); } @Override public String getResetPasswordUrl(User user) { return buildUrl(ResetPasswordNotificationPage.class, LinkUtils.getUserHashPageParameters(user)); } @Override public String getConfirmEmailUrl(EmailAddress emailAddress) { return buildUrl(ConfirmEmailNotificationPage.class, LinkUtils.getEmailHashPageParameters(emailAddress)); } @Override public String getDeleteEmailUrl(EmailAddress emailAddress) { return buildUrl(DeleteEmailNotificationPage.class, LinkUtils.getEmailHashPageParameters(emailAddress)); } @Override public String getArtifactDescriptionUrl(final Artifact artifact) { Callable<IPageLinkGenerator> pageLinkGeneratorTask = new Callable<IPageLinkGenerator>() { @Override public IPageLinkGenerator call() throws Exception { return ArtifactDescriptionPage.linkDescriptor(new GenericEntityModel<Long, Artifact>(artifact)); } }; return buildUrl(pageLinkGeneratorTask); } }