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}