private List<JobExecutionInfo> processListQuery(Connection connection, JobExecutionQuery query) throws SQLException { Preconditions.checkArgument(query.getId().isQueryListType()); QueryListType queryType = query.getId().getQueryListType(); String listJobExecutionsQuery; if (queryType == QueryListType.DISTINCT) {
List<JobExecutionInfo> jobExecutionInfos = Lists.newArrayList(); JobExecutionInfo jobExecutionInfo = processQueryById(connection, query.getId().getString(), query, Filter.MISSING); if (jobExecutionInfo != null) { jobExecutionInfos.add(jobExecutionInfo); return processQueryByJobName(connection, query.getId().getString(), query, Filter.MISSING); case TABLE: return processQueryByTable(connection, query);
private List<JobExecutionInfo> processListQuery(Connection connection, JobExecutionQuery query) throws SQLException { Preconditions.checkArgument(query.getId().isQueryListType()); QueryListType queryType = query.getId().getQueryListType(); String listJobExecutionsQuery = ""; if (queryType == QueryListType.DISTINCT) {
private List<JobExecutionInfo> processListQuery(Connection connection, JobExecutionQuery query) throws SQLException { Preconditions.checkArgument(query.getId().isQueryListType()); QueryListType queryType = query.getId().getQueryListType(); String listJobExecutionsQuery; if (queryType == QueryListType.DISTINCT) {
List<JobExecutionInfo> jobExecutionInfos = Lists.newArrayList(); JobExecutionInfo jobExecutionInfo = processQueryById(connection, query.getId().getString(), query, Filter.MISSING); if (jobExecutionInfo != null) { jobExecutionInfos.add(jobExecutionInfo); return processQueryByJobName(connection, query.getId().getString(), query, Filter.MISSING); case TABLE: return processQueryByTable(connection, query);
private List<JobExecutionInfo> processQueryByTable(Connection connection, JobExecutionQuery query) throws SQLException { Preconditions.checkArgument(query.getId().isTable()); Filter tableFilter = constructTableFilter(query.getId().getTable()); String jobsWithoutTaskFilter = ""; if (!query.isIncludeJobsWithoutTasks()) { jobsWithoutTaskFilter = " AND " + FILTER_JOBS_WITH_TASKS; } // Construct the query for job names by table definition String jobNameByTableQuery = String.format(JOB_NAME_QUERY_BY_TABLE_STATEMENT_TEMPLATE, tableFilter.getFilter(), jobsWithoutTaskFilter); List<JobExecutionInfo> jobExecutionInfos = Lists.newArrayList(); // Query job names by table definition try (PreparedStatement queryStatement = connection.prepareStatement(jobNameByTableQuery)) { if (tableFilter.isPresent()) { tableFilter.addParameters(queryStatement, 1); } try (ResultSet rs = queryStatement.executeQuery()) { while (rs.next()) { jobExecutionInfos.addAll(processQueryByJobName(connection, rs.getString(1), query, tableFilter)); } } return jobExecutionInfos; } }
/** * Retrieve all jobs * * @param lookupType Query type * @return List of all jobs (limited by results limit) */ public List<JobExecutionInfo> queryAllJobs(QueryListType lookupType, int resultsLimit) throws RemoteInvocationException { JobExecutionQuery query = new JobExecutionQuery(); query.setIdType(QueryIdTypeEnum.LIST_TYPE); query.setId(JobExecutionQuery.Id.create(lookupType)); // Disable properties and task executions (prevents response size from ballooning) query.setJobProperties(ConfigurationKeys.JOB_RUN_ONCE_KEY + "," + ConfigurationKeys.JOB_SCHEDULE_KEY); query.setIncludeTaskExecutions(false); query.setLimit(resultsLimit); return executeQuery(query); }
private List<JobExecutionInfo> processQueryByTable(Connection connection, JobExecutionQuery query) throws SQLException { Preconditions.checkArgument(query.getId().isTable()); Filter tableFilter = constructTableFilter(query.getId().getTable()); // Construct the query for job names by table definition String jobNameByTableQuery = String.format(JOB_NAME_QUERY_BY_TABLE_STATEMENT_TEMPLATE, tableFilter); List<JobExecutionInfo> jobExecutionInfos = Lists.newArrayList(); // Query job names by table definition try (PreparedStatement queryStatement = connection.prepareStatement(jobNameByTableQuery)) { if (tableFilter.isPresent()) { tableFilter.addParameters(queryStatement, 1); } try (ResultSet rs = queryStatement.executeQuery()) { while (rs.next()) { jobExecutionInfos.addAll(processQueryByJobName(connection, rs.getString(1), query, tableFilter)); } } } return jobExecutionInfos; }
/** * Query jobs by name * * @param name Name of the job to query for * @param resultsLimit Max # of results to return * @return List of jobs with the name (empty list if none can be found) */ public List<JobExecutionInfo> queryByJobName(String name, int resultsLimit) throws RemoteInvocationException { JobExecutionQuery query = new JobExecutionQuery(); query.setIdType(QueryIdTypeEnum.JOB_NAME); query.setId(JobExecutionQuery.Id.create(name)); query.setIncludeTaskExecutions(false); query.setLimit(resultsLimit); return executeQuery(query); }
/** * Retrieve a Gobblin job by its id. * * @param id Id of the job to retrieve * @return JobExecutionInfo representing the job */ public Optional<JobExecutionInfo> queryByJobId(String id) throws RemoteInvocationException { JobExecutionQuery query = new JobExecutionQuery(); query.setIdType(QueryIdTypeEnum.JOB_ID); query.setId(JobExecutionQuery.Id.create(id)); query.setLimit(1); List<JobExecutionInfo> results = executeQuery(query); return getFirstFromQueryResults(results); }
public static JobExecutionQuery.Id create(org.apache.gobblin.rest.Table value) { JobExecutionQuery.Id newUnion = new JobExecutionQuery.Id(); newUnion.setTable(value); return newUnion; }
public static JobExecutionQuery.Id create(java.lang.String value) { JobExecutionQuery.Id newUnion = new JobExecutionQuery.Id(); newUnion.setString(value); return newUnion; }
public static JobExecutionQuery.Id create(org.apache.gobblin.rest.QueryListType value) { JobExecutionQuery.Id newUnion = new JobExecutionQuery.Id(); newUnion.setQueryListType(value); return newUnion; }
private List<JobExecutionInfo> processListQuery(Connection connection, JobExecutionQuery query) throws SQLException { Preconditions.checkArgument(query.getId().isQueryListType()); QueryListType queryType = query.getId().getQueryListType(); String listJobExecutionsQuery = ""; if (queryType == QueryListType.DISTINCT) {
@Test public void testBatchGet() throws Exception { JobExecutionQuery queryByJobId1 = new JobExecutionQuery(); queryByJobId1.setIdType(QueryIdTypeEnum.JOB_ID); queryByJobId1.setId(JobExecutionQuery.Id.create(this.expected1.getJobId())); JobExecutionQuery queryByJobId2 = new JobExecutionQuery(); queryByJobId2.setIdType(QueryIdTypeEnum.JOB_ID); queryByJobId2.setId(JobExecutionQuery.Id.create(this.expected2.getJobId())); List<JobExecutionQuery> queries = Lists.newArrayList(queryByJobId1, queryByJobId2); List<JobExecutionQueryResult> result = Lists.newArrayList(this.client.batchGet(queries)); Assert.assertEquals(result.size(), 2); Assert.assertEquals(result.get(0).getJobExecutions().size(), 1); Assert.assertEquals(result.get(1).getJobExecutions().size(), 1); JobExecutionInfo actual1 = result.get(0).getJobExecutions().get(0); JobExecutionInfo actual2 = result.get(1).getJobExecutions().get(0); if (actual1.getJobName().equals(this.expected1.getJobName())) { assertJobExecution(actual1, this.expected1); assertJobExecution(actual2, this.expected2); } else { assertJobExecution(actual1, this.expected2); assertJobExecution(actual2, this.expected1); } }
private List<JobExecutionInfo> processQueryByTable(Connection connection, JobExecutionQuery query) throws SQLException { Preconditions.checkArgument(query.getId().isTable()); Filter tableFilter = constructTableFilter(query.getId().getTable()); String jobsWithoutTaskFilter = ""; if (!query.isIncludeJobsWithoutTasks()) { jobsWithoutTaskFilter = " AND " + FILTER_JOBS_WITH_TASKS; } // Construct the query for job names by table definition String jobNameByTableQuery = String.format(JOB_NAME_QUERY_BY_TABLE_STATEMENT_TEMPLATE, tableFilter.getFilter(), jobsWithoutTaskFilter); List<JobExecutionInfo> jobExecutionInfos = Lists.newArrayList(); // Query job names by table definition try (PreparedStatement queryStatement = connection.prepareStatement(jobNameByTableQuery)) { if (tableFilter.isPresent()) { tableFilter.addParameters(queryStatement, 1); } try (ResultSet rs = queryStatement.executeQuery()) { while (rs.next()) { jobExecutionInfos.addAll(processQueryByJobName(connection, rs.getString(1), query, tableFilter)); } } return jobExecutionInfos; } }
private List<JobExecutionInfo> processQueryByTable(Connection connection, JobExecutionQuery query) throws SQLException { Preconditions.checkArgument(query.getId().isTable()); Filter tableFilter = constructTableFilter(query.getId().getTable()); // Construct the query for job names by table definition String jobNameByTableQuery = String.format(JOB_NAME_QUERY_BY_TABLE_STATEMENT_TEMPLATE, tableFilter); List<JobExecutionInfo> jobExecutionInfos = Lists.newArrayList(); // Query job names by table definition try (PreparedStatement queryStatement = connection.prepareStatement(jobNameByTableQuery)) { if (tableFilter.isPresent()) { tableFilter.addParameters(queryStatement, 1); } try (ResultSet rs = queryStatement.executeQuery()) { while (rs.next()) { jobExecutionInfos.addAll(processQueryByJobName(connection, rs.getString(1), query, tableFilter)); } } } return jobExecutionInfos; }