package fr.openwide.maven.artifact.notifier.web.application.navigation.model; import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.lang3.time.DateUtils; import org.apache.wicket.injection.Injector; import org.apache.wicket.model.LoadableDetachableModel; import org.apache.wicket.spring.injection.annot.SpringBean; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import fr.openwide.maven.artifact.notifier.core.business.artifact.model.ArtifactVersion; import fr.openwide.maven.artifact.notifier.core.business.artifact.service.IArtifactVersionService; import fr.openwide.maven.artifact.notifier.core.config.application.MavenArtifactNotifierConfigurer; public class ArtifactVersionLastUpdateDateModel extends LoadableDetachableModel<Map<Date, Set<ArtifactVersion>>> { // Inutilisé pour l'instant, à voir private static final long serialVersionUID = 8972339645238539261L; @SpringBean private MavenArtifactNotifierConfigurer configurer; @SpringBean private IArtifactVersionService artifactVersionService; public ArtifactVersionLastUpdateDateModel() { super(); Injector.get().inject(this); } @Override protected Map<Date, Set<ArtifactVersion>> load() { Map<Date, Set<ArtifactVersion>> result = Maps.newTreeMap(Collections.reverseOrder()); List<ArtifactVersion> versionList = artifactVersionService.listRecentReleases(configurer.getLastUpdatesArtifactsLimit()); Date previousDate = null; int daysCount = 0; for (ArtifactVersion version : versionList) { if (previousDate == null || !DateUtils.isSameDay(previousDate, version.getLastUpdateDate())) { if (daysCount >= configurer.getLastUpdatesDaysLimit()) { break; } previousDate = version.getLastUpdateDate(); result.put(previousDate, Sets.<ArtifactVersion>newTreeSet()); daysCount++; } result.get(previousDate).add(version); } return result; } @Override protected void onDetach() { super.onDetach(); } }