private static List getShardSpecsFromShardSpecJsonDef()

in spanner-data-validator-java/src/main/java/com/google/migration/ShardSpecList.java [70:112]


  private static List<ShardSpec> getShardSpecsFromShardSpecJsonDef(ShardSpecJsonDef ssDef,
      Boolean verboseLogging) {
    ArrayList<ShardSpec> shardSpecs = new ArrayList<>();

    Integer hostCount = ssDef.getHostCount();
    Integer shardCount = ssDef.getShardCount();
    Integer shardsPerHost = shardCount/hostCount;

    String hostDigitFormat = "%s%0" + ssDef.getHostnameSuffixDigits() + "d";
    String shardDigitFormat = "%s%0" + ssDef.getShardSuffixDigits() + "d";

    for(int i = 0; i < hostCount; i++) {
      String hostname = String.format(hostDigitFormat,
          ssDef.getHostnamePrefix(),
          ssDef.getHostnameSuffixStart() + i);

      String shardStaticSuffix = ssDef.getShardStaticSuffix();
      if(!Helpers.isNullOrEmpty(shardStaticSuffix)) {
        hostname = String.format("%s%s", hostname, shardStaticSuffix);
      }

      for(int j = 0; j < shardsPerHost; j++) {

        String db = String.format(shardDigitFormat,
            ssDef.getDbNamePrefix(),
            ssDef.getShardSuffixStart() + j + (i * shardsPerHost));
        ShardSpec spec = new ShardSpec(hostname,
            ssDef.getUsername(),
            ssDef.getPassword(),
            db,
            String.valueOf((i * shardsPerHost) + j),
            (i * shardsPerHost) + j);

        if(verboseLogging) {
          LOG.info(String.format("Hostname: %s, shard (db): %s", spec.getHost(), spec.getDb()));
        }

        shardSpecs.add(spec);
      } // for
    }

    return shardSpecs;
  }