001/*- 002 * #%L 003 * HAPI FHIR JPA Server - Batch2 Task Processor 004 * %% 005 * Copyright (C) 2014 - 2024 Smile CDR, Inc. 006 * %% 007 * Licensed under the Apache License, Version 2.0 (the "License"); 008 * you may not use this file except in compliance with the License. 009 * You may obtain a copy of the License at 010 * 011 * http://www.apache.org/licenses/LICENSE-2.0 012 * 013 * Unless required by applicable law or agreed to in writing, software 014 * distributed under the License is distributed on an "AS IS" BASIS, 015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 016 * See the License for the specific language governing permissions and 017 * limitations under the License. 018 * #L% 019 */ 020package ca.uhn.fhir.batch2.jobs.step; 021 022import ca.uhn.fhir.batch2.jobs.chunk.ChunkRangeJson; 023import ca.uhn.fhir.interceptor.model.RequestPartitionId; 024import ca.uhn.fhir.jpa.api.pid.IResourcePidStream; 025import jakarta.annotation.Nullable; 026 027import java.util.Date; 028 029/** 030 * A service that produces pages of resource pids based on the data provided by a previous batch step. Typically, the 031 * first step in a batch job produces work chunks that define what types of data the batch operation will be performing 032 * (e.g. a list of resource types and date ranges). This service is then used by the second step to actually query and 033 * page through resource pids based on the chunk definitions produced by the first step. 034 * @param <IT> This parameter defines constraints on the types of pids we are pulling (e.g. resource type, url, etc.). 035 */ 036public interface IIdChunkProducer<IT extends ChunkRangeJson> { 037 @Deprecated(since = "7.3.7") 038 default IResourcePidStream fetchResourceIdStream( 039 Date theStart, Date theEnd, @Nullable RequestPartitionId theRequestPartitionId, IT theData) { 040 return fetchResourceIdStream(theData); 041 } 042 043 IResourcePidStream fetchResourceIdStream(IT theData); 044}