protected List generateChangeSetsFromSCM()

in src/main/java/org/apache/maven/plugin/changelog/ChangeLogReport.java [634:747]


    protected List<ChangeLogSet> generateChangeSetsFromSCM()
        throws MavenReportException
    {
        try
        {
            List<ChangeLogSet> changeSets = new ArrayList<ChangeLogSet>();

            ScmRepository repository = getScmRepository();

            ScmProvider provider = manager.getProviderByRepository( repository );

            ChangeLogScmResult result;

            if ( "range".equals( type ) )
            {
                result = provider.changeLog( repository, new ScmFileSet( basedir ), null, null, range, (ScmBranch) null,
                                             dateFormat );

                checkResult( result );

                changeSets.add( result.getChangeLog() );
            }
            else if ( "tag".equals( type ) )
            {

                Iterator<String> tagsIter = tags.iterator();

                String startTag = tagsIter.next();
                String endTag = null;

                if ( tagsIter.hasNext() )
                {
                    while ( tagsIter.hasNext() )
                    {
                        endTag = tagsIter.next();
                        String endRevision = getRevisionForTag( endTag, repository, provider );
                        String startRevision = getRevisionForTag( startTag, repository, provider );
                        result = provider.changeLog( repository, new ScmFileSet( basedir ),
                                                     new ScmRevision( startRevision ),
                                                     new ScmRevision( endRevision ) );

                        checkResult( result );
                        result.getChangeLog().setStartVersion( new ScmRevision( startTag ) );
                        result.getChangeLog().setEndVersion( new ScmRevision( endTag ) );

                        changeSets.add( result.getChangeLog() );

                        startTag = endTag;
                    }
                }
                else
                {
                    String startRevision = getRevisionForTag( startTag, repository, provider );
                    String endRevision = getRevisionForTag( endTag, repository, provider );
                    result = provider.changeLog( repository, new ScmFileSet( basedir ),
                                                 new ScmRevision( startRevision ),
                                                 new ScmRevision( endRevision ) );

                    checkResult( result );
                    result.getChangeLog().setStartVersion( new ScmRevision( startTag ) );
                    result.getChangeLog().setEndVersion( null );
                    changeSets.add( result.getChangeLog() );
                }
            }
            else if ( "date".equals( type ) )
            {
                Iterator<String> dateIter = dates.iterator();

                String startDate = dateIter.next();
                String endDate = null;

                if ( dateIter.hasNext() )
                {
                    while ( dateIter.hasNext() )
                    {
                        endDate = dateIter.next();

                        result = provider.changeLog( repository, new ScmFileSet( basedir ), parseDate( startDate ),
                                                     parseDate( endDate ), 0, (ScmBranch) null );

                        checkResult( result );

                        changeSets.add( result.getChangeLog() );

                        startDate = endDate;
                    }
                }
                else
                {
                    result = provider.changeLog( repository, new ScmFileSet( basedir ), parseDate( startDate ),
                                                 parseDate( endDate ), 0, (ScmBranch) null );

                    checkResult( result );

                    changeSets.add( result.getChangeLog() );
                }
            }
            else
            {
                throw new MavenReportException( "The type '" + type + "' isn't supported." );
            }
            filter( changeSets );
            return changeSets;

        }
        catch ( ScmException e )
        {
            throw new MavenReportException( "Cannot run changelog command : ", e );
        }
        catch ( MojoExecutionException e )
        {
            throw new MavenReportException( "An error has occurred during changelog command : ", e );
        }
    }