class ReplicaTableFactory {

  ColumnStatistics newReplicaPartitionStatistics(
      Table replicaTable,
      Partition replicaPartition,
      ColumnStatistics sourcePartitionStatistics) {
    ColumnStatisticsDesc statisticsDesc = new ColumnStatisticsDesc(false, replicaPartition.getDbName(),
        replicaPartition.getTableName());
    try {
      statisticsDesc.setPartName(Warehouse.makePartName(replicaTable.getPartitionKeys(), replicaPartition.getValues()));
    } catch (MetaException e) {
      throw new RuntimeException(e);
    }

    return columnStatisticsTransformation
        .transform(new ColumnStatistics(statisticsDesc, sourcePartitionStatistics.getStatsObj()));
  }

    ReplicaTableFactory(
      HiveConf sourceHiveConf,
      TableTransformation tableTransformation,
      PartitionTransformation partitionTransformation,
      ColumnStatisticsTransformation columnStatisticsTransformation);
    ReplicaTableFactory(
      String sourceMetaStoreUris,
      TableTransformation tableTransformation,
      PartitionTransformation partitionTransformation,
      ColumnStatisticsTransformation columnStatisticsTransformation);

}