// Path: GerritDownloader/src/main/java/com/holmsted/gerrit/GerritServer.java
// public class GerritServer {
// 
//     private static final int GERRIT_DEFAULT_PORT = 29418;
//     private final int port;
// 
//     @Nonnull
//     private final String serverName;
//     private final String privateKey;
// 
//     public GerritServer(@Nonnull String serverName, int port, @Nonnull String privateKey) {
//         this.serverName = serverName;
//         this.port = port != 0 ? port : GERRIT_DEFAULT_PORT;
//         this.privateKey = privateKey;
//     }
// 
//     public String getServerName() {
//         return serverName;
//     }
// 
//     public int getPort() {
//         return port;
//     }
// 
//     public String getPrivateKey() {
//         return privateKey;
//     }
// 
//     @Override
//     public String toString() {
//         return String.format("%s:%d", serverName, port);
//     }
// }


import javax.annotation.Nonnull;
import com.holmsted.gerrit.GerritServer;
import org.json.JSONObject;
import java.util.List;
package com.holmsted.gerrit.downloaders;





public abstract class AbstractGerritStatsDownloader {
    public static final int NO_COMMIT_LIMIT = -1;

    @Nonnull
    private final GerritServer gerritServer;

    private String projectName;

    private int overallCommitLimit = NO_COMMIT_LIMIT;
    private String afterDate;
    private String beforeDate;

// Path: GerritDownloader/src/main/java/com/holmsted/gerrit/GerritServer.java
// public class GerritServer {
// 
//     private static final int GERRIT_DEFAULT_PORT = 29418;
//     private final int port;
// 
//     @Nonnull
//     private final String serverName;
//     private final String privateKey;
// 
//     public GerritServer(@Nonnull String serverName, int port, @Nonnull String privateKey) {
//         this.serverName = serverName;
//         this.port = port != 0 ? port : GERRIT_DEFAULT_PORT;
//         this.privateKey = privateKey;
//     }
// 
//     public String getServerName() {
//         return serverName;
//     }
// 
//     public int getPort() {
//         return port;
//     }
// 
//     public String getPrivateKey() {
//         return privateKey;
//     }
// 
//     @Override
//     public String toString() {
//         return String.format("%s:%d", serverName, port);
//     }
// }


// Path: GerritDownloader/src/main/java/com/holmsted/gerrit/downloaders/AbstractGerritStatsDownloader.java
import javax.annotation.Nonnull;
import com.holmsted.gerrit.GerritServer;
import org.json.JSONObject;
import java.util.List;

package com.holmsted.gerrit.downloaders;





public abstract class AbstractGerritStatsDownloader {
    public static final int NO_COMMIT_LIMIT = -1;

    @Nonnull
    private final GerritServer gerritServer;

    private String projectName;

    private int overallCommitLimit = NO_COMMIT_LIMIT;
    private String afterDate;
    private String beforeDate;

    public AbstractGerritStatsDownloader(@Nonnull GerritServer gerritServer) {