Package fr.openwide.maven.artifact.notifier.web.application.notification.component

Source Code of fr.openwide.maven.artifact.notifier.web.application.notification.component.NewVersionsHtmlNotificationPanel

package fr.openwide.maven.artifact.notifier.web.application.notification.component;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.ExternalLink;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;

import fr.openwide.core.wicket.more.model.BindingModel;
import fr.openwide.maven.artifact.notifier.core.business.artifact.model.ArtifactVersion;
import fr.openwide.maven.artifact.notifier.core.business.artifact.model.ArtifactVersionNotification;
import fr.openwide.maven.artifact.notifier.core.business.search.service.IMavenCentralSearchUrlService;
import fr.openwide.maven.artifact.notifier.core.business.user.model.EmailAddress;
import fr.openwide.maven.artifact.notifier.core.util.binding.Binding;
import fr.openwide.maven.artifact.notifier.web.application.notification.behavior.StyleAttributeAppender;

public class NewVersionsHtmlNotificationPanel extends AbstractRegisteredEmailHtmlNotificationPanel<List<ArtifactVersionNotification>> {

  private static final long serialVersionUID = 1676372998526497114L;
 
  private static final String ISO8601_PATTERN = "yyyy-MM-dd";
 
  private static final ThreadLocal<SimpleDateFormat> ISO8601_DATE_FORMAT = new ThreadLocal<SimpleDateFormat>() {
    @Override
    public SimpleDateFormat get() {
      return new SimpleDateFormat(ISO8601_PATTERN);
    };
  };
 
  @SpringBean
  private IMavenCentralSearchUrlService mavenCentralSearchUrlService;
 
  public NewVersionsHtmlNotificationPanel(String id, IModel<List<ArtifactVersionNotification>> notificationsModel) {
    this(id, notificationsModel, Model.of((EmailAddress) null));
  }
 
  public NewVersionsHtmlNotificationPanel(String id, IModel<List<ArtifactVersionNotification>> notificationsModel,
      IModel<EmailAddress> emailAddressModel) {
    super(id, notificationsModel, emailAddressModel);
   
    // Title
    WebMarkupContainer titleContainer = new CustomWebMarkupContainer("titleContainer", STYLE_TITLE);
    add(titleContainer);
   
    titleContainer.add(new Label("date", ISO8601_DATE_FORMAT.get().format(new Date())));
   
    WebMarkupContainer contentContainer = new CustomWebMarkupContainer("contentContainer", STYLE_CONTENT);
    add(contentContainer);
   
    // Intro
    contentContainer.add(new CustomWebMarkupContainer("intro", STYLE_ALERT_INFO));
   
    // Table
    WebMarkupContainer newVersionsTable = new CustomWebMarkupContainer("newVersionsTable", STYLE_TABLE);
    contentContainer.add(newVersionsTable);
   
    //   >  Headers
    WebMarkupContainer groupIdHeader = new CustomWebMarkupContainer("groupIdHeader", STYLE_TABLE_TH);
    groupIdHeader.add(new StyleAttributeAppender(STYLE_TABLE_TOP_LEFT_RADIUS));
    newVersionsTable.add(groupIdHeader);
    newVersionsTable.add(new CustomWebMarkupContainer("artifactIdHeader", STYLE_TABLE_TH));
    WebMarkupContainer versionHeader = new CustomWebMarkupContainer("versionHeader", STYLE_TABLE_TH);
    versionHeader.add(new StyleAttributeAppender(STYLE_TABLE_TOP_RIGHT_RADIUS));
    newVersionsTable.add(versionHeader);
   
    //   >  Content
    newVersionsTable.add(new ListView<ArtifactVersionNotification>("newVersions", getModel()) {
      private static final long serialVersionUID = 1L;
     
      @Override
      protected void populateItem(ListItem<ArtifactVersionNotification> item) {
        ArtifactVersion version = item.getModelObject().getArtifactVersion();
        IModel<ArtifactVersionNotification> versionNotificationModel = item.getModel();
       
        Label groupId = new CustomLabel("groupId", BindingModel.of(versionNotificationModel,
            Binding.artifactVersionNotification().artifactVersion().artifact().group().groupId()), STYLE_TABLE_TD);
        if (item.getIndex() == NewVersionsHtmlNotificationPanel.this.getModelObject().size() - 1) {
          groupId.add(new StyleAttributeAppender(STYLE_TABLE_BOTTOM_LEFT_RADIUS));
        }
        item.add(groupId);
       
        WebMarkupContainer artifactIdContainer = new CustomWebMarkupContainer("artifactIdContainer", STYLE_TABLE_TD);
        item.add(artifactIdContainer);
        ExternalLink artifactIdLink = new ExternalLink("artifactIdLink",
            notificationUrlBuilderService.getArtifactDescriptionUrl(version.getArtifact()));
        artifactIdLink.add(new StyleAttributeAppender(STYLE_LINK));
        artifactIdLink.add(new Label("artifactIdLabel", BindingModel.of(versionNotificationModel,
            Binding.artifactVersionNotification().artifactVersion().artifact().artifactId())));
        artifactIdContainer.add(artifactIdLink);
       
        WebMarkupContainer versionContainer = new CustomWebMarkupContainer("versionContainer", STYLE_TABLE_TD);
        item.add(versionContainer);
        versionContainer.add(new CustomArtifactVersionTagPanel("versionLabel", BindingModel.of(versionNotificationModel,
            Binding.artifactVersionNotification().artifactVersion().version())));
      }
    });
  }
}
TOP

Related Classes of fr.openwide.maven.artifact.notifier.web.application.notification.component.NewVersionsHtmlNotificationPanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.