View Javadoc
1   package ca.uhn.fhir.jpa.search;
2   
3   /*
4    * #%L
5    * HAPI FHIR JPA Server
6    * %%
7    * Copyright (C) 2014 - 2019 University Health Network
8    * %%
9    * Licensed under the Apache License, Version 2.0 (the "License");
10   * you may not use this file except in compliance with the License.
11   * You may obtain a copy of the License at
12   * 
13   *      http://www.apache.org/licenses/LICENSE-2.0
14   * 
15   * Unless required by applicable law or agreed to in writing, software
16   * distributed under the License is distributed on an "AS IS" BASIS,
17   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18   * See the License for the specific language governing permissions and
19   * limitations under the License.
20   * #L%
21   */
22  
23  import ca.uhn.fhir.jpa.dao.DaoRegistry;
24  import ca.uhn.fhir.jpa.dao.IFhirSystemDao;
25  import ca.uhn.fhir.rest.api.server.IBundleProvider;
26  import ca.uhn.fhir.rest.server.BasePagingProvider;
27  import ca.uhn.fhir.rest.server.IPagingProvider;
28  import org.springframework.beans.factory.annotation.Autowired;
29  import org.springframework.stereotype.Service;
30  
31  // Note: this class is not annotated with @Service because we want to
32  // explicitly define it in BaseConfig.java. This is done so that
33  // implementors can override if they want to.
34  public class DatabaseBackedPagingProvider extends BasePagingProvider implements IPagingProvider {
35  
36  	@Autowired
37  	private DaoRegistry myDaoRegistry;
38  
39  	/**
40  	 * Constructor
41  	 */
42  	public DatabaseBackedPagingProvider() {
43  		super();
44  	}
45  
46  	/**
47  	 * Constructor
48  	 * @deprecated Use {@link DatabaseBackedPagingProvider} as this constructor has no purpose
49  	 */
50  	@Deprecated
51  	public DatabaseBackedPagingProvider(int theSize) {
52  		this();
53  	}
54  
55  	@Override
56  	public synchronized IBundleProvider retrieveResultList(String theId) {
57  		IFhirSystemDao<?, ?> systemDao = myDaoRegistry.getSystemDao();
58  		PersistedJpaBundleProvider provider = new PersistedJpaBundleProvider(theId, systemDao);
59  		if (!provider.ensureSearchEntityLoaded()) {
60  			return null;
61  		}
62  		return provider;
63  	}
64  
65  	@Override
66  	public synchronized String storeResultList(IBundleProvider theList) {
67  		String uuid = theList.getUuid();
68  		return uuid;
69  	}
70  
71  }