Package com.linkedin.databus.bootstrap.common

Source Code of com.linkedin.databus.bootstrap.common.BootstrapCleanerConfig$PeriodicTriggerConfigBuilder

package com.linkedin.databus.bootstrap.common;
/*
*
* Copyright 2013 LinkedIn Corp. All rights reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/


import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import com.linkedin.databus.bootstrap.common.BootstrapCleanerStaticConfig.BootstrapDBType;
import com.linkedin.databus.bootstrap.common.BootstrapCleanerStaticConfig.DiskSpaceTriggerConfig;
import com.linkedin.databus.bootstrap.common.BootstrapCleanerStaticConfig.PeriodicTriggerConfig;
import com.linkedin.databus.bootstrap.common.BootstrapCleanerStaticConfig.RetentionStaticConfig;
import com.linkedin.databus.bootstrap.common.BootstrapCleanerStaticConfig.RetentionType;
import com.linkedin.databus.core.util.ConfigBuilder;
import com.linkedin.databus.core.util.InvalidConfigException;

public class BootstrapCleanerConfig
  implements ConfigBuilder<BootstrapCleanerStaticConfig>
{

  private boolean enable;
  private Map<String,RetentionConfig> retentionOverride;
  private RetentionConfig retentionDefault;
  private Map<String,String> bootstrapTypeOverride;
  private String bootstrapTypeDefault;
  private Map<String, Boolean> enableOptimizeTable;
  private Boolean enableOptimizeTableDefault;
  private Map<String, Boolean> enableForceTabTableCleanup;
  private Boolean enableForceTabTableCleanupDefault;
  private DiskSpaceTriggerConfigBuilder diskSpaceTrigger;
  private PeriodicTriggerConfigBuilder periodicTrigger;

  public BootstrapCleanerConfig()
  {
    retentionOverride = new HashMap<String, RetentionConfig>();
    retentionDefault = new RetentionConfig();
    bootstrapTypeOverride = new HashMap<String, String>();
    bootstrapTypeDefault = BootstrapDBType.BOOTSTRAP_FULL.toString();
    enable = true;
    enableOptimizeTable = new HashMap<String, Boolean>();
    enableOptimizeTableDefault = Boolean.FALSE;
    enableForceTabTableCleanup = new HashMap<String, Boolean>();
    enableForceTabTableCleanupDefault = Boolean.FALSE;
    diskSpaceTrigger = new DiskSpaceTriggerConfigBuilder();
    periodicTrigger = new PeriodicTriggerConfigBuilder();
  }

  @Override
  public BootstrapCleanerStaticConfig build() throws InvalidConfigException
  {
    Map<String, RetentionStaticConfig> retOverrides = new HashMap<String, RetentionStaticConfig>();
    for (Entry<String, RetentionConfig> e : retentionOverride.entrySet())
    {
      retOverrides.put(e.getKey(), e.getValue().build());
    }

    Map<String, BootstrapDBType> bsTypeOverrides = new HashMap<String, BootstrapDBType>();
    for (Entry<String, String> e : bootstrapTypeOverride.entrySet())
    {
      bsTypeOverrides.put(e.getKey(), BootstrapDBType.valueOf(e.getValue()));
    }

    return new BootstrapCleanerStaticConfig(retOverrides,
                retentionDefault.build(),
                bsTypeOverrides,
                BootstrapDBType.valueOf(bootstrapTypeDefault),
                enableOptimizeTable,
                enableOptimizeTableDefault,
                enableForceTabTableCleanup,
                enableForceTabTableCleanupDefault,
                enable,
                diskSpaceTrigger.build(),
                periodicTrigger.build());
  }

  public RetentionConfig getRetentionOverride(String source)
  {
    RetentionConfig r = retentionOverride.get(source);

    if (null == r)
    {
      r = new RetentionConfig();
      retentionOverride.put(source, r);
    }

    return r;
  }

  public Boolean getEnableOptimizeTable(String source)
  {
    return enableOptimizeTable.get(source);
  }

  public void setEnableOptimizeTable(String source, Boolean enable)
  {
    this.enableOptimizeTable.put(source, enable);
  }

  public Boolean getEnableOptimizeTableDefault()
  {
    return enableOptimizeTableDefault;
  }

  public void setEnableOptimizeTableDefault(Boolean enable)
  {
    this.enableOptimizeTableDefault = enable;
  }

  public Boolean getEnableForceTabTableCleanup(String source)
  {
    return enableForceTabTableCleanup.get(source);
  }

  public void setEnableForceTabTableCleanup(String source, Boolean enable)
  {
    this.enableForceTabTableCleanup.put(source, enable);
  }

  public Boolean getEnableForceTabTableCleanupDefault()
  {
    return enableForceTabTableCleanupDefault;
  }

  public void setEnableForceTabTableCleanupDefault(Boolean enable)
  {
    this.enableForceTabTableCleanupDefault = enable;
  }


  public String getBootstrapTypeOverride(String source)
  {
    return bootstrapTypeOverride.get(source);
  }

  public void setBootstrapTypeOverride(String source, String bootstrapTypeOverride)
  {
    this.bootstrapTypeOverride.put(source, bootstrapTypeOverride);
  }

  public void setRetentionOverride(String source, RetentionConfig retentionOverride)
  {
    this.retentionOverride.put(source, retentionOverride);
  }

  public RetentionConfig getRetentionDefault()
  {
    return retentionDefault;
  }

  public void setRetentionDefault(RetentionConfig retentionDefault)
  {
    this.retentionDefault = retentionDefault;
  }

  public String getBootstrapTypeDefault()
  {
    return bootstrapTypeDefault;
  }

  public void setBootstrapTypeDefault(String bootstrapTypeDefault)
  {
    this.bootstrapTypeDefault = bootstrapTypeDefault;
  }

  public boolean getEnable()
  {
    return enable;
  }

  public void setEnable(boolean e)
  {
    enable = e;
  }

  public PeriodicTriggerConfigBuilder getPeriodicTrigger() {
    return periodicTrigger;
  }

  public void setPeriodicTrigger(PeriodicTriggerConfigBuilder periodicTrigger) {
    this.periodicTrigger = periodicTrigger;
  }

  public DiskSpaceTriggerConfigBuilder getDiskSpaceTrigger() {
    return diskSpaceTrigger;
  }

  public void setDiskSpaceTrigger(DiskSpaceTriggerConfigBuilder diskSpaceTrigger) {
    this.diskSpaceTrigger = diskSpaceTrigger;
  }

  public static class RetentionConfig implements ConfigBuilder<RetentionStaticConfig>
  {
    private static final String DEFAULT_RETENTION_TYPE = RetentionType.RETENTION_SECONDS.toString();
    private static final long DEFAULT_RETENTION_QTY = 14 * 24 * 60 * 60; // 2 weeks

    private String retentionType;
    private long retentionQuantity;

    public RetentionConfig()
    {
      retentionType = DEFAULT_RETENTION_TYPE;
      retentionQuantity = DEFAULT_RETENTION_QTY;
    }

    public String getRetentionType() {
      return retentionType;
    }

    public void setRetentionType(String retentionType) {
      this.retentionType = retentionType;
    }

    public long getRetentionQuantity() {
      return retentionQuantity;
    }

    public void setRetentionQuantity(long retentionQuantity) {
      this.retentionQuantity = retentionQuantity;
    }

    @Override
    public RetentionStaticConfig build() throws InvalidConfigException
    {
      try
      {
        RetentionType type = RetentionType.valueOf(retentionType);
        return new RetentionStaticConfig(type, retentionQuantity);
      } catch (Exception ex) {
        throw new InvalidConfigException(ex);
      }
    }
  }


  public static class DiskSpaceTriggerConfigBuilder
    implements ConfigBuilder<DiskSpaceTriggerConfig>
  {
    public static final double DEFAULT_AVAILABLE_THRESHOLD_PERCENT = 25.0;
    public static final boolean DEFAULT_ENABLE = true;
    public static final long DEFAULT_RUN_INTERVAL_SECONDS = 3600; //every hour
    public static final String DEFAULT_BOOTSTRAP_DB_DRIVE = "/mnt/u001";

    private boolean enable;
    private long runIntervalSeconds;
    private double availableThresholdPercent;
    private String bootstrapDBDrive;

    public DiskSpaceTriggerConfigBuilder()
    {
      enable = DEFAULT_ENABLE;
      runIntervalSeconds = DEFAULT_RUN_INTERVAL_SECONDS;
      availableThresholdPercent = DEFAULT_AVAILABLE_THRESHOLD_PERCENT;
      bootstrapDBDrive = DEFAULT_BOOTSTRAP_DB_DRIVE;
    }

    public boolean getEnable() {
      return enable;
    }

    public void setEnable(boolean enable) {
      this.enable = enable;
    }

    public long getRunIntervalSeconds() {
      return runIntervalSeconds;
    }

    public void setRunIntervalSeconds(long runIntervalSeconds) {
      this.runIntervalSeconds = runIntervalSeconds;
    }

    public double getAvailableThresholdPercent() {
      return availableThresholdPercent;
    }

    public void setAvailableThresholdPercent(double availableThresholdPercent) {
      this.availableThresholdPercent = availableThresholdPercent;
    }

    @Override
    public DiskSpaceTriggerConfig build()
        throws InvalidConfigException
    {
      if (availableThresholdPercent > 100 ||
          availableThresholdPercent < 0)
        throw new InvalidConfigException("availableThresholdPercent must be between 0-100");

      return new DiskSpaceTriggerConfig(enable, runIntervalSeconds, availableThresholdPercent, bootstrapDBDrive);
    }

    public String getBootstrapDBDrive() {
      return bootstrapDBDrive;
    }

    public void setBootstrapDBDrive(String bootstrapDBDrive) {
      this.bootstrapDBDrive = bootstrapDBDrive;
    }
  }

  public static class PeriodicTriggerConfigBuilder
    implements ConfigBuilder<PeriodicTriggerConfig>
  {
    public static final long DEFAULT_RUN_INTERVAL_SECONDS = 6 * 60 * 60; //4x per day

    private long runIntervalSeconds;
    private boolean enable;
    private boolean runOnStart;

    public PeriodicTriggerConfigBuilder()
    {
      runIntervalSeconds = DEFAULT_RUN_INTERVAL_SECONDS;
      enable = true;
      runOnStart = false;
    }

    public long getRunIntervalSeconds() {
      return runIntervalSeconds;
    }

    public void setRunIntervalSeconds(long runIntervalSeconds) {
      this.runIntervalSeconds = runIntervalSeconds;
    }

    public boolean getEnable() {
      return enable;
    }

    public void setEnable(boolean enable) {
      this.enable = enable;
    }

    public boolean isRunOnStart() {
      return runOnStart;
    }

    public void setRunOnStart(boolean runOnStart) {
      this.runOnStart = runOnStart;
    }

    @Override
    public PeriodicTriggerConfig build()
        throws InvalidConfigException
    {
      return new PeriodicTriggerConfig(runIntervalSeconds, enable, runOnStart);
    }
  }
}
TOP

Related Classes of com.linkedin.databus.bootstrap.common.BootstrapCleanerConfig$PeriodicTriggerConfigBuilder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.