remove spring batch (#4064)
* remove spring batch it compiles expect test failures * fix test transaction manager bean name (wow that was quite the hunt the wumpus!) * fix test and fix build * fix test and fix build * fix test * remove spring batch schema initialization * bump hapi version * fix schema migrator * bump to PRE-10 * merge master * change logs Co-authored-by: Ken Stevens <ken@smilecdr.com>
This commit is contained in:
parent
b472c4bb54
commit
e9a855d3f6
|
@ -36,8 +36,6 @@ stages:
|
||||||
module: hapi-fhir-android
|
module: hapi-fhir-android
|
||||||
- name: hapi_fhir_base
|
- name: hapi_fhir_base
|
||||||
module: hapi-fhir-base
|
module: hapi-fhir-base
|
||||||
- name: hapi_fhir_batch
|
|
||||||
module: hapi-fhir-batch
|
|
||||||
- name: hapi_fhir_checkstyle
|
- name: hapi_fhir_checkstyle
|
||||||
module: hapi-fhir-checkstyle
|
module: hapi-fhir-checkstyle
|
||||||
- name: hapi_fhir_cli_api
|
- name: hapi_fhir_cli_api
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-fhir</artifactId>
|
<artifactId>hapi-fhir</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
package ca.uhn.fhir.jpa.batch.api;
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* #%L
|
|
||||||
* HAPI FHIR JPA Server - Batch Task Processor
|
|
||||||
* %%
|
|
||||||
* Copyright (C) 2014 - 2022 Smile CDR, Inc.
|
|
||||||
* %%
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
* #L%
|
|
||||||
*/
|
|
||||||
|
|
||||||
import org.springframework.batch.core.Job;
|
|
||||||
import org.springframework.batch.core.JobExecution;
|
|
||||||
import org.springframework.batch.core.JobParameters;
|
|
||||||
import org.springframework.batch.core.JobParametersInvalidException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use IJobCoordinator instead
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public interface IBatchJobSubmitter {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Given a {@link Job} and a {@link JobParameters}, execute the job with the given parameters.
|
|
||||||
*
|
|
||||||
* @param theJob the job to run.
|
|
||||||
* @param theJobParameters A collection of key-value pairs that are used to parameterize the job.
|
|
||||||
* @return A {@link JobExecution} representing the job.
|
|
||||||
* @throws JobParametersInvalidException If validation on the parameters fails.
|
|
||||||
*/
|
|
||||||
JobExecution runJob(Job theJob, JobParameters theJobParameters) throws JobParametersInvalidException;
|
|
||||||
}
|
|
|
@ -1,112 +0,0 @@
|
||||||
package ca.uhn.fhir.jpa.batch.config;
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* #%L
|
|
||||||
* HAPI FHIR JPA Server - Batch Task Processor
|
|
||||||
* %%
|
|
||||||
* Copyright (C) 2014 - 2022 Smile CDR, Inc.
|
|
||||||
* %%
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
* #L%
|
|
||||||
*/
|
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public final class BatchConstants {
|
|
||||||
public static final String JOB_PARAM_REQUEST_LIST = "url-list";
|
|
||||||
public static final String JOB_PARAM_BATCH_SIZE = "batch-size";
|
|
||||||
public static final String JOB_PARAM_START_TIME = "start-time";
|
|
||||||
public static final String CURRENT_URL_INDEX = "current.url-index";
|
|
||||||
public static final String CURRENT_THRESHOLD_HIGH = "current.threshold-high";
|
|
||||||
public static final String JOB_UUID_PARAMETER = "jobUUID";
|
|
||||||
public static final String JOB_LAUNCHING_TASK_EXECUTOR = "jobLaunchingTaskExecutor";
|
|
||||||
public static final String BULK_EXPORT_JOB_NAME = "bulkExportJob";
|
|
||||||
public static final String GROUP_BULK_EXPORT_JOB_NAME = "groupBulkExportJob";
|
|
||||||
public static final String PATIENT_BULK_EXPORT_JOB_NAME = "patientBulkExportJob";
|
|
||||||
public static final String BULK_EXPORT_GENERATE_RESOURCE_FILES_STEP = "bulkExportGenerateResourceFilesStep";
|
|
||||||
public static final String BULK_IMPORT_JOB_NAME = "bulkImportJob";
|
|
||||||
public static final String BULK_IMPORT_PROCESSING_STEP = "bulkImportProcessingStep";
|
|
||||||
/**
|
|
||||||
* Delete Expunge
|
|
||||||
*/
|
|
||||||
public static final String DELETE_EXPUNGE_JOB_NAME = "deleteExpungeJob";
|
|
||||||
/**
|
|
||||||
* MDM Clear
|
|
||||||
*/
|
|
||||||
public static final String MDM_CLEAR_JOB_NAME = "mdmClearJob";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TermCodeSystem delete
|
|
||||||
*/
|
|
||||||
public static final String TERM_CODE_SYSTEM_DELETE_JOB_NAME = "termCodeSystemDeleteJob";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TermCodeSystemVersion delete
|
|
||||||
*/
|
|
||||||
public static final String TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME = "termCodeSystemVersionDeleteJob";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Both: TermCodeSystem delete and TermCodeSystemVersion delete
|
|
||||||
*/
|
|
||||||
public static final String JOB_PARAM_CODE_SYSTEM_VERSION_ID = "termCodeSystemVersionPid";
|
|
||||||
|
|
||||||
|
|
||||||
public static final String BULK_EXPORT_READ_CHUNK_PARAMETER = "readChunkSize";
|
|
||||||
public static final String BULK_EXPORT_GROUP_ID_PARAMETER = "groupId";
|
|
||||||
/**
|
|
||||||
* Job Parameters
|
|
||||||
*/
|
|
||||||
public static final String READ_CHUNK_PARAMETER = "readChunkSize";
|
|
||||||
public static final String EXPAND_MDM_PARAMETER = "expandMdm";
|
|
||||||
public static final String GROUP_ID_PARAMETER = "groupId";
|
|
||||||
public static final String JOB_RESOURCE_TYPES_PARAMETER = "resourceTypes";
|
|
||||||
public static final String JOB_DESCRIPTION = "jobDescription";
|
|
||||||
public static final String JOB_SINCE_PARAMETER = "since";
|
|
||||||
public static final String JOB_TYPE_FILTERS = "filters";
|
|
||||||
public static final String JOB_COLLECTION_ENTITY_ID = "bulkExportCollectionEntityId";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Job Execution Context
|
|
||||||
*/
|
|
||||||
public static final String JOB_EXECUTION_RESOURCE_TYPE = "resourceType";
|
|
||||||
|
|
||||||
public static final List<String> PATIENT_BULK_EXPORT_FORWARD_REFERENCE_RESOURCE_TYPES = List.of("Practitioner", "Organization");
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This Set contains the step names across all job types that are appropriate for
|
|
||||||
* someone to look at the write count for that given step in order to determine the
|
|
||||||
* number of processed records.
|
|
||||||
* <p>
|
|
||||||
* This is provided since a job might have multiple steps that the same data passes
|
|
||||||
* through, so you can't just sum up the total of all of them.
|
|
||||||
* <p>
|
|
||||||
* For any given batch job type, there should only be one step name in this set
|
|
||||||
*/
|
|
||||||
public static Set<String> RECORD_PROCESSING_STEP_NAMES;
|
|
||||||
|
|
||||||
static {
|
|
||||||
HashSet<String> recordProcessingStepNames = new HashSet<>();
|
|
||||||
recordProcessingStepNames.add(BatchConstants.BULK_IMPORT_PROCESSING_STEP);
|
|
||||||
recordProcessingStepNames.add(BatchConstants.BULK_EXPORT_GENERATE_RESOURCE_FILES_STEP);
|
|
||||||
BatchConstants.RECORD_PROCESSING_STEP_NAMES = Collections.unmodifiableSet(recordProcessingStepNames);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* v * Non instantiable
|
|
||||||
*/
|
|
||||||
private BatchConstants() {
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,76 +0,0 @@
|
||||||
package ca.uhn.fhir.jpa.batch.config;
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* #%L
|
|
||||||
* HAPI FHIR JPA Server - Batch Task Processor
|
|
||||||
* %%
|
|
||||||
* Copyright (C) 2014 - 2022 Smile CDR, Inc.
|
|
||||||
* %%
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
* #L%
|
|
||||||
*/
|
|
||||||
|
|
||||||
import org.springframework.batch.core.configuration.annotation.DefaultBatchConfigurer;
|
|
||||||
import org.springframework.batch.core.explore.JobExplorer;
|
|
||||||
import org.springframework.batch.core.explore.support.MapJobExplorerFactoryBean;
|
|
||||||
import org.springframework.batch.core.launch.JobLauncher;
|
|
||||||
import org.springframework.batch.core.launch.support.SimpleJobLauncher;
|
|
||||||
import org.springframework.batch.core.repository.JobRepository;
|
|
||||||
import org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.core.task.TaskExecutor;
|
|
||||||
import org.springframework.transaction.PlatformTransactionManager;
|
|
||||||
|
|
||||||
|
|
||||||
public class NonPersistedBatchConfigurer extends DefaultBatchConfigurer {
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("hapiTransactionManager")
|
|
||||||
private PlatformTransactionManager myHapiPlatformTransactionManager;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier(BatchConstants.JOB_LAUNCHING_TASK_EXECUTOR)
|
|
||||||
private TaskExecutor myTaskExecutor;
|
|
||||||
|
|
||||||
private MapJobRepositoryFactoryBean myJobRepositoryFactory;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public PlatformTransactionManager getTransactionManager() {
|
|
||||||
return myHapiPlatformTransactionManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected JobRepository createJobRepository() throws Exception {
|
|
||||||
MapJobRepositoryFactoryBean factory = new MapJobRepositoryFactoryBean();
|
|
||||||
factory.setTransactionManager(this.getTransactionManager());
|
|
||||||
factory.afterPropertiesSet();
|
|
||||||
myJobRepositoryFactory = factory;
|
|
||||||
return factory.getObject();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public JobExplorer createJobExplorer() throws Exception {
|
|
||||||
MapJobExplorerFactoryBean jobExplorerFactoryBean = new MapJobExplorerFactoryBean(myJobRepositoryFactory);
|
|
||||||
jobExplorerFactoryBean.afterPropertiesSet();
|
|
||||||
return jobExplorerFactoryBean.getObject();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected JobLauncher createJobLauncher() throws Exception {
|
|
||||||
SimpleJobLauncher launcher = new SimpleJobLauncher();
|
|
||||||
launcher.setTaskExecutor(myTaskExecutor);
|
|
||||||
launcher.setJobRepository(getJobRepository());
|
|
||||||
launcher.afterPropertiesSet();
|
|
||||||
return launcher;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,67 +0,0 @@
|
||||||
package ca.uhn.fhir.jpa.batch.svc;
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* #%L
|
|
||||||
* HAPI FHIR JPA Server - Batch Task Processor
|
|
||||||
* %%
|
|
||||||
* Copyright (C) 2014 - 2022 Smile CDR, Inc.
|
|
||||||
* %%
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
* #L%
|
|
||||||
*/
|
|
||||||
|
|
||||||
import ca.uhn.fhir.jpa.batch.api.IBatchJobSubmitter;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.springframework.batch.core.Job;
|
|
||||||
import org.springframework.batch.core.JobExecution;
|
|
||||||
import org.springframework.batch.core.JobParameters;
|
|
||||||
import org.springframework.batch.core.JobParametersInvalidException;
|
|
||||||
import org.springframework.batch.core.launch.JobLauncher;
|
|
||||||
import org.springframework.batch.core.repository.JobExecutionAlreadyRunningException;
|
|
||||||
import org.springframework.batch.core.repository.JobInstanceAlreadyCompleteException;
|
|
||||||
import org.springframework.batch.core.repository.JobRepository;
|
|
||||||
import org.springframework.batch.core.repository.JobRestartException;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.transaction.annotation.Propagation;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import static org.slf4j.LoggerFactory.getLogger;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated we are in the process of converting to batch2
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class BatchJobSubmitterImpl implements IBatchJobSubmitter {
|
|
||||||
|
|
||||||
private static final Logger ourLog = getLogger(BatchJobSubmitterImpl.class);
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JobLauncher myJobLauncher;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JobRepository myJobRepository;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional(propagation = Propagation.NOT_SUPPORTED)
|
|
||||||
public JobExecution runJob(Job theJob, JobParameters theJobParameters) throws JobParametersInvalidException {
|
|
||||||
try {
|
|
||||||
return myJobLauncher.run(theJob, theJobParameters);
|
|
||||||
} catch (JobExecutionAlreadyRunningException | JobRestartException | JobInstanceAlreadyCompleteException e) {
|
|
||||||
ourLog.warn("Job {} was already running, ignoring the call to start: {}", theJob.getName(), e.toString());
|
|
||||||
return myJobRepository.getLastJobExecution(theJob.getName(), theJobParameters);
|
|
||||||
} catch (JobParametersInvalidException e) {
|
|
||||||
ourLog.error("Job Parameters passed to this job were invalid: {}", e.getMessage());
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,12 +0,0 @@
|
||||||
package ca.uhn.fhir.jpa.batch;
|
|
||||||
|
|
||||||
import ca.uhn.fhir.jpa.batch.config.BatchJobConfig;
|
|
||||||
import ca.uhn.fhir.jpa.batch.config.TestBatchConfig;
|
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
|
||||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
|
||||||
|
|
||||||
@ExtendWith(SpringExtension.class)
|
|
||||||
@ContextConfiguration(classes = {BatchJobConfig.class, TestBatchConfig.class})
|
|
||||||
abstract public class BaseBatchR4Test {
|
|
||||||
}
|
|
|
@ -1,54 +0,0 @@
|
||||||
package ca.uhn.fhir.jpa.batch.config;
|
|
||||||
|
|
||||||
import org.springframework.batch.core.Job;
|
|
||||||
import org.springframework.batch.core.Step;
|
|
||||||
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
|
|
||||||
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
|
|
||||||
import org.springframework.batch.core.configuration.annotation.StepScope;
|
|
||||||
import org.springframework.batch.core.step.tasklet.Tasklet;
|
|
||||||
import org.springframework.batch.item.ItemWriter;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
public class BatchJobConfig {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JobBuilderFactory myJobBuilderFactory;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private StepBuilderFactory myStepBuilderFactory;
|
|
||||||
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public Job testJob() {
|
|
||||||
return myJobBuilderFactory.get("testJob")
|
|
||||||
.start(testStep())
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public Step testStep() {
|
|
||||||
return myStepBuilderFactory.get("testStep")
|
|
||||||
.tasklet(sampleTasklet())
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
@StepScope
|
|
||||||
public Tasklet sampleTasklet() {
|
|
||||||
return new SampleTasklet();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
@StepScope
|
|
||||||
public SampleItemReader reader() {
|
|
||||||
return new SampleItemReader();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public ItemWriter<String> simpleWriter() {
|
|
||||||
return theList -> theList.forEach(System.out::println);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,15 +0,0 @@
|
||||||
package ca.uhn.fhir.jpa.batch.config;
|
|
||||||
|
|
||||||
import org.springframework.batch.item.ItemReader;
|
|
||||||
import org.springframework.batch.item.NonTransientResourceException;
|
|
||||||
import org.springframework.batch.item.ParseException;
|
|
||||||
import org.springframework.batch.item.UnexpectedInputException;
|
|
||||||
|
|
||||||
public class SampleItemReader implements ItemReader<String> {
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {
|
|
||||||
return "zoop";
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
package ca.uhn.fhir.jpa.batch.config;
|
|
||||||
|
|
||||||
import org.springframework.batch.core.StepContribution;
|
|
||||||
import org.springframework.batch.core.scope.context.ChunkContext;
|
|
||||||
import org.springframework.batch.core.step.tasklet.Tasklet;
|
|
||||||
import org.springframework.batch.repeat.RepeatStatus;
|
|
||||||
|
|
||||||
public class SampleTasklet implements Tasklet {
|
|
||||||
@Override
|
|
||||||
public RepeatStatus execute(StepContribution theStepContribution, ChunkContext theChunkContext) throws Exception {
|
|
||||||
System.out.println("woo");
|
|
||||||
return RepeatStatus.FINISHED;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,36 +0,0 @@
|
||||||
package ca.uhn.fhir.jpa.batch.config;
|
|
||||||
|
|
||||||
import org.springframework.batch.core.configuration.annotation.BatchConfigurer;
|
|
||||||
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
|
|
||||||
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.core.task.TaskExecutor;
|
|
||||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
|
||||||
import org.springframework.transaction.PlatformTransactionManager;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@EnableBatchProcessing
|
|
||||||
public class TestBatchConfig {
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public PlatformTransactionManager hapiTransactionManager() {
|
|
||||||
return new ResourcelessTransactionManager();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public TaskExecutor jobLaunchingTaskExecutor() {
|
|
||||||
ThreadPoolTaskExecutor asyncTaskExecutor = new ThreadPoolTaskExecutor();
|
|
||||||
asyncTaskExecutor.setCorePoolSize(5);
|
|
||||||
asyncTaskExecutor.setMaxPoolSize(10);
|
|
||||||
asyncTaskExecutor.setQueueCapacity(500);
|
|
||||||
asyncTaskExecutor.setThreadNamePrefix("JobLauncher-");
|
|
||||||
asyncTaskExecutor.initialize();
|
|
||||||
return asyncTaskExecutor;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public BatchConfigurer batchConfigurer() {
|
|
||||||
return new NonPersistedBatchConfigurer();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
package ca.uhn.fhir.jpa.batch.svc;
|
|
||||||
|
|
||||||
import ca.uhn.fhir.jpa.batch.BaseBatchR4Test;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.springframework.batch.core.Job;
|
|
||||||
import org.springframework.batch.core.JobParameters;
|
|
||||||
import org.springframework.batch.core.JobParametersInvalidException;
|
|
||||||
import org.springframework.batch.core.launch.JobLauncher;
|
|
||||||
import org.springframework.batch.core.repository.JobExecutionAlreadyRunningException;
|
|
||||||
import org.springframework.batch.core.repository.JobInstanceAlreadyCompleteException;
|
|
||||||
import org.springframework.batch.core.repository.JobRestartException;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
public class BatchSvcTest extends BaseBatchR4Test {
|
|
||||||
@Autowired
|
|
||||||
protected JobLauncher myJobLauncher;
|
|
||||||
@Autowired
|
|
||||||
protected Job myJob;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testApplicationContextLoads() throws JobParametersInvalidException, JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException, InterruptedException {
|
|
||||||
myJobLauncher.run(myJob, new JobParameters());
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,78 +0,0 @@
|
||||||
<configuration>
|
|
||||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
|
||||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
|
||||||
<level>INFO</level>
|
|
||||||
</filter>
|
|
||||||
<encoder>
|
|
||||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} [%file:%line] %msg%n</pattern>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<logger name="org.springframework.web.socket.handler.ExceptionWebSocketHandlerDecorator" additivity="false"
|
|
||||||
level="info">
|
|
||||||
<appender-ref ref="STDOUT"/>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<logger name="ca.uhn.fhir.jpa.dao.FhirResourceDaoSubscriptionDstu2" additivity="false" level="info">
|
|
||||||
<appender-ref ref="STDOUT"/>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<logger name="org.eclipse.jetty.websocket" additivity="false" level="info">
|
|
||||||
<appender-ref ref="STDOUT"/>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<logger name="org.eclipse" additivity="false" level="error">
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<logger name="ca.uhn.fhir.rest.client" additivity="false" level="info">
|
|
||||||
<appender-ref ref="STDOUT"/>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<logger name="ca.uhn.fhir.jpa.dao" additivity="false" level="info">
|
|
||||||
<appender-ref ref="STDOUT"/>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<!-- Set to 'trace' to enable SQL logging -->
|
|
||||||
<logger name="org.hibernate.SQL" additivity="false" level="info">
|
|
||||||
<appender-ref ref="STDOUT"/>
|
|
||||||
</logger>
|
|
||||||
<!-- Set to 'trace' to enable SQL Value logging -->
|
|
||||||
<logger name="org.hibernate.type" additivity="false" level="info">
|
|
||||||
<appender-ref ref="STDOUT"/>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<logger name="org.hibernate.search.elasticsearch.request" additivity="false" level="trace">
|
|
||||||
<appender-ref ref="STDOUT"/>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<logger name="org.hibernate" additivity="false" level="info">
|
|
||||||
<appender-ref ref="STDOUT"/>
|
|
||||||
</logger>
|
|
||||||
<appender name="BATCH_TROUBLESHOOTING" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
|
||||||
<level>INFO</level>
|
|
||||||
</filter>
|
|
||||||
<file>${smile.basedir}/log/batch-troubleshooting.log</file>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
|
|
||||||
<fileNamePattern>${smile.basedir}/log/batch-troubleshooting.log.%i.gz</fileNamePattern>
|
|
||||||
<minIndex>1</minIndex>
|
|
||||||
<maxIndex>9</maxIndex>
|
|
||||||
</rollingPolicy>
|
|
||||||
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
|
|
||||||
<maxFileSize>5MB</maxFileSize>
|
|
||||||
</triggeringPolicy>
|
|
||||||
<encoder>
|
|
||||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n${log.stackfilter.pattern}
|
|
||||||
</pattern>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
<logger name="ca.uhn.fhir.log.batch_troubleshooting" level="TRACE">
|
|
||||||
<appender-ref ref="BATCH_TROUBLESHOOTING"/>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
|
|
||||||
<root level="info">
|
|
||||||
<appender-ref ref="STDOUT"/>
|
|
||||||
</root>
|
|
||||||
|
|
||||||
</configuration>
|
|
|
@ -3,14 +3,14 @@
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-fhir-bom</artifactId>
|
<artifactId>hapi-fhir-bom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>HAPI FHIR BOM</name>
|
<name>HAPI FHIR BOM</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-fhir</artifactId>
|
<artifactId>hapi-fhir</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-fhir-cli</artifactId>
|
<artifactId>hapi-fhir-cli</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../../hapi-deployable-pom</relativePath>
|
<relativePath>../../hapi-deployable-pom</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-fhir</artifactId>
|
<artifactId>hapi-fhir</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-fhir</artifactId>
|
<artifactId>hapi-fhir</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
type: change
|
||||||
|
title: "All Spring Batch dependencies and services have been removed. Async processing has fully migrated to Batch 2."
|
|
@ -11,7 +11,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -1,68 +0,0 @@
|
||||||
package ca.uhn.fhir.jpa.batch;
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* #%L
|
|
||||||
* HAPI FHIR JPA Server
|
|
||||||
* %%
|
|
||||||
* Copyright (C) 2014 - 2022 Smile CDR, Inc.
|
|
||||||
* %%
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
* #L%
|
|
||||||
*/
|
|
||||||
|
|
||||||
import ca.uhn.fhir.jpa.batch.api.IBatchJobSubmitter;
|
|
||||||
import ca.uhn.fhir.jpa.batch.svc.BatchJobSubmitterImpl;
|
|
||||||
import ca.uhn.fhir.jpa.config.BatchJobRegisterer;
|
|
||||||
import org.springframework.batch.core.configuration.JobRegistry;
|
|
||||||
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
|
|
||||||
import org.springframework.batch.core.explore.JobExplorer;
|
|
||||||
import org.springframework.batch.core.launch.JobLauncher;
|
|
||||||
import org.springframework.batch.core.launch.support.SimpleJobOperator;
|
|
||||||
import org.springframework.batch.core.repository.JobRepository;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.context.annotation.Import;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@EnableBatchProcessing
|
|
||||||
@Import({
|
|
||||||
CommonBatchJobConfig.class
|
|
||||||
// When you define a new batch job, add it here.
|
|
||||||
})
|
|
||||||
@Deprecated
|
|
||||||
/**
|
|
||||||
* @deprecated Use Batch2JobsConfig
|
|
||||||
*/
|
|
||||||
public class BatchJobsConfig {
|
|
||||||
@Bean
|
|
||||||
public IBatchJobSubmitter batchJobSubmitter() {
|
|
||||||
return new BatchJobSubmitterImpl();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public BatchJobRegisterer batchJobRegisterer() {
|
|
||||||
return new BatchJobRegisterer();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public SimpleJobOperator jobOperator(JobExplorer theJobExplorer, JobRepository theJobRepository, JobRegistry theJobRegistry, JobLauncher theJobLauncher) {
|
|
||||||
SimpleJobOperator jobOperator = new SimpleJobOperator();
|
|
||||||
|
|
||||||
jobOperator.setJobExplorer(theJobExplorer);
|
|
||||||
jobOperator.setJobRepository(theJobRepository);
|
|
||||||
jobOperator.setJobRegistry(theJobRegistry);
|
|
||||||
jobOperator.setJobLauncher(theJobLauncher);
|
|
||||||
|
|
||||||
return jobOperator;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,39 +0,0 @@
|
||||||
package ca.uhn.fhir.jpa.batch;
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* #%L
|
|
||||||
* HAPI FHIR JPA Server
|
|
||||||
* %%
|
|
||||||
* Copyright (C) 2014 - 2022 Smile CDR, Inc.
|
|
||||||
* %%
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
* #L%
|
|
||||||
*/
|
|
||||||
|
|
||||||
import ca.uhn.fhir.jpa.batch.processor.GoldenResourceAnnotatingProcessor;
|
|
||||||
import org.springframework.batch.core.configuration.annotation.StepScope;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@Deprecated
|
|
||||||
public class CommonBatchJobConfig {
|
|
||||||
public static final int MINUTES_IN_FUTURE_TO_PROCESS_FROM = 1;
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
@StepScope
|
|
||||||
public GoldenResourceAnnotatingProcessor goldenResourceAnnotatingProcessor() {
|
|
||||||
return new GoldenResourceAnnotatingProcessor();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,168 +0,0 @@
|
||||||
package ca.uhn.fhir.jpa.batch.processor;
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* #%L
|
|
||||||
* HAPI FHIR JPA Server
|
|
||||||
* %%
|
|
||||||
* Copyright (C) 2014 - 2022 Smile CDR, Inc.
|
|
||||||
* %%
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
* #L%
|
|
||||||
*/
|
|
||||||
|
|
||||||
import ca.uhn.fhir.context.FhirContext;
|
|
||||||
import ca.uhn.fhir.context.RuntimeSearchParam;
|
|
||||||
import ca.uhn.fhir.fhirpath.IFhirPath;
|
|
||||||
import ca.uhn.fhir.i18n.Msg;
|
|
||||||
import ca.uhn.fhir.jpa.batch.config.BatchConstants;
|
|
||||||
import ca.uhn.fhir.jpa.batch.log.Logs;
|
|
||||||
import ca.uhn.fhir.jpa.dao.mdm.MdmExpansionCacheSvc;
|
|
||||||
import ca.uhn.fhir.util.ExtensionUtil;
|
|
||||||
import ca.uhn.fhir.util.HapiExtensions;
|
|
||||||
import ca.uhn.fhir.util.SearchParameterUtil;
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.hl7.fhir.instance.model.api.IBaseExtension;
|
|
||||||
import org.hl7.fhir.instance.model.api.IBaseReference;
|
|
||||||
import org.hl7.fhir.instance.model.api.IBaseResource;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.springframework.batch.item.ItemProcessor;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.PATIENT_BULK_EXPORT_FORWARD_REFERENCE_RESOURCE_TYPES;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reusable Item Processor which attaches an extension to any outgoing resource. This extension will contain a resource
|
|
||||||
* reference to the golden resource patient of the given resources' patient. (e.g. Observation.subject, Immunization.patient, etc)
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class GoldenResourceAnnotatingProcessor implements ItemProcessor<List<IBaseResource>, List<IBaseResource>> {
|
|
||||||
private static final Logger ourLog = Logs.getBatchTroubleshootingLog();
|
|
||||||
|
|
||||||
|
|
||||||
@Value("#{stepExecutionContext['resourceType']}")
|
|
||||||
private String myResourceType;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private FhirContext myContext;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private MdmExpansionCacheSvc myMdmExpansionCacheSvc;
|
|
||||||
|
|
||||||
@Value("#{jobParameters['" + BatchConstants.EXPAND_MDM_PARAMETER + "'] ?: false}")
|
|
||||||
private boolean myMdmEnabled;
|
|
||||||
|
|
||||||
|
|
||||||
private RuntimeSearchParam myRuntimeSearchParam;
|
|
||||||
|
|
||||||
private String myPatientFhirPath;
|
|
||||||
|
|
||||||
private IFhirPath myFhirPath;
|
|
||||||
|
|
||||||
private void populateRuntimeSearchParam() {
|
|
||||||
Optional<RuntimeSearchParam> oPatientSearchParam= SearchParameterUtil.getOnlyPatientSearchParamForResourceType(myContext, myResourceType);
|
|
||||||
if (!oPatientSearchParam.isPresent()) {
|
|
||||||
String errorMessage = String.format("[%s] has no search parameters that are for patients, so it is invalid for Group Bulk Export!", myResourceType);
|
|
||||||
throw new IllegalArgumentException(Msg.code(1279) + errorMessage);
|
|
||||||
} else {
|
|
||||||
myRuntimeSearchParam = oPatientSearchParam.get();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<IBaseResource> process(@Nonnull List<IBaseResource> theIBaseResources) throws Exception {
|
|
||||||
if (shouldAnnotateResource()) {
|
|
||||||
lazyLoadSearchParamsAndFhirPath();
|
|
||||||
theIBaseResources.forEach(this::annotateBackwardsReferences);
|
|
||||||
}
|
|
||||||
return theIBaseResources;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lazyLoadSearchParamsAndFhirPath() {
|
|
||||||
if (myRuntimeSearchParam == null) {
|
|
||||||
populateRuntimeSearchParam();
|
|
||||||
}
|
|
||||||
if (myPatientFhirPath == null) {
|
|
||||||
populatePatientFhirPath();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If the resource is added via a forward-reference from a patient, e.g. Patient.managingOrganization, we have no way to fetch the patient at this point in time.
|
|
||||||
* This is a shortcoming of including the forward reference types in a Group/Patient bulk export.
|
|
||||||
*
|
|
||||||
* @return true if the resource should be annotated with the golden resource patient reference
|
|
||||||
*/
|
|
||||||
private boolean shouldAnnotateResource() {
|
|
||||||
return myMdmEnabled && !PATIENT_BULK_EXPORT_FORWARD_REFERENCE_RESOURCE_TYPES.contains(myResourceType);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void annotateBackwardsReferences(IBaseResource iBaseResource) {
|
|
||||||
Optional<String> patientReference = getPatientReference(iBaseResource);
|
|
||||||
if (patientReference.isPresent()) {
|
|
||||||
addGoldenResourceExtension(iBaseResource, patientReference.get());
|
|
||||||
} else {
|
|
||||||
ourLog.error("Failed to find the patient reference information for resource {}. This is a bug, " +
|
|
||||||
"as all resources which can be exported via Group Bulk Export must reference a patient.", iBaseResource);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Optional<String> getPatientReference(IBaseResource iBaseResource) {
|
|
||||||
if (myResourceType.equalsIgnoreCase("Patient")) {
|
|
||||||
return Optional.of(iBaseResource.getIdElement().getIdPart());
|
|
||||||
} else {
|
|
||||||
Optional<IBaseReference> optionalReference = getFhirParser().evaluateFirst(iBaseResource, myPatientFhirPath, IBaseReference.class);
|
|
||||||
if (optionalReference.isPresent()) {
|
|
||||||
return optionalReference.map(theIBaseReference -> theIBaseReference.getReferenceElement().getIdPart());
|
|
||||||
} else {
|
|
||||||
return Optional.empty();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addGoldenResourceExtension(IBaseResource iBaseResource, String sourceResourceId) {
|
|
||||||
String goldenResourceId = myMdmExpansionCacheSvc.getGoldenResourceId(sourceResourceId);
|
|
||||||
IBaseExtension<?, ?> extension = ExtensionUtil.getOrCreateExtension(iBaseResource, HapiExtensions.ASSOCIATED_GOLDEN_RESOURCE_EXTENSION_URL);
|
|
||||||
if (!StringUtils.isBlank(goldenResourceId)) {
|
|
||||||
ExtensionUtil.setExtension(myContext, extension, "reference", prefixPatient(goldenResourceId));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private String prefixPatient(String theResourceId) {
|
|
||||||
return "Patient/" + theResourceId;
|
|
||||||
}
|
|
||||||
|
|
||||||
private IFhirPath getFhirParser() {
|
|
||||||
if (myFhirPath == null) {
|
|
||||||
myFhirPath = myContext.newFhirPath();
|
|
||||||
}
|
|
||||||
return myFhirPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String populatePatientFhirPath() {
|
|
||||||
if (myPatientFhirPath == null) {
|
|
||||||
myPatientFhirPath = myRuntimeSearchParam.getPath();
|
|
||||||
// GGG: Yes this is a stupid hack, but by default this runtime search param will return stuff like
|
|
||||||
// Observation.subject.where(resolve() is Patient) which unfortunately our FHIRpath evaluator doesn't play nicely with
|
|
||||||
// our FHIRPath evaluator.
|
|
||||||
if (myPatientFhirPath.contains(".where")) {
|
|
||||||
myPatientFhirPath = myPatientFhirPath.substring(0, myPatientFhirPath.indexOf(".where"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return myPatientFhirPath;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,73 +0,0 @@
|
||||||
package ca.uhn.fhir.jpa.bulk.export.job;
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* #%L
|
|
||||||
* HAPI FHIR JPA Server
|
|
||||||
* %%
|
|
||||||
* Copyright (C) 2014 - 2022 Smile CDR, Inc.
|
|
||||||
* %%
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
* #L%
|
|
||||||
*/
|
|
||||||
|
|
||||||
import ca.uhn.fhir.rest.api.server.bulk.BulkDataExportOptions;
|
|
||||||
import ca.uhn.fhir.rest.api.Constants;
|
|
||||||
import org.springframework.batch.core.JobParametersBuilder;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This builder is a helper so you don't have to go lookup what job parameters are required for a bulk export job.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class BulkExportJobParametersBuilder extends JobParametersBuilder {
|
|
||||||
|
|
||||||
public BulkExportJobParametersBuilder setResourceTypes(List<String> resourceTypes) {
|
|
||||||
String resourceTypesString = resourceTypes.stream().collect(Collectors.joining(","));
|
|
||||||
this.addString("resourceTypes", resourceTypesString);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BulkExportJobParametersBuilder setSince(Date theSince) {
|
|
||||||
this.addDate("since", theSince);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BulkExportJobParametersBuilder setOutputFormat(String theOutputFormat) {
|
|
||||||
//TODO eventually we will support more types.
|
|
||||||
theOutputFormat = Constants.CT_FHIR_NDJSON;
|
|
||||||
this.addString("outputFormat", theOutputFormat);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BulkExportJobParametersBuilder setFilters(Set<String> theFilters) {
|
|
||||||
this.addString("filters", theFilters.stream().collect(Collectors.joining(",")));
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BulkExportJobParametersBuilder setJobUUID(String theJobUUID) {
|
|
||||||
this.addString("jobUUID", theJobUUID);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
public BulkExportJobParametersBuilder setReadChunkSize(Long theReadChunkSize) {
|
|
||||||
this.addLong("readChunkSize", theReadChunkSize);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
public BulkExportJobParametersBuilder setExportStyle(BulkDataExportOptions.ExportStyle theExportStyle) {
|
|
||||||
this.addString("exportStyle", theExportStyle.name());
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
package ca.uhn.fhir.jpa.bulk.export.job;
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* #%L
|
|
||||||
* HAPI FHIR JPA Server
|
|
||||||
* %%
|
|
||||||
* Copyright (C) 2014 - 2022 Smile CDR, Inc.
|
|
||||||
* %%
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
* #L%
|
|
||||||
*/
|
|
||||||
|
|
||||||
import ca.uhn.fhir.jpa.batch.config.BatchConstants;
|
|
||||||
|
|
||||||
public class GroupBulkExportJobParametersBuilder extends BulkExportJobParametersBuilder {
|
|
||||||
public GroupBulkExportJobParametersBuilder setGroupId(String theGroupId) {
|
|
||||||
this.addString(BatchConstants.GROUP_ID_PARAMETER, theGroupId);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public GroupBulkExportJobParametersBuilder setMdm(boolean theMdm) {
|
|
||||||
this.addString(BatchConstants.EXPAND_MDM_PARAMETER, String.valueOf(theMdm));
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -25,7 +25,6 @@ import ca.uhn.fhir.jpa.api.config.DaoConfig;
|
||||||
import ca.uhn.fhir.jpa.api.dao.DaoRegistry;
|
import ca.uhn.fhir.jpa.api.dao.DaoRegistry;
|
||||||
import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao;
|
import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao;
|
||||||
import ca.uhn.fhir.jpa.api.model.ExpungeOptions;
|
import ca.uhn.fhir.jpa.api.model.ExpungeOptions;
|
||||||
import ca.uhn.fhir.jpa.batch.api.IBatchJobSubmitter;
|
|
||||||
import ca.uhn.fhir.jpa.bulk.export.api.IBulkDataExportJobSchedulingHelper;
|
import ca.uhn.fhir.jpa.bulk.export.api.IBulkDataExportJobSchedulingHelper;
|
||||||
import ca.uhn.fhir.jpa.dao.data.IBulkExportCollectionDao;
|
import ca.uhn.fhir.jpa.dao.data.IBulkExportCollectionDao;
|
||||||
import ca.uhn.fhir.jpa.dao.data.IBulkExportCollectionFileDao;
|
import ca.uhn.fhir.jpa.dao.data.IBulkExportCollectionFileDao;
|
||||||
|
@ -62,9 +61,6 @@ public class BulkDataExportJobSchedulingHelperImpl implements IBulkDataExportJob
|
||||||
@Autowired
|
@Autowired
|
||||||
private DaoRegistry myDaoRegistry;
|
private DaoRegistry myDaoRegistry;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private IBatchJobSubmitter myJobSubmitter;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IBulkExportCollectionDao myBulkExportCollectionDao;
|
private IBulkExportCollectionDao myBulkExportCollectionDao;
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,6 @@ import ca.uhn.fhir.batch2.api.IJobCoordinator;
|
||||||
import ca.uhn.fhir.batch2.importpull.models.Batch2BulkImportPullJobParameters;
|
import ca.uhn.fhir.batch2.importpull.models.Batch2BulkImportPullJobParameters;
|
||||||
import ca.uhn.fhir.batch2.model.JobInstanceStartRequest;
|
import ca.uhn.fhir.batch2.model.JobInstanceStartRequest;
|
||||||
import ca.uhn.fhir.jpa.api.config.DaoConfig;
|
import ca.uhn.fhir.jpa.api.config.DaoConfig;
|
||||||
import ca.uhn.fhir.jpa.batch.config.BatchConstants;
|
|
||||||
import ca.uhn.fhir.jpa.batch.log.Logs;
|
import ca.uhn.fhir.jpa.batch.log.Logs;
|
||||||
import ca.uhn.fhir.jpa.bulk.imprt.api.IBulkDataImportSvc;
|
import ca.uhn.fhir.jpa.bulk.imprt.api.IBulkDataImportSvc;
|
||||||
import ca.uhn.fhir.jpa.bulk.imprt.model.ActivateJobResult;
|
import ca.uhn.fhir.jpa.bulk.imprt.model.ActivateJobResult;
|
||||||
|
@ -61,6 +60,8 @@ import java.util.Optional;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.Semaphore;
|
import java.util.concurrent.Semaphore;
|
||||||
|
|
||||||
|
import static ca.uhn.fhir.batch2.jobs.importpull.BulkImportPullConfig.BULK_IMPORT_JOB_NAME;
|
||||||
|
|
||||||
public class BulkDataImportSvcImpl implements IBulkDataImportSvc {
|
public class BulkDataImportSvcImpl implements IBulkDataImportSvc {
|
||||||
private static final Logger ourLog = LoggerFactory.getLogger(BulkDataImportSvcImpl.class);
|
private static final Logger ourLog = LoggerFactory.getLogger(BulkDataImportSvcImpl.class);
|
||||||
private final Semaphore myRunningJobSemaphore = new Semaphore(1);
|
private final Semaphore myRunningJobSemaphore = new Semaphore(1);
|
||||||
|
@ -285,7 +286,7 @@ public class BulkDataImportSvcImpl implements IBulkDataImportSvc {
|
||||||
jobParameters.setBatchSize(batchSize);
|
jobParameters.setBatchSize(batchSize);
|
||||||
|
|
||||||
JobInstanceStartRequest request = new JobInstanceStartRequest();
|
JobInstanceStartRequest request = new JobInstanceStartRequest();
|
||||||
request.setJobDefinitionId(BatchConstants.BULK_IMPORT_JOB_NAME);
|
request.setJobDefinitionId(BULK_IMPORT_JOB_NAME);
|
||||||
request.setParameters(jobParameters);
|
request.setParameters(jobParameters);
|
||||||
|
|
||||||
ourLog.info("Submitting bulk import with bijob id {} to job scheduler", biJobId);
|
ourLog.info("Submitting bulk import with bijob id {} to job scheduler", biJobId);
|
||||||
|
|
|
@ -1,61 +0,0 @@
|
||||||
package ca.uhn.fhir.jpa.config;
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* #%L
|
|
||||||
* HAPI FHIR JPA Server
|
|
||||||
* %%
|
|
||||||
* Copyright (C) 2014 - 2022 Smile CDR, Inc.
|
|
||||||
* %%
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
* #L%
|
|
||||||
*/
|
|
||||||
|
|
||||||
import org.springframework.batch.core.Job;
|
|
||||||
import org.springframework.batch.core.configuration.DuplicateJobException;
|
|
||||||
import org.springframework.batch.core.configuration.JobFactory;
|
|
||||||
import org.springframework.batch.core.configuration.JobRegistry;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.context.ApplicationContext;
|
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class BatchJobRegisterer {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ApplicationContext myApplicationContext;
|
|
||||||
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
public void start() throws DuplicateJobException {
|
|
||||||
|
|
||||||
Map<String, Job> batchJobs = myApplicationContext.getBeansOfType(Job.class);
|
|
||||||
JobRegistry jobRegistry = myApplicationContext.getBean(JobRegistry.class);
|
|
||||||
|
|
||||||
for (Map.Entry<String, Job> next : batchJobs.entrySet()) {
|
|
||||||
jobRegistry.register(new JobFactory() {
|
|
||||||
@Override
|
|
||||||
public Job createJob() {
|
|
||||||
return next.getValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getJobName() {
|
|
||||||
return next.getKey();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -22,7 +22,6 @@ package ca.uhn.fhir.jpa.config;
|
||||||
|
|
||||||
import ca.uhn.fhir.jpa.api.IDaoRegistry;
|
import ca.uhn.fhir.jpa.api.IDaoRegistry;
|
||||||
import ca.uhn.fhir.jpa.api.dao.IFhirSystemDao;
|
import ca.uhn.fhir.jpa.api.dao.IFhirSystemDao;
|
||||||
import ca.uhn.fhir.jpa.batch.config.NonPersistedBatchConfigurer;
|
|
||||||
import ca.uhn.fhir.jpa.config.util.ResourceCountCacheUtil;
|
import ca.uhn.fhir.jpa.config.util.ResourceCountCacheUtil;
|
||||||
import ca.uhn.fhir.jpa.config.util.ValidationSupportConfigUtil;
|
import ca.uhn.fhir.jpa.config.util.ValidationSupportConfigUtil;
|
||||||
import ca.uhn.fhir.jpa.dao.FulltextSearchSvcImpl;
|
import ca.uhn.fhir.jpa.dao.FulltextSearchSvcImpl;
|
||||||
|
@ -40,7 +39,6 @@ import ca.uhn.fhir.mdm.dao.IMdmLinkDao;
|
||||||
import ca.uhn.fhir.rest.api.IResourceSupportedSvc;
|
import ca.uhn.fhir.rest.api.IResourceSupportedSvc;
|
||||||
import ca.uhn.fhir.rest.server.util.ISearchParamRegistry;
|
import ca.uhn.fhir.rest.server.util.ISearchParamRegistry;
|
||||||
import org.hl7.fhir.common.hapi.validation.support.CachingValidationSupport;
|
import org.hl7.fhir.common.hapi.validation.support.CachingValidationSupport;
|
||||||
import org.springframework.batch.core.configuration.annotation.BatchConfigurer;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
@ -75,11 +73,6 @@ public class HapiJpaConfig {
|
||||||
return ValidationSupportConfigUtil.newCachingValidationSupport(theJpaValidationSupportChain);
|
return ValidationSupportConfigUtil.newCachingValidationSupport(theJpaValidationSupportChain);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
|
||||||
public BatchConfigurer batchConfigurer() {
|
|
||||||
return new NonPersistedBatchConfigurer();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public DatabaseBackedPagingProvider databaseBackedPagingProvider() {
|
public DatabaseBackedPagingProvider databaseBackedPagingProvider() {
|
||||||
return new DatabaseBackedPagingProvider();
|
return new DatabaseBackedPagingProvider();
|
||||||
|
|
|
@ -10,8 +10,6 @@ import ca.uhn.fhir.jpa.api.config.DaoConfig;
|
||||||
import ca.uhn.fhir.jpa.api.dao.DaoRegistry;
|
import ca.uhn.fhir.jpa.api.dao.DaoRegistry;
|
||||||
import ca.uhn.fhir.jpa.api.model.ExpungeOptions;
|
import ca.uhn.fhir.jpa.api.model.ExpungeOptions;
|
||||||
import ca.uhn.fhir.jpa.api.svc.IIdHelperService;
|
import ca.uhn.fhir.jpa.api.svc.IIdHelperService;
|
||||||
import ca.uhn.fhir.jpa.batch.BatchJobsConfig;
|
|
||||||
import ca.uhn.fhir.jpa.batch.config.BatchConstants;
|
|
||||||
import ca.uhn.fhir.jpa.binary.interceptor.BinaryStorageInterceptor;
|
import ca.uhn.fhir.jpa.binary.interceptor.BinaryStorageInterceptor;
|
||||||
import ca.uhn.fhir.jpa.binary.provider.BinaryAccessProvider;
|
import ca.uhn.fhir.jpa.binary.provider.BinaryAccessProvider;
|
||||||
import ca.uhn.fhir.jpa.bulk.export.api.IBulkDataExportJobSchedulingHelper;
|
import ca.uhn.fhir.jpa.bulk.export.api.IBulkDataExportJobSchedulingHelper;
|
||||||
|
@ -74,7 +72,6 @@ import ca.uhn.fhir.jpa.search.PersistedJpaSearchFirstPageBundleProvider;
|
||||||
import ca.uhn.fhir.jpa.search.SearchStrategyFactory;
|
import ca.uhn.fhir.jpa.search.SearchStrategyFactory;
|
||||||
import ca.uhn.fhir.jpa.search.SynchronousSearchSvcImpl;
|
import ca.uhn.fhir.jpa.search.SynchronousSearchSvcImpl;
|
||||||
import ca.uhn.fhir.jpa.search.builder.QueryStack;
|
import ca.uhn.fhir.jpa.search.builder.QueryStack;
|
||||||
import ca.uhn.fhir.jpa.search.builder.tasks.SearchTask;
|
|
||||||
import ca.uhn.fhir.jpa.search.builder.predicate.ComboNonUniqueSearchParameterPredicateBuilder;
|
import ca.uhn.fhir.jpa.search.builder.predicate.ComboNonUniqueSearchParameterPredicateBuilder;
|
||||||
import ca.uhn.fhir.jpa.search.builder.predicate.ComboUniqueSearchParameterPredicateBuilder;
|
import ca.uhn.fhir.jpa.search.builder.predicate.ComboUniqueSearchParameterPredicateBuilder;
|
||||||
import ca.uhn.fhir.jpa.search.builder.predicate.CoordsPredicateBuilder;
|
import ca.uhn.fhir.jpa.search.builder.predicate.CoordsPredicateBuilder;
|
||||||
|
@ -96,6 +93,7 @@ import ca.uhn.fhir.jpa.search.builder.sql.GeneratedSql;
|
||||||
import ca.uhn.fhir.jpa.search.builder.sql.SearchQueryBuilder;
|
import ca.uhn.fhir.jpa.search.builder.sql.SearchQueryBuilder;
|
||||||
import ca.uhn.fhir.jpa.search.builder.sql.SearchQueryExecutor;
|
import ca.uhn.fhir.jpa.search.builder.sql.SearchQueryExecutor;
|
||||||
import ca.uhn.fhir.jpa.search.builder.sql.SqlObjectFactory;
|
import ca.uhn.fhir.jpa.search.builder.sql.SqlObjectFactory;
|
||||||
|
import ca.uhn.fhir.jpa.search.builder.tasks.SearchTask;
|
||||||
import ca.uhn.fhir.jpa.search.cache.DatabaseSearchCacheSvcImpl;
|
import ca.uhn.fhir.jpa.search.cache.DatabaseSearchCacheSvcImpl;
|
||||||
import ca.uhn.fhir.jpa.search.cache.DatabaseSearchResultCacheSvcImpl;
|
import ca.uhn.fhir.jpa.search.cache.DatabaseSearchResultCacheSvcImpl;
|
||||||
import ca.uhn.fhir.jpa.search.cache.ISearchCacheSvc;
|
import ca.uhn.fhir.jpa.search.cache.ISearchCacheSvc;
|
||||||
|
@ -126,7 +124,6 @@ import ca.uhn.fhir.rest.server.interceptor.ResponseTerminologyTranslationInterce
|
||||||
import ca.uhn.fhir.rest.server.interceptor.ResponseTerminologyTranslationSvc;
|
import ca.uhn.fhir.rest.server.interceptor.ResponseTerminologyTranslationSvc;
|
||||||
import ca.uhn.fhir.rest.server.interceptor.consent.IConsentContextServices;
|
import ca.uhn.fhir.rest.server.interceptor.consent.IConsentContextServices;
|
||||||
import ca.uhn.fhir.rest.server.interceptor.partition.RequestTenantPartitionInterceptor;
|
import ca.uhn.fhir.rest.server.interceptor.partition.RequestTenantPartitionInterceptor;
|
||||||
import ca.uhn.fhir.util.ThreadPoolUtil;
|
|
||||||
import org.hl7.fhir.common.hapi.validation.support.UnknownCodeSystemWarningValidationSupport;
|
import org.hl7.fhir.common.hapi.validation.support.UnknownCodeSystemWarningValidationSupport;
|
||||||
import org.hl7.fhir.utilities.graphql.IGraphQLStorageServices;
|
import org.hl7.fhir.utilities.graphql.IGraphQLStorageServices;
|
||||||
import org.hl7.fhir.utilities.npm.PackageClient;
|
import org.hl7.fhir.utilities.npm.PackageClient;
|
||||||
|
@ -138,7 +135,6 @@ import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.context.annotation.Primary;
|
import org.springframework.context.annotation.Primary;
|
||||||
import org.springframework.context.annotation.Scope;
|
import org.springframework.context.annotation.Scope;
|
||||||
import org.springframework.core.task.AsyncTaskExecutor;
|
import org.springframework.core.task.AsyncTaskExecutor;
|
||||||
import org.springframework.core.task.TaskExecutor;
|
|
||||||
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
||||||
import org.springframework.scheduling.TaskScheduler;
|
import org.springframework.scheduling.TaskScheduler;
|
||||||
import org.springframework.scheduling.concurrent.ConcurrentTaskScheduler;
|
import org.springframework.scheduling.concurrent.ConcurrentTaskScheduler;
|
||||||
|
@ -172,7 +168,6 @@ import java.util.Date;
|
||||||
@EnableJpaRepositories(basePackages = "ca.uhn.fhir.jpa.dao.data")
|
@EnableJpaRepositories(basePackages = "ca.uhn.fhir.jpa.dao.data")
|
||||||
@Import({
|
@Import({
|
||||||
BeanPostProcessorConfig.class,
|
BeanPostProcessorConfig.class,
|
||||||
BatchJobsConfig.class,
|
|
||||||
TermCodeSystemConfig.class,
|
TermCodeSystemConfig.class,
|
||||||
SearchParamConfig.class,
|
SearchParamConfig.class,
|
||||||
ValidationSupportConfig.class,
|
ValidationSupportConfig.class,
|
||||||
|
@ -325,11 +320,6 @@ public class JpaConfig {
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean(name = BatchConstants.JOB_LAUNCHING_TASK_EXECUTOR)
|
|
||||||
public TaskExecutor jobLaunchingTaskExecutor() {
|
|
||||||
return ThreadPoolUtil.newThreadPool(0, 10, "job-launcher-");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public IResourceReindexingSvc resourceReindexingSvc() {
|
public IResourceReindexingSvc resourceReindexingSvc() {
|
||||||
return new ResourceReindexingSvcImpl();
|
return new ResourceReindexingSvcImpl();
|
||||||
|
|
|
@ -70,8 +70,8 @@ import java.util.concurrent.ConcurrentLinkedQueue;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.TERM_CODE_SYSTEM_DELETE_JOB_NAME;
|
import static ca.uhn.fhir.batch2.jobs.termcodesystem.TermCodeSystemJobConfig.TERM_CODE_SYSTEM_DELETE_JOB_NAME;
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
import static ca.uhn.fhir.batch2.jobs.termcodesystem.TermCodeSystemJobConfig.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
||||||
|
|
||||||
public class TermDeferredStorageSvcImpl implements ITermDeferredStorageSvc {
|
public class TermDeferredStorageSvcImpl implements ITermDeferredStorageSvc {
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,11 @@
|
||||||
package ca.uhn.fhir.jpa.mdm.config;
|
package ca.uhn.fhir.jpa.mdm.config;
|
||||||
|
|
||||||
import ca.uhn.fhir.jpa.entity.MdmLink;
|
|
||||||
import ca.uhn.fhir.jpa.mdm.dao.JpaMdmLinkImplFactory;
|
|
||||||
import ca.uhn.fhir.jpa.mdm.helper.MdmLinkHelper;
|
import ca.uhn.fhir.jpa.mdm.helper.MdmLinkHelper;
|
||||||
import ca.uhn.fhir.mdm.api.IMdmSettings;
|
import ca.uhn.fhir.mdm.api.IMdmSettings;
|
||||||
import ca.uhn.fhir.mdm.rules.config.MdmRuleValidator;
|
import ca.uhn.fhir.mdm.rules.config.MdmRuleValidator;
|
||||||
import ca.uhn.fhir.mdm.rules.config.MdmSettings;
|
import ca.uhn.fhir.mdm.rules.config.MdmSettings;
|
||||||
import ca.uhn.fhir.test.utilities.BatchJobHelper;
|
|
||||||
import com.google.common.base.Charsets;
|
import com.google.common.base.Charsets;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.springframework.batch.core.explore.JobExplorer;
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
@ -43,9 +39,4 @@ public abstract class BaseTestMdmConfig {
|
||||||
MdmLinkHelper mdmLinkHelper() {
|
MdmLinkHelper mdmLinkHelper() {
|
||||||
return new MdmLinkHelper();
|
return new MdmLinkHelper();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
|
||||||
BatchJobHelper batchJobHelper(JobExplorer theJobExplorer) {
|
|
||||||
return new BatchJobHelper(theJobExplorer);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,6 @@ import ca.uhn.fhir.mdm.provider.MdmControllerHelper;
|
||||||
import ca.uhn.fhir.mdm.provider.MdmProviderDstu3Plus;
|
import ca.uhn.fhir.mdm.provider.MdmProviderDstu3Plus;
|
||||||
import ca.uhn.fhir.mdm.rules.config.MdmSettings;
|
import ca.uhn.fhir.mdm.rules.config.MdmSettings;
|
||||||
import ca.uhn.fhir.mdm.util.MessageHelper;
|
import ca.uhn.fhir.mdm.util.MessageHelper;
|
||||||
import ca.uhn.fhir.test.utilities.BatchJobHelper;
|
|
||||||
import com.google.common.base.Charsets;
|
import com.google.common.base.Charsets;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.hl7.fhir.instance.model.api.IPrimitiveType;
|
import org.hl7.fhir.instance.model.api.IPrimitiveType;
|
||||||
|
@ -39,8 +38,6 @@ public abstract class BaseProviderR4Test extends BaseMdmR4Test {
|
||||||
@Autowired
|
@Autowired
|
||||||
private MdmControllerHelper myMdmHelper;
|
private MdmControllerHelper myMdmHelper;
|
||||||
@Autowired
|
@Autowired
|
||||||
BatchJobHelper myBatchJobHelper;
|
|
||||||
@Autowired
|
|
||||||
Batch2JobHelper myBatch2JobHelper;
|
Batch2JobHelper myBatch2JobHelper;
|
||||||
@Autowired
|
@Autowired
|
||||||
MessageHelper myMessageHelper;
|
MessageHelper myMessageHelper;
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -13,8 +13,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.TERM_CODE_SYSTEM_DELETE_JOB_NAME;
|
import static ca.uhn.fhir.batch2.jobs.termcodesystem.TermCodeSystemJobConfig.TERM_CODE_SYSTEM_DELETE_JOB_NAME;
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
import static ca.uhn.fhir.batch2.jobs.termcodesystem.TermCodeSystemJobConfig.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
|
|
|
@ -27,7 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.TERM_CODE_SYSTEM_DELETE_JOB_NAME;
|
import static ca.uhn.fhir.batch2.jobs.termcodesystem.TermCodeSystemJobConfig.TERM_CODE_SYSTEM_DELETE_JOB_NAME;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.fail;
|
import static org.junit.jupiter.api.Assertions.fail;
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ import java.util.Optional;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static ca.uhn.fhir.batch2.config.BaseBatch2Config.CHANNEL_NAME;
|
import static ca.uhn.fhir.batch2.config.BaseBatch2Config.CHANNEL_NAME;
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.BULK_IMPORT_JOB_NAME;
|
import static ca.uhn.fhir.batch2.jobs.importpull.BulkImportPullConfig.BULK_IMPORT_JOB_NAME;
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
import static org.hamcrest.Matchers.containsInAnyOrder;
|
import static org.hamcrest.Matchers.containsInAnyOrder;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
|
@ -10,7 +10,6 @@ import ca.uhn.fhir.jpa.partition.SystemRequestDetails;
|
||||||
import ca.uhn.fhir.jpa.test.BaseJpaR4Test;
|
import ca.uhn.fhir.jpa.test.BaseJpaR4Test;
|
||||||
import ca.uhn.fhir.rest.api.Constants;
|
import ca.uhn.fhir.rest.api.Constants;
|
||||||
import ca.uhn.fhir.rest.server.exceptions.BaseServerResponseException;
|
import ca.uhn.fhir.rest.server.exceptions.BaseServerResponseException;
|
||||||
import ca.uhn.fhir.test.utilities.BatchJobHelper;
|
|
||||||
import ca.uhn.fhir.util.BundleBuilder;
|
import ca.uhn.fhir.util.BundleBuilder;
|
||||||
import org.hl7.fhir.instance.model.api.IIdType;
|
import org.hl7.fhir.instance.model.api.IIdType;
|
||||||
import org.hl7.fhir.r4.model.Bundle;
|
import org.hl7.fhir.r4.model.Bundle;
|
||||||
|
@ -34,8 +33,6 @@ import static org.mockito.Mockito.when;
|
||||||
class DeleteExpungeDaoTest extends BaseJpaR4Test {
|
class DeleteExpungeDaoTest extends BaseJpaR4Test {
|
||||||
@Autowired
|
@Autowired
|
||||||
DaoConfig myDaoConfig;
|
DaoConfig myDaoConfig;
|
||||||
@Autowired
|
|
||||||
BatchJobHelper myBatchJobHelper;
|
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
public void before() {
|
public void before() {
|
||||||
|
|
|
@ -14,8 +14,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.TERM_CODE_SYSTEM_DELETE_JOB_NAME;
|
import static ca.uhn.fhir.batch2.jobs.termcodesystem.TermCodeSystemJobConfig.TERM_CODE_SYSTEM_DELETE_JOB_NAME;
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
import static ca.uhn.fhir.batch2.jobs.termcodesystem.TermCodeSystemJobConfig.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
|
|
|
@ -130,7 +130,7 @@ import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
import static ca.uhn.fhir.batch2.jobs.termcodesystem.TermCodeSystemJobConfig.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
||||||
import static org.apache.commons.lang3.StringUtils.countMatches;
|
import static org.apache.commons.lang3.StringUtils.countMatches;
|
||||||
import static org.apache.commons.lang3.StringUtils.defaultString;
|
import static org.apache.commons.lang3.StringUtils.defaultString;
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
|
|
|
@ -39,7 +39,6 @@ import ca.uhn.fhir.rest.server.interceptor.ResponseHighlighterInterceptor;
|
||||||
import ca.uhn.fhir.rest.server.interceptor.auth.AuthorizedList;
|
import ca.uhn.fhir.rest.server.interceptor.auth.AuthorizedList;
|
||||||
import ca.uhn.fhir.rest.server.interceptor.auth.SearchNarrowingInterceptor;
|
import ca.uhn.fhir.rest.server.interceptor.auth.SearchNarrowingInterceptor;
|
||||||
import ca.uhn.fhir.rest.server.provider.ProviderConstants;
|
import ca.uhn.fhir.rest.server.provider.ProviderConstants;
|
||||||
import ca.uhn.fhir.test.utilities.BatchJobHelper;
|
|
||||||
import ca.uhn.fhir.test.utilities.JettyUtil;
|
import ca.uhn.fhir.test.utilities.JettyUtil;
|
||||||
import ca.uhn.fhir.util.BundleBuilder;
|
import ca.uhn.fhir.util.BundleBuilder;
|
||||||
import ca.uhn.fhir.util.BundleUtil;
|
import ca.uhn.fhir.util.BundleUtil;
|
||||||
|
@ -119,8 +118,6 @@ public class SystemProviderR4Test extends BaseJpaR4Test {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private DeleteExpungeProvider myDeleteExpungeProvider;
|
private DeleteExpungeProvider myDeleteExpungeProvider;
|
||||||
@Autowired
|
|
||||||
private BatchJobHelper myBatchJobHelper;
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
@AfterEach
|
@AfterEach
|
||||||
|
|
|
@ -16,7 +16,6 @@ import ca.uhn.fhir.rest.param.TokenOrListParam;
|
||||||
import ca.uhn.fhir.rest.server.exceptions.ResourceVersionConflictException;
|
import ca.uhn.fhir.rest.server.exceptions.ResourceVersionConflictException;
|
||||||
import ca.uhn.fhir.rest.server.interceptor.RequestValidatingInterceptor;
|
import ca.uhn.fhir.rest.server.interceptor.RequestValidatingInterceptor;
|
||||||
import ca.uhn.fhir.rest.server.provider.ProviderConstants;
|
import ca.uhn.fhir.rest.server.provider.ProviderConstants;
|
||||||
import ca.uhn.fhir.test.utilities.BatchJobHelper;
|
|
||||||
import ca.uhn.fhir.util.StopWatch;
|
import ca.uhn.fhir.util.StopWatch;
|
||||||
import com.google.common.base.Charsets;
|
import com.google.common.base.Charsets;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
@ -90,8 +89,6 @@ public class StressTestR4Test extends BaseResourceProviderR4Test {
|
||||||
@Autowired
|
@Autowired
|
||||||
private DatabaseBackedPagingProvider myPagingProvider;
|
private DatabaseBackedPagingProvider myPagingProvider;
|
||||||
private int myPreviousMaxPageSize;
|
private int myPreviousMaxPageSize;
|
||||||
@Autowired
|
|
||||||
private BatchJobHelper myBatchJobHelper;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@AfterEach
|
@AfterEach
|
||||||
|
|
|
@ -14,7 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
import static ca.uhn.fhir.batch2.jobs.termcodesystem.TermCodeSystemJobConfig.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.fail;
|
import static org.junit.jupiter.api.Assertions.fail;
|
||||||
|
|
||||||
|
|
|
@ -5,21 +5,16 @@ import ca.uhn.fhir.jpa.entity.TermCodeSystemVersion;
|
||||||
import ca.uhn.fhir.jpa.searchparam.SearchParameterMap;
|
import ca.uhn.fhir.jpa.searchparam.SearchParameterMap;
|
||||||
import ca.uhn.fhir.jpa.test.BaseJpaR4Test;
|
import ca.uhn.fhir.jpa.test.BaseJpaR4Test;
|
||||||
import ca.uhn.fhir.rest.api.server.IBundleProvider;
|
import ca.uhn.fhir.rest.api.server.IBundleProvider;
|
||||||
import ca.uhn.fhir.test.utilities.BatchJobHelper;
|
|
||||||
import org.hl7.fhir.r4.model.CodeSystem;
|
import org.hl7.fhir.r4.model.CodeSystem;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
||||||
|
|
||||||
public class TerminologyLoaderSvcLoincJpaTest extends BaseJpaR4Test {
|
public class TerminologyLoaderSvcLoincJpaTest extends BaseJpaR4Test {
|
||||||
@Autowired
|
|
||||||
private BatchJobHelper myBatchJobHelper;
|
|
||||||
private TermLoaderSvcImpl mySvc;
|
private TermLoaderSvcImpl mySvc;
|
||||||
private ZipCollectionBuilder myFiles;
|
private ZipCollectionBuilder myFiles;
|
||||||
|
|
||||||
|
@ -64,7 +59,8 @@ public class TerminologyLoaderSvcLoincJpaTest extends BaseJpaR4Test {
|
||||||
|
|
||||||
mySvc.loadLoinc(myFiles.getFiles(), mySrd);
|
mySvc.loadLoinc(myFiles.getFiles(), mySrd);
|
||||||
myTerminologyDeferredStorageSvc.saveAllDeferred();
|
myTerminologyDeferredStorageSvc.saveAllDeferred();
|
||||||
myBatchJobHelper.awaitAllBulkJobCompletions(false, TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME);
|
// WIP KHS find equivalent of this in batch2
|
||||||
|
// myBatchJobHelper.awaitAllBulkJobCompletions(false, TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME);
|
||||||
|
|
||||||
runInTransaction(() -> {
|
runInTransaction(() -> {
|
||||||
assertEquals(1, myTermCodeSystemDao.count());
|
assertEquals(1, myTermCodeSystemDao.count());
|
||||||
|
@ -90,7 +86,8 @@ public class TerminologyLoaderSvcLoincJpaTest extends BaseJpaR4Test {
|
||||||
TermTestUtil.addLoincMandatoryFilesWithPropertiesFileToZip(myFiles, "v268_loincupload.properties");
|
TermTestUtil.addLoincMandatoryFilesWithPropertiesFileToZip(myFiles, "v268_loincupload.properties");
|
||||||
mySvc.loadLoinc(myFiles.getFiles(), mySrd);
|
mySvc.loadLoinc(myFiles.getFiles(), mySrd);
|
||||||
myTerminologyDeferredStorageSvc.saveAllDeferred();
|
myTerminologyDeferredStorageSvc.saveAllDeferred();
|
||||||
myBatchJobHelper.awaitAllBulkJobCompletions(false, TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME);
|
// WIP KHS find equivalent of this in batch2
|
||||||
|
// myBatchJobHelper.awaitAllBulkJobCompletions(false, TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME);
|
||||||
|
|
||||||
runInTransaction(() -> {
|
runInTransaction(() -> {
|
||||||
assertEquals(1, myTermCodeSystemDao.count());
|
assertEquals(1, myTermCodeSystemDao.count());
|
||||||
|
|
|
@ -51,7 +51,7 @@ import java.util.Properties;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
import static ca.uhn.fhir.batch2.jobs.termcodesystem.TermCodeSystemJobConfig.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
||||||
import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_DUPLICATE_FILE_DEFAULT;
|
import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_DUPLICATE_FILE_DEFAULT;
|
||||||
import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_FILE_DEFAULT;
|
import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_FILE_DEFAULT;
|
||||||
import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_LINK_DUPLICATE_FILE_DEFAULT;
|
import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_LINK_DUPLICATE_FILE_DEFAULT;
|
||||||
|
|
|
@ -32,7 +32,7 @@ import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
import static ca.uhn.fhir.batch2.jobs.termcodesystem.TermCodeSystemJobConfig.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
import static org.hamcrest.Matchers.containsInAnyOrder;
|
import static org.hamcrest.Matchers.containsInAnyOrder;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
|
@ -45,7 +45,7 @@ import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.TERM_CODE_SYSTEM_DELETE_JOB_NAME;
|
import static ca.uhn.fhir.batch2.jobs.termcodesystem.TermCodeSystemJobConfig.TERM_CODE_SYSTEM_DELETE_JOB_NAME;
|
||||||
import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_DUPLICATE_FILE_DEFAULT;
|
import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_DUPLICATE_FILE_DEFAULT;
|
||||||
import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_FILE_DEFAULT;
|
import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_FILE_DEFAULT;
|
||||||
import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_LINK_DUPLICATE_FILE_DEFAULT;
|
import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_LINK_DUPLICATE_FILE_DEFAULT;
|
||||||
|
|
|
@ -47,7 +47,7 @@ import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
import static ca.uhn.fhir.batch2.jobs.termcodesystem.TermCodeSystemJobConfig.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
||||||
import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_DUPLICATE_FILE_DEFAULT;
|
import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_DUPLICATE_FILE_DEFAULT;
|
||||||
import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_FILE_DEFAULT;
|
import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_FILE_DEFAULT;
|
||||||
import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_LINK_DUPLICATE_FILE_DEFAULT;
|
import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_LINK_DUPLICATE_FILE_DEFAULT;
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.TERM_CODE_SYSTEM_DELETE_JOB_NAME;
|
import static ca.uhn.fhir.batch2.jobs.termcodesystem.TermCodeSystemJobConfig.TERM_CODE_SYSTEM_DELETE_JOB_NAME;
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
import static ca.uhn.fhir.batch2.jobs.termcodesystem.TermCodeSystemJobConfig.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,6 @@ import ca.uhn.fhir.jpa.api.dao.IFhirResourceDaoSubscription;
|
||||||
import ca.uhn.fhir.jpa.api.dao.IFhirResourceDaoValueSet;
|
import ca.uhn.fhir.jpa.api.dao.IFhirResourceDaoValueSet;
|
||||||
import ca.uhn.fhir.jpa.api.dao.IFhirSystemDao;
|
import ca.uhn.fhir.jpa.api.dao.IFhirSystemDao;
|
||||||
import ca.uhn.fhir.jpa.api.svc.ISearchCoordinatorSvc;
|
import ca.uhn.fhir.jpa.api.svc.ISearchCoordinatorSvc;
|
||||||
import ca.uhn.fhir.jpa.batch.api.IBatchJobSubmitter;
|
|
||||||
import ca.uhn.fhir.jpa.bulk.export.api.IBulkDataExportJobSchedulingHelper;
|
import ca.uhn.fhir.jpa.bulk.export.api.IBulkDataExportJobSchedulingHelper;
|
||||||
import ca.uhn.fhir.jpa.dao.IFulltextSearchSvc;
|
import ca.uhn.fhir.jpa.dao.IFulltextSearchSvc;
|
||||||
import ca.uhn.fhir.jpa.dao.data.IResourceIndexedComboStringUniqueDao;
|
import ca.uhn.fhir.jpa.dao.data.IResourceIndexedComboStringUniqueDao;
|
||||||
|
@ -141,9 +140,6 @@ public abstract class BaseJpaDstu3Test extends BaseJpaTest {
|
||||||
|
|
||||||
private static IValidationSupport ourJpaValidationSupportChainDstu3;
|
private static IValidationSupport ourJpaValidationSupportChainDstu3;
|
||||||
private static IFhirResourceDaoValueSet<ValueSet, Coding, CodeableConcept> ourValueSetDao;
|
private static IFhirResourceDaoValueSet<ValueSet, Coding, CodeableConcept> ourValueSetDao;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
protected IBatchJobSubmitter myBatchJobSubmitter;
|
|
||||||
@Autowired
|
@Autowired
|
||||||
protected ITermDeferredStorageSvc myTerminologyDeferredStorageSvc;
|
protected ITermDeferredStorageSvc myTerminologyDeferredStorageSvc;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|
|
@ -35,9 +35,8 @@ import ca.uhn.fhir.jpa.api.dao.IFhirResourceDaoValueSet;
|
||||||
import ca.uhn.fhir.jpa.api.dao.IFhirSystemDao;
|
import ca.uhn.fhir.jpa.api.dao.IFhirSystemDao;
|
||||||
import ca.uhn.fhir.jpa.api.svc.IIdHelperService;
|
import ca.uhn.fhir.jpa.api.svc.IIdHelperService;
|
||||||
import ca.uhn.fhir.jpa.api.svc.ISearchCoordinatorSvc;
|
import ca.uhn.fhir.jpa.api.svc.ISearchCoordinatorSvc;
|
||||||
import ca.uhn.fhir.jpa.batch.api.IBatchJobSubmitter;
|
|
||||||
import ca.uhn.fhir.jpa.binary.provider.BinaryAccessProvider;
|
|
||||||
import ca.uhn.fhir.jpa.binary.interceptor.BinaryStorageInterceptor;
|
import ca.uhn.fhir.jpa.binary.interceptor.BinaryStorageInterceptor;
|
||||||
|
import ca.uhn.fhir.jpa.binary.provider.BinaryAccessProvider;
|
||||||
import ca.uhn.fhir.jpa.bulk.export.api.IBulkDataExportJobSchedulingHelper;
|
import ca.uhn.fhir.jpa.bulk.export.api.IBulkDataExportJobSchedulingHelper;
|
||||||
import ca.uhn.fhir.jpa.bulk.export.provider.BulkDataExportProvider;
|
import ca.uhn.fhir.jpa.bulk.export.provider.BulkDataExportProvider;
|
||||||
import ca.uhn.fhir.jpa.dao.IFulltextSearchSvc;
|
import ca.uhn.fhir.jpa.dao.IFulltextSearchSvc;
|
||||||
|
@ -517,8 +516,6 @@ public abstract class BaseJpaR4Test extends BaseJpaTest implements ITestDataBuil
|
||||||
@Autowired
|
@Autowired
|
||||||
protected IIdHelperService myIdHelperService;
|
protected IIdHelperService myIdHelperService;
|
||||||
@Autowired
|
@Autowired
|
||||||
protected IBatchJobSubmitter myBatchJobSubmitter;
|
|
||||||
@Autowired
|
|
||||||
protected ValidationSettings myValidationSettings;
|
protected ValidationSettings myValidationSettings;
|
||||||
@Autowired
|
@Autowired
|
||||||
protected IMdmLinkJpaRepository myMdmLinkDao;
|
protected IMdmLinkJpaRepository myMdmLinkDao;
|
||||||
|
|
|
@ -75,7 +75,6 @@ import ca.uhn.fhir.rest.server.exceptions.ResourceVersionConflictException;
|
||||||
import ca.uhn.fhir.rest.server.servlet.ServletRequestDetails;
|
import ca.uhn.fhir.rest.server.servlet.ServletRequestDetails;
|
||||||
import ca.uhn.fhir.rest.server.util.ISearchParamRegistry;
|
import ca.uhn.fhir.rest.server.util.ISearchParamRegistry;
|
||||||
import ca.uhn.fhir.test.BaseTest;
|
import ca.uhn.fhir.test.BaseTest;
|
||||||
import ca.uhn.fhir.test.utilities.BatchJobHelper;
|
|
||||||
import ca.uhn.fhir.test.utilities.LoggingExtension;
|
import ca.uhn.fhir.test.utilities.LoggingExtension;
|
||||||
import ca.uhn.fhir.test.utilities.ProxyUtil;
|
import ca.uhn.fhir.test.utilities.ProxyUtil;
|
||||||
import ca.uhn.fhir.test.utilities.UnregisterScheduledProcessor;
|
import ca.uhn.fhir.test.utilities.UnregisterScheduledProcessor;
|
||||||
|
@ -102,10 +101,6 @@ import org.junit.jupiter.api.extension.RegisterExtension;
|
||||||
import org.mockito.Answers;
|
import org.mockito.Answers;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.springframework.batch.core.repository.dao.JobExecutionDao;
|
|
||||||
import org.springframework.batch.core.repository.dao.JobInstanceDao;
|
|
||||||
import org.springframework.batch.core.repository.dao.MapJobExecutionDao;
|
|
||||||
import org.springframework.batch.core.repository.dao.MapJobInstanceDao;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.orm.jpa.JpaTransactionManager;
|
import org.springframework.orm.jpa.JpaTransactionManager;
|
||||||
|
@ -202,8 +197,6 @@ public abstract class BaseJpaTest extends BaseTest {
|
||||||
@Autowired(required = false)
|
@Autowired(required = false)
|
||||||
protected IFulltextSearchSvc myFulltestSearchSvc;
|
protected IFulltextSearchSvc myFulltestSearchSvc;
|
||||||
@Autowired(required = false)
|
@Autowired(required = false)
|
||||||
protected BatchJobHelper myBatchJobHelper;
|
|
||||||
@Autowired(required = false)
|
|
||||||
protected Batch2JobHelper myBatch2JobHelper;
|
protected Batch2JobHelper myBatch2JobHelper;
|
||||||
@Autowired
|
@Autowired
|
||||||
protected ITermConceptDao myTermConceptDao;
|
protected ITermConceptDao myTermConceptDao;
|
||||||
|
@ -230,24 +223,11 @@ public abstract class BaseJpaTest extends BaseTest {
|
||||||
private IResourceHistoryTableDao myResourceHistoryTableDao;
|
private IResourceHistoryTableDao myResourceHistoryTableDao;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IForcedIdDao myForcedIdDao;
|
private IForcedIdDao myForcedIdDao;
|
||||||
@Autowired(required = false)
|
|
||||||
private JobExecutionDao myMapJobExecutionDao;
|
|
||||||
@Autowired(required = false)
|
|
||||||
private JobInstanceDao myMapJobInstanceDao;
|
|
||||||
|
|
||||||
protected <T extends IBaseResource> T loadResourceFromClasspath(Class<T> type, String resourceName) throws IOException {
|
protected <T extends IBaseResource> T loadResourceFromClasspath(Class<T> type, String resourceName) throws IOException {
|
||||||
return ClasspathUtil.loadResource(myFhirContext, type, resourceName);
|
return ClasspathUtil.loadResource(myFhirContext, type, resourceName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@AfterEach
|
|
||||||
public void afterEnsureNoStaleBatchJobs() {
|
|
||||||
if (myMapJobInstanceDao != null) {
|
|
||||||
myBatchJobHelper.ensureNoRunningJobs();
|
|
||||||
ProxyUtil.getSingletonTarget(myMapJobExecutionDao, MapJobExecutionDao.class).clear();
|
|
||||||
ProxyUtil.getSingletonTarget(myMapJobInstanceDao, MapJobInstanceDao.class).clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterEach
|
@AfterEach
|
||||||
public void afterPerformCleanup() {
|
public void afterPerformCleanup() {
|
||||||
BaseHapiFhirDao.setDisableIncrementOnUpdateForUnitTest(false);
|
BaseHapiFhirDao.setDisableIncrementOnUpdateForUnitTest(false);
|
||||||
|
|
|
@ -37,8 +37,6 @@ import ca.uhn.fhir.jpa.subscription.submit.config.SubscriptionSubmitterConfig;
|
||||||
import ca.uhn.fhir.jpa.test.Batch2JobHelper;
|
import ca.uhn.fhir.jpa.test.Batch2JobHelper;
|
||||||
import ca.uhn.fhir.jpa.test.util.StoppableSubscriptionDeliveringRestHookSubscriber;
|
import ca.uhn.fhir.jpa.test.util.StoppableSubscriptionDeliveringRestHookSubscriber;
|
||||||
import ca.uhn.fhir.jpa.test.util.SubscriptionTestUtil;
|
import ca.uhn.fhir.jpa.test.util.SubscriptionTestUtil;
|
||||||
import ca.uhn.fhir.test.utilities.BatchJobHelper;
|
|
||||||
import org.springframework.batch.core.explore.JobExplorer;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.context.annotation.Import;
|
import org.springframework.context.annotation.Import;
|
||||||
|
@ -79,13 +77,9 @@ public class TestJPAConfig {
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
Please do not rename this bean to "transactionManager()" as this will conflict with the transactionManager
|
|
||||||
provided by Spring Batch.
|
|
||||||
*/
|
|
||||||
@Bean
|
@Bean
|
||||||
@Primary
|
@Primary
|
||||||
public JpaTransactionManager hapiTransactionManager(EntityManagerFactory entityManagerFactory) {
|
public JpaTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
|
||||||
JpaTransactionManager retVal = new JpaTransactionManager();
|
JpaTransactionManager retVal = new JpaTransactionManager();
|
||||||
retVal.setEntityManagerFactory(entityManagerFactory);
|
retVal.setEntityManagerFactory(entityManagerFactory);
|
||||||
return retVal;
|
return retVal;
|
||||||
|
@ -103,11 +97,6 @@ public class TestJPAConfig {
|
||||||
return new StoppableSubscriptionDeliveringRestHookSubscriber();
|
return new StoppableSubscriptionDeliveringRestHookSubscriber();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
|
||||||
public BatchJobHelper batchJobHelper(JobExplorer theJobExplorer) {
|
|
||||||
return new BatchJobHelper(theJobExplorer);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public Batch2JobHelper batch2JobHelper(IJobMaintenanceService theJobMaintenanceService, IJobCoordinator theJobCoordinator, IJobPersistence theJobPersistence) {
|
public Batch2JobHelper batch2JobHelper(IJobMaintenanceService theJobMaintenanceService, IJobCoordinator theJobCoordinator, IJobPersistence theJobPersistence) {
|
||||||
return new Batch2JobHelper(theJobMaintenanceService, theJobCoordinator, theJobPersistence);
|
return new Batch2JobHelper(theJobMaintenanceService, theJobCoordinator, theJobPersistence);
|
||||||
|
|
|
@ -1,123 +0,0 @@
|
||||||
package ca.uhn.fhir.jpa.term.job;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* #%L
|
|
||||||
* HAPI FHIR JPA Server
|
|
||||||
* %%
|
|
||||||
* Copyright (C) 2014 - 2021 Smile CDR, Inc.
|
|
||||||
* %%
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
* #L%
|
|
||||||
*/
|
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.batch.core.Job;
|
|
||||||
import org.springframework.batch.core.Step;
|
|
||||||
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
|
|
||||||
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
|
|
||||||
import org.springframework.batch.core.job.builder.FlowBuilder;
|
|
||||||
import org.springframework.batch.core.job.builder.SimpleJobBuilder;
|
|
||||||
import org.springframework.batch.core.job.flow.Flow;
|
|
||||||
import org.springframework.batch.core.job.flow.support.SimpleFlow;
|
|
||||||
import org.springframework.batch.repeat.RepeatStatus;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Not intended to ever run. Used as a sandbox for "interesting" jobs
|
|
||||||
*/
|
|
||||||
public class DynamicJobFlowSandbox {
|
|
||||||
protected static final Logger ourLog = LoggerFactory.getLogger(DynamicJobFlowSandbox.class);
|
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JobBuilderFactory myJobBuilderFactory;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private StepBuilderFactory myStepBuilderFactory;
|
|
||||||
|
|
||||||
private List<Long> versionPidList = Lists.newArrayList(3L, 5L);
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public Job testJob() {
|
|
||||||
SimpleJobBuilder jobBuilder = myJobBuilderFactory.get("job")
|
|
||||||
.start(stepPreFlow());
|
|
||||||
|
|
||||||
// add a flow for each Pid
|
|
||||||
List<Flow> flowForEachPidList = versionPidList.stream().map(this::getFlowForPid).collect(Collectors.toList());
|
|
||||||
flowForEachPidList.forEach( flowForPid -> jobBuilder.on("COMPLETED").to(flowForPid) );
|
|
||||||
|
|
||||||
return jobBuilder.next(stepPostFlow()).build();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private Flow getFlowForPid(Long theLong) {
|
|
||||||
return new FlowBuilder<SimpleFlow>("flow-for-Pid-" + theLong)
|
|
||||||
.start(flowStep1(theLong))
|
|
||||||
.next(fllowStep2(theLong))
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public Step flowStep1(long theLong) {
|
|
||||||
String name = "flow-step-1-for-Pid-" + theLong;
|
|
||||||
return myStepBuilderFactory.get(name)
|
|
||||||
.tasklet((contribution, chunkContext) -> {
|
|
||||||
ourLog.info("\n\n" + name + " executed\n\n");
|
|
||||||
return RepeatStatus.FINISHED;
|
|
||||||
})
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public Step fllowStep2(long theLong) {
|
|
||||||
String name = "flow-step-2-for-Pid-" + theLong;
|
|
||||||
return myStepBuilderFactory.get(name)
|
|
||||||
.tasklet((contribution, chunkContext) -> {
|
|
||||||
ourLog.info("\n\n" + name + " executed\n\n");
|
|
||||||
return RepeatStatus.FINISHED;
|
|
||||||
})
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public Step stepPreFlow() {
|
|
||||||
return myStepBuilderFactory.get("step-pre-flow")
|
|
||||||
.tasklet((contribution, chunkContext) -> {
|
|
||||||
ourLog.info("\n\nstep-pre-flow executed\n\n");
|
|
||||||
return RepeatStatus.FINISHED;
|
|
||||||
})
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public Step stepPostFlow() {
|
|
||||||
return myStepBuilderFactory.get("step-post-flow")
|
|
||||||
.tasklet((contribution, chunkContext) -> {
|
|
||||||
ourLog.info("\n\nstep-post-flow executed\n\n");
|
|
||||||
return RepeatStatus.FINISHED;
|
|
||||||
})
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-fhir</artifactId>
|
<artifactId>hapi-fhir</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-fhir-spring-boot-samples</artifactId>
|
<artifactId>hapi-fhir-spring-boot-samples</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>hapi-fhir-spring-boot-sample-client-apache</artifactId>
|
<artifactId>hapi-fhir-spring-boot-sample-client-apache</artifactId>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-fhir-spring-boot-samples</artifactId>
|
<artifactId>hapi-fhir-spring-boot-samples</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>hapi-fhir-spring-boot-sample-client-okhttp</artifactId>
|
<artifactId>hapi-fhir-spring-boot-sample-client-okhttp</artifactId>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-fhir-spring-boot-samples</artifactId>
|
<artifactId>hapi-fhir-spring-boot-samples</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>hapi-fhir-spring-boot-sample-server-jersey</artifactId>
|
<artifactId>hapi-fhir-spring-boot-sample-server-jersey</artifactId>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-fhir-spring-boot</artifactId>
|
<artifactId>hapi-fhir-spring-boot</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>hapi-fhir-spring-boot-samples</artifactId>
|
<artifactId>hapi-fhir-spring-boot-samples</artifactId>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-fhir</artifactId>
|
<artifactId>hapi-fhir</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -20,8 +20,8 @@ package ca.uhn.fhir.jpa.migrate.tasks;
|
||||||
* #L%
|
* #L%
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import ca.uhn.fhir.i18n.Msg;
|
|
||||||
import ca.uhn.fhir.context.ConfigurationException;
|
import ca.uhn.fhir.context.ConfigurationException;
|
||||||
|
import ca.uhn.fhir.i18n.Msg;
|
||||||
import ca.uhn.fhir.jpa.migrate.DriverTypeEnum;
|
import ca.uhn.fhir.jpa.migrate.DriverTypeEnum;
|
||||||
import ca.uhn.fhir.jpa.migrate.tasks.api.ISchemaInitializationProvider;
|
import ca.uhn.fhir.jpa.migrate.tasks.api.ISchemaInitializationProvider;
|
||||||
import com.google.common.base.Charsets;
|
import com.google.common.base.Charsets;
|
||||||
|
@ -32,6 +32,7 @@ import javax.annotation.Nonnull;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.apache.commons.lang3.StringUtils.isBlank;
|
import static org.apache.commons.lang3.StringUtils.isBlank;
|
||||||
|
@ -57,6 +58,10 @@ public class SchemaInitializationProvider implements ISchemaInitializationProvid
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getSqlStatements(DriverTypeEnum theDriverType) {
|
public List<String> getSqlStatements(DriverTypeEnum theDriverType) {
|
||||||
|
if (!isEnabled()) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
List<String> retval = new ArrayList<>();
|
List<String> retval = new ArrayList<>();
|
||||||
|
|
||||||
String initScript = mySchemaFileClassPath + "/" + getInitScript(theDriverType);
|
String initScript = mySchemaFileClassPath + "/" + getInitScript(theDriverType);
|
||||||
|
|
|
@ -92,17 +92,18 @@ public class Builder {
|
||||||
return task;
|
return task;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder initializeSchema(String theVersion, ISchemaInitializationProvider theSchemaInitializationProvider) {
|
public InitializeSchemaTask initializeSchema(String theVersion, ISchemaInitializationProvider theSchemaInitializationProvider) {
|
||||||
mySink.addTask(new InitializeSchemaTask(myRelease, theVersion, theSchemaInitializationProvider));
|
InitializeSchemaTask task = new InitializeSchemaTask(myRelease, theVersion, theSchemaInitializationProvider);
|
||||||
return this;
|
mySink.addTask(task);
|
||||||
|
return task;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public Builder initializeSchema(String theVersion, String theSchemaName, ISchemaInitializationProvider theSchemaInitializationProvider) {
|
public InitializeSchemaTask initializeSchema(String theVersion, String theSchemaName, ISchemaInitializationProvider theSchemaInitializationProvider) {
|
||||||
InitializeSchemaTask task = new InitializeSchemaTask(myRelease, theVersion, theSchemaInitializationProvider);
|
InitializeSchemaTask task = new InitializeSchemaTask(myRelease, theVersion, theSchemaInitializationProvider);
|
||||||
task.setDescription("Initialize " + theSchemaName + " schema");
|
task.setDescription("Initialize " + theSchemaName + " schema");
|
||||||
mySink.addTask(task);
|
mySink.addTask(task);
|
||||||
return this;
|
return task;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder executeRawSql(String theVersion, DriverTypeEnum theDriver, @Language("SQL") String theSql) {
|
public Builder executeRawSql(String theVersion, DriverTypeEnum theDriver, @Language("SQL") String theSql) {
|
||||||
|
|
|
@ -35,4 +35,8 @@ public interface ISchemaInitializationProvider {
|
||||||
ISchemaInitializationProvider setSchemaDescription(String theSchemaDescription);
|
ISchemaInitializationProvider setSchemaDescription(String theSchemaDescription);
|
||||||
|
|
||||||
boolean canInitializeSchema();
|
boolean canInitializeSchema();
|
||||||
|
|
||||||
|
default boolean isEnabled() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
|
@ -26,7 +26,6 @@ import ca.uhn.fhir.batch2.importpull.models.BulkImportRecord;
|
||||||
import ca.uhn.fhir.batch2.model.JobDefinition;
|
import ca.uhn.fhir.batch2.model.JobDefinition;
|
||||||
import ca.uhn.fhir.context.FhirContext;
|
import ca.uhn.fhir.context.FhirContext;
|
||||||
import ca.uhn.fhir.jpa.api.dao.DaoRegistry;
|
import ca.uhn.fhir.jpa.api.dao.DaoRegistry;
|
||||||
import ca.uhn.fhir.jpa.batch.config.BatchConstants;
|
|
||||||
import ca.uhn.fhir.jpa.bulk.imprt.api.IBulkDataImportSvc;
|
import ca.uhn.fhir.jpa.bulk.imprt.api.IBulkDataImportSvc;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
|
@ -34,6 +33,7 @@ import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
public class BulkImportPullConfig {
|
public class BulkImportPullConfig {
|
||||||
|
public static final String BULK_IMPORT_JOB_NAME = "bulkImportJob";
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private FhirContext myFhirContext;
|
private FhirContext myFhirContext;
|
||||||
|
@ -48,7 +48,7 @@ public class BulkImportPullConfig {
|
||||||
public JobDefinition bulkImportPullJobDefinition() {
|
public JobDefinition bulkImportPullJobDefinition() {
|
||||||
return JobDefinition
|
return JobDefinition
|
||||||
.newBuilder()
|
.newBuilder()
|
||||||
.setJobDefinitionId(BatchConstants.BULK_IMPORT_JOB_NAME)
|
.setJobDefinitionId(BULK_IMPORT_JOB_NAME)
|
||||||
.setJobDescription("Performs bulk import pull job")
|
.setJobDescription("Performs bulk import pull job")
|
||||||
.setJobDefinitionVersion(1)
|
.setJobDefinitionVersion(1)
|
||||||
.gatedExecution()
|
.gatedExecution()
|
||||||
|
|
|
@ -40,11 +40,19 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.TERM_CODE_SYSTEM_DELETE_JOB_NAME;
|
|
||||||
import static ca.uhn.fhir.jpa.batch.config.BatchConstants.TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME;
|
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
public class TermCodeSystemJobConfig {
|
public class TermCodeSystemJobConfig {
|
||||||
|
/**
|
||||||
|
* TermCodeSystem delete
|
||||||
|
*/
|
||||||
|
public static final String TERM_CODE_SYSTEM_DELETE_JOB_NAME = "termCodeSystemDeleteJob";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TermCodeSystemVersion delete
|
||||||
|
*/
|
||||||
|
public static final String TERM_CODE_SYSTEM_VERSION_DELETE_JOB_NAME = "termCodeSystemVersionDeleteJob";
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ITermCodeSystemDeleteJobSvc myITermCodeSystemSvc;
|
private ITermCodeSystemDeleteJobSvc myITermCodeSystemSvc;
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-deployable-pom</artifactId>
|
<artifactId>hapi-deployable-pom</artifactId>
|
||||||
<version>6.2.0-PRE9-SNAPSHOT</version>
|
<version>6.2.0-PRE10-SNAPSHOT</version>
|
||||||
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,8 @@ package ca.uhn.fhir.jpa.api.pid;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import ca.uhn.fhir.rest.api.server.storage.ResourcePersistentId;
|
import ca.uhn.fhir.rest.api.server.storage.ResourcePersistentId;
|
||||||
import io.micrometer.core.lang.NonNull;
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ import java.util.Date;
|
||||||
* A resource pid list where all pids have the same resource type
|
* A resource pid list where all pids have the same resource type
|
||||||
*/
|
*/
|
||||||
public class HomogeneousResourcePidList extends BaseResourcePidList {
|
public class HomogeneousResourcePidList extends BaseResourcePidList {
|
||||||
@NonNull
|
@Nonnull
|
||||||
final String myResourceType;
|
final String myResourceType;
|
||||||
|
|
||||||
public HomogeneousResourcePidList(String theResourceType, Collection<ResourcePersistentId> theIds, Date theLastDate) {
|
public HomogeneousResourcePidList(String theResourceType, Collection<ResourcePersistentId> theIds, Date theLastDate) {
|
||||||
|
|
|
@ -21,8 +21,8 @@ package ca.uhn.fhir.jpa.api.pid;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import ca.uhn.fhir.rest.api.server.storage.ResourcePersistentId;
|
import ca.uhn.fhir.rest.api.server.storage.ResourcePersistentId;
|
||||||
import io.micrometer.core.lang.NonNull;
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -31,7 +31,7 @@ import java.util.List;
|
||||||
* A resource pid list where the pids can have different resource types
|
* A resource pid list where the pids can have different resource types
|
||||||
*/
|
*/
|
||||||
public class MixedResourcePidList extends BaseResourcePidList {
|
public class MixedResourcePidList extends BaseResourcePidList {
|
||||||
@NonNull
|
@Nonnull
|
||||||
final List<String> myResourceTypes;
|
final List<String> myResourceTypes;
|
||||||
|
|
||||||
public MixedResourcePidList(List<String> theResourceTypes, Collection<ResourcePersistentId> theIds, Date theLastDate) {
|
public MixedResourcePidList(List<String> theResourceTypes, Collection<ResourcePersistentId> theIds, Date theLastDate) {
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue