public SuccessMessage addFile(String project, @ApiParam("tableName") String tableName, @ApiParam("options") DiscoverableRemoteTable hook) {
try (Handle handle = dbi.open()) {
try {
handle.createStatement("INSERT INTO custom_file_source (project, table_name, options) " +
"VALUES (:project, :table_name, :options)")
.bind("project", project)
.bind("table_name", tableName)
.bind("options", JsonHelper.encode(hook.getTable()))
.execute();
return SuccessMessage.success();
} catch (Exception e) {
try {
getFile(project, tableName);
throw new AlreadyExistsException("Custom file", BAD_REQUEST);
} catch (RakamException e1) {
if (e1.getStatusCode() != NOT_FOUND) {
throw e1;
} else {
throw e;
}
}
}
}
}