EMMA Coverage Report (generated Sun Sep 18 11:34:27 PHT 2011)
[all classes][org.apache.continuum.builder.distributed.util]

COVERAGE SUMMARY FOR SOURCE FILE [DistributedBuildUtil.java]

nameclass, %method, %block, %line, %
DistributedBuildUtil.java100% (1/1)17%  (1/6)2%   (7/315)3%   (2/70)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class DistributedBuildUtil100% (1/1)17%  (1/6)2%   (7/315)3%   (2/70)
convertMapToBuildResult (Map): BuildResult 0%   (0/1)0%   (0/34)0%   (0/9)
getModifiedDependencies (BuildResult, Map): List 0%   (0/1)0%   (0/153)0%   (0/26)
getScmChanges (Map): List 0%   (0/1)0%   (0/46)0%   (0/12)
getScmResult (Map): ScmResult 0%   (0/1)0%   (0/39)0%   (0/11)
setChangeFiles (ChangeSet, Map): void 0%   (0/1)0%   (0/36)0%   (0/10)
DistributedBuildUtil (): void 100% (1/1)100% (7/7)100% (2/2)

1package org.apache.continuum.builder.distributed.util;
2 
3import java.util.ArrayList;
4import java.util.List;
5import java.util.Map;
6 
7import org.apache.continuum.builder.utils.ContinuumBuildConstant;
8import org.apache.continuum.dao.BuildResultDao;
9import org.apache.continuum.dao.ProjectDao;
10import org.apache.maven.continuum.ContinuumException;
11import org.apache.maven.continuum.model.project.BuildResult;
12import org.apache.maven.continuum.model.project.Project;
13import org.apache.maven.continuum.model.project.ProjectDependency;
14import org.apache.maven.continuum.model.scm.ChangeFile;
15import org.apache.maven.continuum.model.scm.ChangeSet;
16import org.apache.maven.continuum.model.scm.ScmResult;
17import org.apache.maven.continuum.store.ContinuumStoreException;
18import org.slf4j.Logger;
19import org.slf4j.LoggerFactory;
20 
21/**
22 * @plexus.component role="org.apache.continuum.builder.distributed.util.DistributedBuildUtil"
23 */
24public class DistributedBuildUtil
25{
26    private Logger log = LoggerFactory.getLogger( DistributedBuildUtil.class );
27 
28    /**
29     * @plexus.requirement
30     */
31    private ProjectDao projectDao;
32 
33    /**
34     * @plexus.requirement
35     */
36    private BuildResultDao buildResultDao;
37 
38    public BuildResult convertMapToBuildResult( Map<String, Object> context )
39    {
40        BuildResult buildResult = new BuildResult();
41 
42        buildResult.setStartTime( ContinuumBuildConstant.getStartTime( context ) );
43        buildResult.setEndTime( ContinuumBuildConstant.getEndTime( context ) );
44        buildResult.setError( ContinuumBuildConstant.getBuildError( context ) );
45        buildResult.setExitCode( ContinuumBuildConstant.getBuildExitCode( context ) );
46        buildResult.setState( ContinuumBuildConstant.getBuildState( context ) );
47        buildResult.setTrigger( ContinuumBuildConstant.getTrigger( context ) );
48        buildResult.setBuildUrl( ContinuumBuildConstant.getBuildAgentUrl( context ) );
49 
50        return buildResult;
51    }
52 
53    public List<ProjectDependency> getModifiedDependencies( BuildResult oldBuildResult, Map<String, Object> context )
54        throws ContinuumException
55    {
56        if ( oldBuildResult == null )
57        {
58            return null;
59        }
60 
61        try
62        {
63            Project project = projectDao.getProjectWithAllDetails( ContinuumBuildConstant.getProjectId( context ) );
64            List<ProjectDependency> dependencies = project.getDependencies();
65 
66            if ( dependencies == null )
67            {
68                dependencies = new ArrayList<ProjectDependency>();
69            }
70 
71            if ( project.getParent() != null )
72            {
73                dependencies.add( project.getParent() );
74            }
75 
76            if ( dependencies.isEmpty() )
77            {
78                return null;
79            }
80 
81            List<ProjectDependency> modifiedDependencies = new ArrayList<ProjectDependency>();
82 
83            for ( ProjectDependency dep : dependencies )
84            {
85                Project dependencyProject =
86                    projectDao.getProject( dep.getGroupId(), dep.getArtifactId(), dep.getVersion() );
87 
88                if ( dependencyProject != null )
89                {
90                    long nbBuild = buildResultDao.getNbBuildResultsInSuccessForProject( dependencyProject.getId(),
91                                                                                        oldBuildResult.getEndTime() );
92                    if ( nbBuild > 0 )
93                    {
94                        log.debug( "Dependency changed: " + dep.getGroupId() + ":" + dep.getArtifactId() + ":" +
95                            dep.getVersion() );
96                        modifiedDependencies.add( dep );
97                    }
98                    else
99                    {
100                        log.debug( "Dependency not changed: " + dep.getGroupId() + ":" + dep.getArtifactId() + ":" +
101                            dep.getVersion() );
102                    }
103                }
104                else
105                {
106                    log.debug( "Skip non Continuum project: " + dep.getGroupId() + ":" + dep.getArtifactId() + ":" +
107                        dep.getVersion() );
108                }
109            }
110 
111            return modifiedDependencies;
112        }
113        catch ( ContinuumStoreException e )
114        {
115            log.warn( "Can't get the project dependencies", e );
116        }
117 
118        return null;
119    }
120 
121    public ScmResult getScmResult( Map<String, Object> context )
122    {
123        Map<String, Object> map = ContinuumBuildConstant.getScmResult( context );
124 
125        if ( !map.isEmpty() )
126        {
127            ScmResult scmResult = new ScmResult();
128            scmResult.setCommandLine( ContinuumBuildConstant.getScmCommandLine( map ) );
129            scmResult.setCommandOutput( ContinuumBuildConstant.getScmCommandOutput( map ) );
130            scmResult.setException( ContinuumBuildConstant.getScmException( map ) );
131            scmResult.setProviderMessage( ContinuumBuildConstant.getScmProviderMessage( map ) );
132            scmResult.setSuccess( ContinuumBuildConstant.isScmSuccess( map ) );
133            scmResult.setChanges( getScmChanges( map ) );
134 
135            return scmResult;
136        }
137 
138        return null;
139    }
140 
141    public List<ChangeSet> getScmChanges( Map<String, Object> context )
142    {
143        List<ChangeSet> changes = new ArrayList<ChangeSet>();
144        List<Map<String, Object>> scmChanges = ContinuumBuildConstant.getScmChanges( context );
145 
146        if ( scmChanges != null )
147        {
148            for ( Map<String, Object> map : scmChanges )
149            {
150                ChangeSet changeSet = new ChangeSet();
151                changeSet.setAuthor( ContinuumBuildConstant.getChangeSetAuthor( map ) );
152                changeSet.setComment( ContinuumBuildConstant.getChangeSetComment( map ) );
153                changeSet.setDate( ContinuumBuildConstant.getChangeSetDate( map ) );
154                setChangeFiles( changeSet, map );
155                changes.add( changeSet );
156            }
157        }
158 
159        return changes;
160    }
161 
162    private void setChangeFiles( ChangeSet changeSet, Map<String, Object> context )
163    {
164        List<Map<String, Object>> changeFiles = ContinuumBuildConstant.getChangeSetFiles( context );
165 
166        if ( changeFiles != null )
167        {
168            for ( Map<String, Object> map : changeFiles )
169            {
170                ChangeFile changeFile = new ChangeFile();
171                changeFile.setName( ContinuumBuildConstant.getChangeFileName( map ) );
172                changeFile.setRevision( ContinuumBuildConstant.getChangeFileRevision( map ) );
173                changeFile.setStatus( ContinuumBuildConstant.getChangeFileStatus( map ) );
174 
175                changeSet.addFile( changeFile );
176            }
177        }
178    }
179}

[all classes][org.apache.continuum.builder.distributed.util]
EMMA 2.0.5312 (C) Vladimir Roubtsov