Coverage Report - org.apache.archiva.rss.processor.NewArtifactsRssFeedProcessor
 
Classes in this File Line Coverage Branch Coverage Complexity
NewArtifactsRssFeedProcessor
0%
0/25
0%
0/2
0
 
 1  
 package org.apache.archiva.rss.processor;
 2  
 
 3  
 /*
 4  
  * Licensed to the Apache Software Foundation (ASF) under one
 5  
  * or more contributor license agreements.  See the NOTICE file
 6  
  * distributed with this work for additional information
 7  
  * regarding copyright ownership.  The ASF licenses this file
 8  
  * to you under the Apache License, Version 2.0 (the
 9  
  * "License"); you may not use this file except in compliance
 10  
  * with the License.  You may obtain a copy of the License at
 11  
  *
 12  
  *  http://www.apache.org/licenses/LICENSE-2.0
 13  
  *
 14  
  * Unless required by applicable law or agreed to in writing,
 15  
  * software distributed under the License is distributed on an
 16  
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 17  
  * KIND, either express or implied.  See the License for the
 18  
  * specific language governing permissions and limitations
 19  
  * under the License.
 20  
  */
 21  
 
 22  
 import java.util.Calendar;
 23  
 import java.util.List;
 24  
 import java.util.Map;
 25  
 
 26  
 import org.apache.archiva.rss.RssFeedEntry;
 27  
 import org.apache.archiva.rss.RssFeedGenerator;
 28  
 import org.apache.commons.lang.time.DateUtils;
 29  
 import org.apache.maven.archiva.database.ArchivaDatabaseException;
 30  
 import org.apache.maven.archiva.database.ArtifactDAO;
 31  
 import org.apache.maven.archiva.database.Constraint;
 32  
 import org.apache.maven.archiva.database.constraints.ArtifactsByRepositoryConstraint;
 33  
 import org.apache.maven.archiva.model.ArchivaArtifact;
 34  
 import org.slf4j.Logger;
 35  
 import org.slf4j.LoggerFactory;
 36  
 
 37  
 import com.sun.syndication.feed.synd.SyndFeed;
 38  
 
 39  
 /**
 40  
  * Retrieve and process all artifacts of a repository from the database and generate a rss feed.
 41  
  * The artifacts will be grouped by the date when the artifacts were gathered. 
 42  
  * Each group will appear as one entry in the feed.
 43  
  * 
 44  
  * @version
 45  
  * @plexus.component role="org.apache.archiva.rss.processor.RssFeedProcessor" role-hint="new-artifacts"
 46  
  */
 47  0
 public class NewArtifactsRssFeedProcessor
 48  
     extends AbstractArtifactsRssFeedProcessor
 49  
 {
 50  0
     private int numberOfDaysBeforeNow = 30;
 51  
     
 52  
     private static final String title = "New Artifacts in Repository ";
 53  
 
 54  
     private static final String desc = "These are the new artifacts found in the repository ";
 55  
 
 56  
     /**
 57  
      * @plexus.requirement
 58  
      */
 59  
     private RssFeedGenerator generator;
 60  
 
 61  0
     private Logger log = LoggerFactory.getLogger( NewArtifactsRssFeedProcessor.class );
 62  
 
 63  
     /**
 64  
      * @plexus.requirement role-hint="jdo"
 65  
      */
 66  
     private ArtifactDAO artifactDAO;
 67  
 
 68  
     /**
 69  
      * Process the newly discovered artifacts in the repository. Generate feeds for new artifacts in the repository and
 70  
      * new versions of artifact.
 71  
      */
 72  
     public SyndFeed process( Map<String, String> reqParams ) throws ArchivaDatabaseException
 73  
     {
 74  0
         log.debug( "Process new artifacts into rss feeds." );
 75  
 
 76  0
         String repoId = reqParams.get( RssFeedProcessor.KEY_REPO_ID );
 77  0
         if ( repoId != null )
 78  
         {
 79  0
             return processNewArtifactsInRepo( repoId );
 80  
         }
 81  
 
 82  0
         return null;
 83  
     }
 84  
 
 85  
     private SyndFeed processNewArtifactsInRepo( String repoId ) throws ArchivaDatabaseException
 86  
     {
 87  
         
 88  0
         Calendar greaterThanThisDate = Calendar.getInstance( DateUtils.UTC_TIME_ZONE );
 89  0
         greaterThanThisDate.add( Calendar.DATE, -( getNumberOfDaysBeforeNow() ) );
 90  
         
 91  0
         Constraint artifactsByRepo = new ArtifactsByRepositoryConstraint( repoId, greaterThanThisDate.getTime(), "whenGathered", false );
 92  0
         List<ArchivaArtifact> artifacts = artifactDAO.queryArtifacts( artifactsByRepo );
 93  
 
 94  0
         List<RssFeedEntry> entries = processData( artifacts, true );
 95  
 
 96  0
         return generator.generateFeed( getTitle() + "\'" + repoId + "\'", "New artifacts found in repository " +
 97  
             "\'" + repoId + "\'" + " during repository scan.", entries );
 98  
     }
 99  
 
 100  
     public String getTitle()
 101  
     {
 102  0
         return title;
 103  
     }
 104  
 
 105  
     public String getDescription()
 106  
     {
 107  0
         return desc;
 108  
     }
 109  
 
 110  
     public RssFeedGenerator getGenerator()
 111  
     {
 112  0
         return generator;
 113  
     }
 114  
 
 115  
     public void setGenerator( RssFeedGenerator generator )
 116  
     {
 117  0
         this.generator = generator;
 118  0
     }
 119  
 
 120  
     public ArtifactDAO getArtifactDAO()
 121  
     {
 122  0
         return artifactDAO;
 123  
     }
 124  
 
 125  
     public void setArtifactDAO( ArtifactDAO artifactDAO )
 126  
     {
 127  0
         this.artifactDAO = artifactDAO;
 128  0
     }
 129  
 
 130  
     public int getNumberOfDaysBeforeNow()
 131  
     {
 132  0
         return numberOfDaysBeforeNow;
 133  
     }
 134  
 
 135  
     public void setNumberOfDaysBeforeNow( int numberOfDaysBeforeNow )
 136  
     {
 137  0
         this.numberOfDaysBeforeNow = numberOfDaysBeforeNow;
 138  0
     }
 139  
     
 140  
 }