import { AdoptDistribution } from './adopt/installer';
import { JavaBase } from './base-installer';
import { JavaInstallerOptions } from './base-models';
import { LocalDistribution } from './local/installer';
import { ZuluDistribution } from './zulu/installer';

enum JavaDistribution {
  Adopt = 'adopt',
  Zulu = 'zulu',
  JdkFile = 'jdkfile'
}

export function getJavaDistribution(
  distributionName: string,
  installerOptions: JavaInstallerOptions,
  jdkFile?: string
): JavaBase | null {
  switch (distributionName) {
    case JavaDistribution.JdkFile:
      return new LocalDistribution(installerOptions, jdkFile);
    case JavaDistribution.Adopt:
      return new AdoptDistribution(installerOptions);
    case JavaDistribution.Zulu:
      return new ZuluDistribution(installerOptions);
    default:
      return null;
  }
}