}
private void injectReporting( Profile profile, Model model )
{
// Reports :: aggregate
Reporting profileReporting = profile.getReporting();
Reporting modelReporting = model.getReporting();
if ( profileReporting != null )
{
if ( modelReporting == null )
{
model.setReporting( profileReporting );
}
else
{
if ( StringUtils.isEmpty( modelReporting.getOutputDirectory() ) )
{
modelReporting.setOutputDirectory( profileReporting.getOutputDirectory() );
}
Map mergedReportPlugins = new HashMap();
Map profileReportersByKey = profileReporting.getReportPluginsAsMap();
List modelReportPlugins = modelReporting.getPlugins();
if ( modelReportPlugins != null )
{
for ( Iterator it = modelReportPlugins.iterator(); it.hasNext(); )
{
ReportPlugin modelReportPlugin = (ReportPlugin) it.next();
String inherited = modelReportPlugin.getInherited();
if ( StringUtils.isEmpty( inherited ) || Boolean.valueOf( inherited ).booleanValue() )
{
ReportPlugin profileReportPlugin = (ReportPlugin) profileReportersByKey
.get( modelReportPlugin.getKey() );
ReportPlugin mergedReportPlugin = modelReportPlugin;
if ( profileReportPlugin != null )
{
mergedReportPlugin = profileReportPlugin;
mergeReportPlugins( profileReportPlugin, modelReportPlugin );
}
else if ( StringUtils.isEmpty( inherited ) )
{
mergedReportPlugin.unsetInheritanceApplied();
}
mergedReportPlugins.put( mergedReportPlugin.getKey(), mergedReportPlugin );
}
}
}
for ( Iterator it = profileReportersByKey.entrySet().iterator(); it.hasNext(); )
{
Map.Entry entry = (Map.Entry) it.next();
String key = (String) entry.getKey();
if ( !mergedReportPlugins.containsKey( key ) )
{
mergedReportPlugins.put( key, entry.getValue() );
}
}
modelReporting.setPlugins( new ArrayList( mergedReportPlugins.values() ) );
modelReporting.flushReportPluginMap();
}
}
}