View Javadoc
1   package ca.uhn.fhir.narrative;
2   
3   /*
4    * #%L
5    * HAPI FHIR - Core Library
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.context.FhirContext;
24  import ca.uhn.fhir.narrative2.NarrativeTemplateManifest;
25  import ca.uhn.fhir.narrative2.ThymeleafNarrativeGenerator;
26  import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
27  import org.hl7.fhir.instance.model.api.IBaseResource;
28  
29  import java.io.IOException;
30  import java.util.List;
31  
32  public abstract class BaseThymeleafNarrativeGenerator extends ThymeleafNarrativeGenerator {
33  
34  	private boolean myInitialized;
35  
36  	/**
37  	 * Constructor
38  	 */
39  	public BaseThymeleafNarrativeGenerator(FhirContext theFhirContext) {
40  		super(theFhirContext);
41  	}
42  
43  	@Override
44  	public boolean populateResourceNarrative(IBaseResource theResource) {
45  		if (!myInitialized) {
46  			initialize();
47  		}
48  		super.populateResourceNarrative(theResource);
49  		return false;
50  	}
51  
52  	protected abstract List<String> getPropertyFile();
53  
54  	private synchronized void initialize() {
55  		if (myInitialized) {
56  			return;
57  		}
58  
59  		List<String> propFileName = getPropertyFile();
60  		try {
61  			NarrativeTemplateManifest manifest = NarrativeTemplateManifest.forManifestFileLocation(getFhirContext(), propFileName);
62  			setManifest(manifest);
63  		} catch (IOException e) {
64  			throw new InternalErrorException(e);
65  		}
66  
67  		myInitialized = true;
68  	}
69  
70  
71  }