package com.statscollector.application; import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.statscollector.application.config.GerritJsonConfigService; import com.statscollector.application.config.SonarJsonConfigService; import com.statscollector.gerrit.config.GerritConfig; import com.statscollector.neo.sonar.config.SonarConfig; import com.statscollector.neo.sonar.service.metrics.DistributionConverter; import com.statscollector.neo.sonar.service.metrics.GenericConverter; import com.statscollector.neo.sonar.service.metrics.NumberConverter; import com.statscollector.neo.sonar.service.metrics.SonarMetricConverter; import com.statscollector.neo.sonar.service.metrics.SonarMetricConverterService; @Configuration public class WebConfiguration extends WebMvcAutoConfigurationAdapter { @Autowired private GerritJsonConfigService gerritConfigService; @Autowired private SonarJsonConfigService sonarConfigService; private SonarMetricConverterService sonarMetricConverterService; private static final Logger LOGGER = Logger.getLogger(WebConfiguration.class); @Bean public GerritJsonConfigService gerritConfigService( @Value("${config.gerrit.fileName}") final String gerritConfigFileName) { if(null == gerritConfigService) { gerritConfigService = new GerritJsonConfigService(gerritConfigFileName); } return gerritConfigService; } @Bean public SonarJsonConfigService sonarConfigService( @Value("${config.sonar.fileName}") final String sonarConfigFileName) { if(null == sonarConfigService) { sonarConfigService = new SonarJsonConfigService(sonarConfigFileName); } return sonarConfigService; } @Bean public GerritConfig gerritConfig() { try { GerritConfig configFile = gerritConfigService.getConfigFile(); if(null == configFile) { configFile = new GerritConfig(); gerritConfigService.saveConfigFile(configFile); } return configFile; } catch(IOException e) { LOGGER.error(e); } return null; } @Bean public SonarConfig sonarConfig() { try { SonarConfig configFile = sonarConfigService.getConfigFile(); if(null == configFile) { configFile = new SonarConfig(); sonarConfigService.saveConfigFile(configFile); } return configFile; } catch(IOException e) { LOGGER.error(e); } return null; } @Bean public SonarMetricConverterService sonarMetricConverterService() { if(null == sonarMetricConverterService) { // @formatter:off Map<String, SonarMetricConverter> converters = new HashMap<>(); converters.put(SonarMetricConverterService.LINES_OF_CODE_KEY, new NumberConverter(SonarMetricConverterService.LINES_OF_CODE_NAME, SonarMetricConverterService.LINES_OF_CODE_KEY)); converters.put(SonarMetricConverterService.COMPLEXITY_KEY , new NumberConverter(SonarMetricConverterService.COMPLEXITY_NAME, SonarMetricConverterService.COMPLEXITY_KEY)); converters.put(SonarMetricConverterService.FILES_KEY , new NumberConverter(SonarMetricConverterService.FILES_NAME, SonarMetricConverterService.FILES_KEY)); converters.put(SonarMetricConverterService.METHODS_KEY , new NumberConverter(SonarMetricConverterService.METHODS_NAME, SonarMetricConverterService.METHODS_KEY)); converters.put(SonarMetricConverterService.BLOCKER_VIOLATIONS_KEY , new NumberConverter(SonarMetricConverterService.BLOCKER_VIOLATIONS_NAME, SonarMetricConverterService.BLOCKER_VIOLATIONS_KEY)); converters.put(SonarMetricConverterService.CRITICAL_VIOLATIONS_KEY , new NumberConverter(SonarMetricConverterService.CRITICAL_VIOLATIONS_NAME, SonarMetricConverterService.CRITICAL_VIOLATIONS_KEY)); converters.put(SonarMetricConverterService.MAJOR_VIOLATIONS_KEY , new NumberConverter(SonarMetricConverterService.MAJOR_VIOLATIONS_NAME, SonarMetricConverterService.MAJOR_VIOLATIONS_KEY)); converters.put(SonarMetricConverterService.MINOR_VIOLATIONS_KEY , new NumberConverter(SonarMetricConverterService.MINOR_VIOLATIONS_NAME, SonarMetricConverterService.MINOR_VIOLATIONS_KEY)); converters.put(SonarMetricConverterService.INFO_VIOLATIONS_KEY , new NumberConverter(SonarMetricConverterService.INFO_VIOLATIONS_NAME, SonarMetricConverterService.INFO_VIOLATIONS_KEY)); converters.put(SonarMetricConverterService.LINES_TO_COVER_KEY , new NumberConverter(SonarMetricConverterService.LINES_TO_COVER_NAME, SonarMetricConverterService.LINES_TO_COVER_KEY)); converters.put(SonarMetricConverterService.UNCOVERED_LINES_KEY , new NumberConverter(SonarMetricConverterService.UNCOVERED_LINES_NAME, SonarMetricConverterService.UNCOVERED_LINES_KEY)); converters.put(SonarMetricConverterService.FUNCTION_COMPLEXITY_DISTRIBUTION_KEY , new DistributionConverter(SonarMetricConverterService.FUNCTION_COMPLEXITY_DISTRIBUTION_NAME, SonarMetricConverterService.FUNCTION_COMPLEXITY_DISTRIBUTION_KEY)); converters.put(SonarMetricConverterService.FILE_COMPLEXITY_DISTRIBUTION_KEY , new DistributionConverter(SonarMetricConverterService.FILE_COMPLEXITY_DISTRIBUTION_NAME, SonarMetricConverterService.FILE_COMPLEXITY_DISTRIBUTION_KEY)); converters.put(SonarMetricConverterService.DEFAULT_CONVERTER_KEY , new GenericConverter(SonarMetricConverterService.DEFAULT_CONVERTER_NAME, SonarMetricConverterService.DEFAULT_CONVERTER_KEY)); // @formatter:on sonarMetricConverterService = new SonarMetricConverterService(converters); } return sonarMetricConverterService; } }