private String getQuery(PluginTask task, JdbcInputConnection con) {
   if (task.getQuery().isPresent()) {
     if (task.getTable().isPresent()
         || task.getSelect().isPresent()
         || task.getWhere().isPresent()
         || task.getOrderBy().isPresent()) {
       throw new ConfigException(
           "'table', 'select', 'where' and 'order_by' parameters are unnecessary if 'query' parameter is set.");
     }
     return task.getQuery().get();
   } else if (task.getTable().isPresent()) {
     return con.buildSelectQuery(
         task.getTable().get(), task.getSelect(), task.getWhere(), task.getOrderBy());
   } else {
     throw new ConfigException("'table' parameter is required (if 'query' parameter is not set)");
   }
 }