public static List<SchemaField> fillColumnIfNotSet(Map<String, String> typeOptions, RemoteTable.ExternalSourceType format, URL url, boolean indexUrl) {
if (format == CSV && !FALSE.toString().equals(typeOptions.get("use_header"))) {
URL file;
try {
file = getFile(url, indexUrl);
} catch (RuntimeException e) {
throw new RakamException(e.getMessage(), BAD_REQUEST);
}
String separator = Optional.ofNullable(typeOptions.get("column_separator")).orElse(",");
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(file.openStream()));
ImmutableList.Builder<SchemaField> builder = ImmutableList.builder();
for (String column : Splitter.on(separator).split(bufferedReader.readLine())) {
builder.add(new SchemaField(column, FieldType.STRING));
}
return builder.build();
} catch (IOException e) {
throw new RakamException("Error while parsing CSV: " + e.getMessage(), BAD_REQUEST);
}
}
throw new RakamException("columns parameter is required", BAD_REQUEST);
}