package com.airbnb.airpal.api.output.persistors; import com.airbnb.airpal.api.Job; import com.airbnb.airpal.api.output.PersistentJobOutput; import com.airbnb.airpal.api.output.builders.JobOutputBuilder; import com.airbnb.airpal.core.execution.QueryExecutionAuthorizer; import com.google.common.base.Splitter; import com.google.common.collect.Iterables; import java.net.URI; import java.util.List; import static com.google.common.base.Preconditions.checkState; public class HiveTablePersistor implements Persistor { private static final Splitter TABLE_SPLITTER = Splitter.on(".").omitEmptyStrings(); private final URI jobURI; public HiveTablePersistor(PersistentJobOutput jobOutput) { this.jobURI = jobOutput.getLocation(); } @Override public boolean canPersist(QueryExecutionAuthorizer authorizer) { List<String> locationParts = TABLE_SPLITTER.splitToList(jobURI.toString()); checkState(locationParts.size() == 2, "destination hive table did not have schema and table components"); return authorizer.isAuthorizedWrite("hive", Iterables.getFirst(locationParts, ""), Iterables.getLast(locationParts)); } @Override public URI persist(JobOutputBuilder outputBuilder, Job job) { return null; } }