package hudson.plugins.global_build_stats.xstream.migration.v1; import java.util.ArrayList; import hudson.plugins.global_build_stats.JobFilterFactory; import hudson.plugins.global_build_stats.model.BuildStatConfiguration; import hudson.plugins.global_build_stats.model.JobBuildResult; import hudson.plugins.global_build_stats.model.ModelIdGenerator; import hudson.plugins.global_build_stats.xstream.migration.GlobalBuildStatsDataMigrator; import hudson.plugins.global_build_stats.xstream.migration.v0.V0GlobalBuildStatsPOJO; /** * V1 Evolutions : * - No more empty BuildStatConfig's jobFilter in data configuration * - BuildStatConfiguration id added * @author fcamblor */ public class V0ToV1Migrator implements GlobalBuildStatsDataMigrator<V0GlobalBuildStatsPOJO, V1GlobalBuildStatsPOJO> { public V1GlobalBuildStatsPOJO migrate(V0GlobalBuildStatsPOJO pojo) { V1GlobalBuildStatsPOJO migratedPojo = new V1GlobalBuildStatsPOJO(); migratedPojo.buildStatConfigs = new ArrayList<BuildStatConfiguration>(); migratedPojo.jobBuildResults = new ArrayList<JobBuildResult>(); for(BuildStatConfiguration cfg : pojo.buildStatConfigs){ // For some reasons, in v0, job filter was able to be empty... fixed this ! if(null==cfg.getJobFilter() || "".equals(cfg.getJobFilter())){ cfg.setJobFilter(JobFilterFactory.ALL_JOBS_FILTER_PATTERN); } // Providing buildStatConfiguration id cfg.setId(ModelIdGenerator.INSTANCE.generateIdForClass(BuildStatConfiguration.class)); migratedPojo.buildStatConfigs.add(cfg); } migratedPojo.jobBuildResults.addAll(pojo.jobBuildResults); return migratedPojo; } }