001/* 002 * Sonar, open source software quality management tool. 003 * Copyright (C) 2008-2012 SonarSource 004 * mailto:contact AT sonarsource DOT com 005 * 006 * Sonar is free software; you can redistribute it and/or 007 * modify it under the terms of the GNU Lesser General Public 008 * License as published by the Free Software Foundation; either 009 * version 3 of the License, or (at your option) any later version. 010 * 011 * Sonar is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 014 * Lesser General Public License for more details. 015 * 016 * You should have received a copy of the GNU Lesser General Public 017 * License along with Sonar; if not, write to the Free Software 018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 019 */ 020package org.sonar.plugins.dbcleaner; 021 022import com.google.common.collect.ImmutableList; 023import org.sonar.api.BatchExtension; 024import org.sonar.api.Properties; 025import org.sonar.api.Property; 026import org.sonar.api.PropertyType; 027import org.sonar.api.SonarPlugin; 028import org.sonar.plugins.dbcleaner.api.DbCleanerConstants; 029import org.sonar.plugins.dbcleaner.period.DefaultPeriodCleaner; 030 031import java.util.List; 032 033@Properties({ 034 @Property(key = DbCleanerConstants.HOURS_BEFORE_KEEPING_ONLY_ONE_SNAPSHOT_BY_DAY, defaultValue = "24", 035 name = "Number of hours before starting to keep only one snapshot per day", 036 description = "After this number of hours, if there are several snapshots during the same day, " 037 + "the DbCleaner keeps the most recent one and fully delete the other ones.", 038 global = true, 039 project = true, 040 type = PropertyType.INTEGER), 041 @Property(key = DbCleanerConstants.WEEKS_BEFORE_KEEPING_ONLY_ONE_SNAPSHOT_BY_WEEK, defaultValue = "4", 042 name = "Number of weeks before starting to keep only one snapshot per week", 043 description = "After this number of weeks, if there are several snapshots during the same week, " 044 + "the DbCleaner keeps the most recent one and fully delete the other ones.", 045 global = true, 046 project = true, 047 type = PropertyType.INTEGER), 048 @Property(key = DbCleanerConstants.WEEKS_BEFORE_KEEPING_ONLY_ONE_SNAPSHOT_BY_MONTH, defaultValue = "52", 049 name = "Number of weeks before starting to keep only one snapshot per month", 050 description = "After this number of weeks, if there are several snapshots during the same month, " 051 + "the DbCleaner keeps the most recent one and fully delete the other ones.", 052 global = true, 053 project = true, 054 type = PropertyType.INTEGER), 055 @Property(key = DbCleanerConstants.WEEKS_BEFORE_DELETING_ALL_SNAPSHOTS, defaultValue = "260", 056 name = "Number of weeks before starting to delete all remaining snapshots", 057 description = "After this number of weeks, all snapshots are fully deleted.", 058 global = true, 059 project = true, 060 type = PropertyType.INTEGER) 061}) 062public final class DbCleanerPlugin extends SonarPlugin { 063 064 public List<Class<? extends BatchExtension>> getExtensions() { 065 return ImmutableList.of( 066 DefaultPeriodCleaner.class, 067 DefaultPurgeTask.class, 068 ProjectPurgePostJob.class); 069 } 070}