if ( isAuthorized( projectGroup.getName() ) )
{
getLogger().debug( "GroupSummaryAction: building group " + projectGroup.getName() );
GroupSummary groupModel = new GroupSummary();
groupModel.setId( projectGroup.getId() );
groupModel.setGroupId( projectGroup.getGroupId() );
groupModel.setName( projectGroup.getName() );
groupModel.setDescription( projectGroup.getDescription() );
//TODO: Create a summary jpox request so code will be more simple and performance will be better
Collection projects = projectGroup.getProjects();
groupModel.setNumProjects( projects.size() );
Map buildResults = getContinuum().getLatestBuildResults();
Map buildResultsInSuccess = getContinuum().getBuildResultsInSuccess();
List projectModels = new ArrayList();
int numSuccesses = 0;
int numFailures = 0;
int numErrors = 0;
for ( Iterator i = projects.iterator(); i.hasNext(); )
{
Project project = (Project) i.next();
if ( groupModel.getProjectType() == null )
{
groupModel.setProjectType( project.getExecutorId() );
}
ProjectSummary model = new ProjectSummary();
getLogger().debug( "GroupSummaryAction: building project model " + project.getName() );
model.setId( project.getId() );
model.setName( project.getName() );
model.setVersion( project.getVersion() );
model.setProjectGroupId( project.getProjectGroup().getId() );
model.setProjectGroupName( project.getProjectGroup().getName() );
if ( getContinuum().isInBuildingQueue( project.getId() ) )
{
model.setInBuildingQueue( true );
}
else if ( getContinuum().isInCheckoutQueue( project.getId() ) )
{
model.setInCheckoutQueue( true );
}
else
{
model.setInBuildingQueue( false );
model.setInCheckoutQueue( false );
}
model.setState( project.getState() );
if ( project.getState() == 2 )
{
numSuccesses++;
}
else if ( project.getState() == 3 )
{
numFailures++;
}
else if ( project.getState() == 4 )
{
numErrors++;
}
model.setBuildNumber( project.getBuildNumber() );
if ( buildResultsInSuccess != null )
{
BuildResult buildInSuccess =
(BuildResult) buildResultsInSuccess.get( new Integer( project.getId() ) );
if ( buildInSuccess != null )
{
model.setBuildInSuccessId( buildInSuccess.getId() );
}
}
if ( buildResults != null )
{
BuildResult latestBuild = (BuildResult) buildResults.get( new Integer( project.getId() ) );
if ( latestBuild != null )
{
model.setLatestBuildId( latestBuild.getId() );
}
}
getLogger().debug( "GroupSummaryAction: adding model to group " + model.getName() );
projectModels.add( model );
}
//todo wire in the next scheduled build for the project group and a meaningful status message
//groupModel.setNextScheduledBuild( "unknown" );
//groupModel.setStatusMessage( "none" );
groupModel.setNumSuccesses( numSuccesses );
groupModel.setNumFailures( numFailures );
groupModel.setNumErrors( numErrors );
groupModel.setProjects( projectModels );
getLogger().debug( "GroupSummaryAction: adding group to groups list " + groupModel.getName() );
groups.add( groupModel );
}
}
return SUCCESS;