package com.airbnb.airpal.api.output.persistors; import com.airbnb.airpal.api.Job; import com.airbnb.airpal.api.output.PersistentJobOutput; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public class PersistorFactory { private final CSVPersistorFactory csvPersistorFactory; public Persistor getPersistor(Job job, PersistentJobOutput jobOutput) { switch (jobOutput.getType()) { case "csv": return csvPersistorFactory.getPersistor(job, jobOutput); case "hive": return new HiveTablePersistor(jobOutput); default: throw new IllegalArgumentException(); } } }