package com.airbnb.airpal.api.output; import com.amazonaws.services.s3.AmazonS3; import com.google.common.base.Strings; import com.google.inject.Inject; import com.google.inject.name.Named; import java.net.URI; import java.util.UUID; public class PersistentJobOutputFactory { private final AmazonS3 s3Client; private final String s3Bucket; private final String createTableDestinationSchema; @Inject public PersistentJobOutputFactory(AmazonS3 s3Client, @Named("s3Bucket") String s3Bucket, @Named("createTableDestinationSchema") String createTableDestinationSchema) { this.s3Client = s3Client; this.s3Bucket = s3Bucket; this.createTableDestinationSchema = createTableDestinationSchema; } public PersistentJobOutput create(final String tmpTable, final UUID jobUUID) { if (!Strings.isNullOrEmpty(tmpTable)) { return new HiveTablePersistentOutput(jobUUID, tmpTable, createTableDestinationSchema); } else { return new CSVPersistentOutput(null, "csv", null); } } public static PersistentJobOutput create(String type, String description, URI location) { if (location == null) { return null; } else if (location.isAbsolute()) { return new CSVPersistentOutput(location, type, description); } else { return new HiveTablePersistentOutput(location, type, description); } } }