view mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java @ 645:4cf1ab3cd162

Merge in subrepos
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Tue, 17 Sep 2013 18:48:51 +0400
parents 6ed9e0528564
children 0b50d7952a7d
line wrap: on
line source
package jetbrains.buildServer.buildTriggers.vcs.mercurial;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.quartz.CronExpression;

import java.io.File;

/**
 * @author dmitry.neverov
 */
public class ServerPluginConfigBuilder {

  private boolean myUsePullProtocol = true;
  private String myHgPath;
  private File myCachesDir;
  private boolean myDontUseRevsets = false;
  private boolean myDetectSubrepoChanges = true;
  private long myMirrorExpirationTimeout;

  @NotNull
  public ServerPluginConfig build() {
    return new ServerPluginConfig() {

      public boolean isUsePullProtocol() {
        return myUsePullProtocol;
      }

      public String getHgPath() {
        return myHgPath;
      }

      @NotNull
      public File getCachesDir() {
        if (myCachesDir == null)
          throw new IllegalStateException("Caches dir is not set");
        return myCachesDir;
      }

      public int getPullTimeout() {
        return ServerPluginConfigImpl.DEFAULT_PULL_TIMEOUT_SECONDS;
      }

      public boolean dontUseRevsets() {
        return myDontUseRevsets;
      }

      public boolean detectSubrepoChanges() {
        return myDetectSubrepoChanges;
      }

      public boolean bookmarksEnabled() {
        return true;
      }

      public int getMaxDagNodesCount() {
        return 0;
      }

      public int getLogOutputLimit() {
        return 0;
      }

      public long getMirrorExpirationTimeoutMillis() {
        return myMirrorExpirationTimeout;
      }

      @Nullable
      public CronExpression getCleanupCronExpression() {
        return null;
      }

      public boolean reportSubrepoChangesFileStatus() {
        return false;
      }

      public boolean allowSourceCaching() {
        return false;
      }
    };
  }


  public static ServerPluginConfigBuilder serverPluginConfig() {
    return new ServerPluginConfigBuilder();
  }

  public ServerPluginConfigBuilder userPullProtocol(boolean doUse) {
    myUsePullProtocol = doUse;
    return this;
  }

  public ServerPluginConfigBuilder hgPath(String hgPath) {
    myHgPath = hgPath;
    return this;
  }

  public ServerPluginConfigBuilder cachesDir(File cachesDir) {
    myCachesDir = cachesDir;
    return this;
  }

  public ServerPluginConfigBuilder dontUseRevsets() {
    myDontUseRevsets = true;
    return this;
  }

  public ServerPluginConfigBuilder detectSubrepoChanges(boolean doDetect) {
    myDetectSubrepoChanges = doDetect;
    return this;
  }

  public ServerPluginConfigBuilder withMirrorExpirationTimeout(long timeoutMillis) {
    myMirrorExpirationTimeout = timeoutMillis;
    return this;
  }
}