Skip to content
PrivateRowsQueryExecutor.java 867 B
Newer Older
package it.inaf.ia2.vollt;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.stream.Collectors;
import tap.db.QueryExecutor;
import uws.job.user.JobOwner;

public class PrivateRowsQueryExecutor extends QueryExecutor {

    @Override
    public ResultSet executeQuery(Statement statement, String sql, JobOwner jobOwner) throws SQLException {

        if (jobOwner instanceof CustomJobOwner) {
            CustomJobOwner user = (CustomJobOwner) jobOwner;
            statement.execute("SET my.tap_groups = \"{"
                    + String.join(",", user.getGroups().stream()
                            .map(g -> "'" + g.replace("'", "''") + "'")
                            .collect(Collectors.toList()))
                    + "}\"");
        }

        return super.executeQuery(statement, sql, jobOwner);
    }
}