Skip to content

Commit 002150a

Browse files
committed
Merge branch '2.1.3-merge'
2 parents 56cd015 + 928dee8 commit 002150a

21 files changed

+215
-37
lines changed

scripts/rpm/bahmni-batch

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,24 @@
22

33
. /etc/bahmni-installer/bahmni.conf
44

5+
export JOB_NAME=""
6+
export EXTERNAL_COHORT_TYPES=""
7+
if [[ -z $1 ]]; then
8+
export JOB_NAME="Total Export"
9+
else
10+
INPUT_TYPE="$(cut -d'=' -f1 <<< $1)"
11+
if [[ "$INPUT_TYPE" == "belongs_to_external_cohort" ]]; then
12+
export EXTERNAL_COHORT_TYPES="$(cut -d'=' -f2 <<< $1)"
13+
fi
14+
if [[ -z $2 ]]; then
15+
export JOB_NAME="External Cohort Export"
16+
else
17+
INPUT_TYPE="$(cut -d'=' -f1 <<< $2)"
18+
if [[ "$INPUT_TYPE" == "job_name" ]]; then
19+
export JOB_NAME="$(cut -d'=' -f2 <<< $2)"
20+
fi
21+
fi
22+
fi
523
echo "Running bahmni-batch..."
624
java -DOPENMRS_DB_SERVER=${OPENMRS_DB_SERVER} -DOPENMRS_DB_USER=${OPENMRS_DB_USERNAME} -DOPENMRS_DB_PASSWORD=${OPENMRS_DB_PASSWORD} -jar /opt/bahmni-batch/libs/bahmni-batch-*.jar >> /opt/bahmni-batch/log/bahmni-batch.log
725
echo "Done"

src/main/java/org/bahmni/batch/BatchConfiguration.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@
3434
@EnableBatchProcessing
3535
public class BatchConfiguration extends DefaultBatchConfigurer {
3636

37-
public static final String FULL_DATA_EXPORT_JOB_NAME = "endtbExports";
38-
3937
@Autowired
4038
private JobBuilderFactory jobBuilderFactory;
4139

@@ -69,6 +67,9 @@ public class BatchConfiguration extends DefaultBatchConfigurer {
6967
@Value("${bahmniConfigFolder}")
7068
private Resource bahmniConfigFolder;
7169

70+
@Value("${jobName}")
71+
private String jobName;
72+
7273
@Autowired
7374
private ReportGenerator reportGenerator;
7475

@@ -82,7 +83,7 @@ public Job completeDataExport() throws IOException {
8283

8384
List<BahmniForm> forms = formListProcessor.retrieveAllForms();
8485

85-
FlowBuilder<FlowJobBuilder> completeDataExport = jobBuilderFactory.get(FULL_DATA_EXPORT_JOB_NAME)
86+
FlowBuilder<FlowJobBuilder> completeDataExport = jobBuilderFactory.get(jobName)
8687
.incrementer(new RunIdIncrementer()).preventRestart()
8788
.listener(listener())
8889
.flow(treatmentRegistrationBaseExportStep.getStep())

src/main/java/org/bahmni/batch/BatchUtils.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import java.io.IOException;
88
import java.io.InputStream;
99
import java.util.ArrayList;
10+
import java.util.Arrays;
1011
import java.util.List;
1112

1213
public class BatchUtils {
@@ -33,4 +34,26 @@ public static List<String> convertConceptNamesToSet(String conceptNames){
3334
return conceptNamesSet;
3435
}
3536

37+
private static String constructSqlWithParameter(String sql, String parameter, String value) {
38+
return sql.replaceAll(String.format(":%s", parameter), value);
39+
}
40+
41+
public static String constructSqlWithCohortParameters(String sql, List<String> externalCohortTypes){
42+
Boolean belongsToExternalCohort = externalCohortTypes.size() >= 1 && !externalCohortTypes.get(0).isEmpty();
43+
String cohortTypesAsString = getCohortTypesAsString(externalCohortTypes);
44+
sql = constructSqlWithParameter(sql, "belongsToExternalCohort",
45+
belongsToExternalCohort.toString());
46+
sql = constructSqlWithParameter(sql, "externalCohortTypes", cohortTypesAsString);
47+
return sql;
48+
}
49+
50+
private static String getCohortTypesAsString(List<String> cohortTypes) {
51+
List<String> cohortTypesWithQuotes = new ArrayList<>();
52+
for (String cohortType : cohortTypes) {
53+
cohortTypesWithQuotes.add("\"" + cohortType + "\"");
54+
}
55+
String cohortTypesAsString = Arrays.toString(cohortTypesWithQuotes.toArray());
56+
cohortTypesAsString = String.format("%s", cohortTypesAsString.substring(1, cohortTypesAsString.length() - 1));
57+
return cohortTypesAsString;
58+
}
3659
}

src/main/java/org/bahmni/batch/JobCompletionNotificationListener.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,15 @@ public JobCompletionNotificationListener(@Value("${outputFolder}") Resource outp
3434
this.zipFolder = zipFolder;
3535
}
3636

37+
@Value("${jobName}")
38+
private String jobName;
39+
3740
@Override
3841
public void beforeJob(JobExecution jobExecution) {
3942
try {
4043
FileUtils.deleteQuietly(outputFolder.getFile());
4144
FileUtils.forceMkdir(outputFolder.getFile());
42-
String zipFileName = BatchConfiguration.FULL_DATA_EXPORT_JOB_NAME + new SimpleDateFormat("yyyyMMddHHmm").format(new Date()) + ".zip";
45+
String zipFileName = jobName + new SimpleDateFormat("yyyyMMddHHmm").format(new Date()) + ".zip";
4346
jobExecution.getExecutionContext().put(OUTPUT_FILE_NAME_CONTEXT_KEY,zipFileName);
4447
}
4548
catch (IOException e) {

src/main/java/org/bahmni/batch/ReportGenerator.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import java.text.SimpleDateFormat;
1212
import java.util.ArrayList;
13+
import java.util.Comparator;
1314
import java.util.List;
1415

1516
@Component
@@ -24,7 +25,11 @@ public class ReportGenerator {
2425
private SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy HH:mm");
2526

2627
public String generateReport(){
27-
List<JobInstance> jobInstanceList = jobExplorer.findJobInstancesByJobName(BatchConfiguration.FULL_DATA_EXPORT_JOB_NAME,0,20);
28+
List<String> jobNames = jobExplorer.getJobNames();
29+
List<JobInstance> jobInstanceList = new ArrayList<>();
30+
for (String jobName : jobNames) {
31+
jobInstanceList.addAll(jobExplorer.findJobInstancesByJobName(jobName, 0, 20));
32+
}
2833
List<JobResult> results = transformJobExecutionsToReport(getJobExecutionsForInstances(jobInstanceList));
2934

3035
return evaluator.evaluate("report.ftl",results);
@@ -40,15 +45,25 @@ private List<JobExecution> getJobExecutionsForInstances(List<JobInstance> jobIns
4045

4146
private List<JobResult> transformJobExecutionsToReport(List<JobExecution> jobExecutions) {
4247
List<JobResult> jobResults = new ArrayList<>();
48+
sortAllJobExecutions(jobExecutions);
4349
for(JobExecution execution: jobExecutions){
4450
String zipFileName = execution.getExecutionContext().getString(JobCompletionNotificationListener.OUTPUT_FILE_NAME_CONTEXT_KEY);
4551
jobResults.add(new JobResult(dateFormat.format(execution.getCreateTime()),
46-
execution.getExitStatus().getExitCode(), zipFileName));
52+
execution.getExitStatus().getExitCode(), zipFileName, execution.getJobInstance().getJobName()));
4753
}
4854

4955
return jobResults;
5056
}
5157

58+
private void sortAllJobExecutions(List<JobExecution> jobExecutions) {
59+
jobExecutions.sort(new Comparator<JobExecution>() {
60+
@Override
61+
public int compare(JobExecution o1, JobExecution o2) {
62+
return o2.getCreateTime().compareTo(o1.getCreateTime());
63+
}
64+
});
65+
}
66+
5267
public void setJobExplorer(JobExplorer jobExplorer) {
5368
this.jobExplorer = jobExplorer;
5469
}

src/main/java/org/bahmni/batch/exports/BaseExportStep.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.bahmni.batch.exports;
22

3-
import org.bahmni.batch.BatchUtils;
43
import org.springframework.batch.core.Step;
54
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
65
import org.springframework.batch.item.database.JdbcCursorItemReader;
@@ -15,9 +14,14 @@
1514
import javax.sql.DataSource;
1615
import java.io.IOException;
1716
import java.io.Writer;
17+
import java.util.List;
1818

19+
import static org.bahmni.batch.BatchUtils.constructSqlWithCohortParameters;
20+
import static org.bahmni.batch.BatchUtils.convertResourceOutputToString;
1921

2022
public class BaseExportStep {
23+
private List<String> externalCohortTypes;
24+
2125
private DataSource dataSource;
2226

2327
private StepBuilderFactory stepBuilderFactory;
@@ -32,13 +36,15 @@ public class BaseExportStep {
3236

3337
private String sql;
3438

35-
public BaseExportStep(StepBuilderFactory stepBuilderFactory, DataSource dataSource, Resource sqlResource, Resource outputFolder, String exportName, String headers) {
39+
public BaseExportStep(StepBuilderFactory stepBuilderFactory, DataSource dataSource, Resource sqlResource,
40+
Resource outputFolder, String exportName, String headers, List<String> externalCohortTypes) {
3641
this.dataSource = dataSource;
3742
this.stepBuilderFactory = stepBuilderFactory;
3843
this.sqlResource = sqlResource;
3944
this.outputFolder = outputFolder;
4045
this.exportName = exportName;
4146
this.headers = headers;
47+
this.externalCohortTypes = externalCohortTypes;
4248
}
4349

4450
public Step getStep() {
@@ -80,6 +86,7 @@ public String getHeaders() {
8086

8187
@PostConstruct
8288
public void postConstruct(){
83-
this.sql = BatchUtils.convertResourceOutputToString(sqlResource);
89+
String sql = convertResourceOutputToString(sqlResource);
90+
this.sql = constructSqlWithCohortParameters(sql, externalCohortTypes);
8491
}
8592
}

src/main/java/org/bahmni/batch/exports/MetaDataCodeDictionaryExportStep.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.springframework.stereotype.Component;
88

99
import javax.sql.DataSource;
10+
import java.util.List;
1011

1112
@Component
1213
public class MetaDataCodeDictionaryExportStep extends BaseExportStep {
@@ -15,8 +16,9 @@ public MetaDataCodeDictionaryExportStep(StepBuilderFactory stepBuilderFactory,
1516
DataSource dataSource,
1617
@Value("classpath:sql/metaDataCodeDictionary.sql") Resource sqlResource,
1718
@Value("${outputFolder}/metaDataCodeDictionary.csv") Resource outputFolder,
18-
@Value("${metaDataCodeDictionaryHeaders}") String headers) {
19-
super(stepBuilderFactory, dataSource, sqlResource, outputFolder, "metaDataCodeDictionary", headers);
19+
@Value("${metaDataCodeDictionaryHeaders}") String headers,
20+
@Value("#{'${externalCohortTypes}'.split(',')}") List<String> externalCohortTypes) {
21+
super(stepBuilderFactory, dataSource, sqlResource, outputFolder, "metaDataCodeDictionary", headers, externalCohortTypes);
2022
}
2123

2224
}

src/main/java/org/bahmni/batch/exports/NonTBDrugOrderBaseExportStep.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.springframework.stereotype.Component;
88

99
import javax.sql.DataSource;
10+
import java.util.List;
1011

1112
@Component
1213
public class NonTBDrugOrderBaseExportStep extends BaseExportStep {
@@ -16,7 +17,8 @@ public NonTBDrugOrderBaseExportStep(StepBuilderFactory stepBuilderFactory,
1617
DataSource dataSource,
1718
@Value("classpath:sql/nonTbDrugOrder.sql") Resource sqlResource,
1819
@Value("${outputFolder}/nonTbDrugOrder.csv") Resource outputFolder,
19-
@Value("${nonTbDrugOrderHeaders}") String headers ) {
20-
super(stepBuilderFactory, dataSource, sqlResource, outputFolder, "nonTbDrugOrder", headers);
20+
@Value("${nonTbDrugOrderHeaders}") String headers,
21+
@Value("#{'${externalCohortTypes}'.split(',')}") List<String> externalCohortTypes) {
22+
super(stepBuilderFactory, dataSource, sqlResource, outputFolder, "nonTbDrugOrder", headers, externalCohortTypes);
2123
}
2224
}
Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,23 @@
11
package org.bahmni.batch.exports;
22

3-
43
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
54
import org.springframework.beans.factory.annotation.Autowired;
65
import org.springframework.beans.factory.annotation.Value;
76
import org.springframework.core.io.Resource;
87
import org.springframework.stereotype.Component;
9-
108
import javax.sql.DataSource;
9+
import java.util.List;
10+
1111
@Component
1212
public class TBDrugOrderBaseExportStep extends BaseExportStep{
1313

14-
1514
@Autowired
1615
public TBDrugOrderBaseExportStep(StepBuilderFactory stepBuilderFactory,
1716
DataSource dataSource,
1817
@Value("classpath:sql/tbDrugOrder.sql") Resource sqlResource,
1918
@Value("${outputFolder}/tbDrugOrder.csv") Resource outputFolder,
20-
@Value("${tbDrugOrderHeaders}")String headers) {
21-
super(stepBuilderFactory, dataSource, sqlResource, outputFolder, "tbDrugOrder", headers);
19+
@Value("${tbDrugOrderHeaders}")String headers,
20+
@Value("#{'${externalCohortTypes}'.split(',')}") List<String> externalCohortTypes) {
21+
super(stepBuilderFactory, dataSource, sqlResource, outputFolder, "tbDrugOrder", headers, externalCohortTypes);
2222
}
23-
24-
2523
}

src/main/java/org/bahmni/batch/exports/TreatmentRegistrationBaseExportStep.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.springframework.stereotype.Component;
99

1010
import javax.sql.DataSource;
11+
import java.util.List;
1112

1213
@Component
1314
public class TreatmentRegistrationBaseExportStep extends BaseExportStep {
@@ -16,7 +17,8 @@ public class TreatmentRegistrationBaseExportStep extends BaseExportStep {
1617
public TreatmentRegistrationBaseExportStep(StepBuilderFactory stepBuilderFactory, DataSource dataSource,
1718
@Value("classpath:sql/treatmentRegistration.sql") Resource sqlResource,
1819
@Value("${outputFolder}/treatmentRegistration.csv") Resource outputFolder,
19-
@Value("${treatmentRegistrationHeaders}")String headers ) {
20-
super(stepBuilderFactory, dataSource, sqlResource, outputFolder, "treatmentRegistration", headers);
20+
@Value("${treatmentRegistrationHeaders}")String headers,
21+
@Value("#{'${externalCohortTypes}'.split(',')}") List<String> externalCohortTypes) {
22+
super(stepBuilderFactory, dataSource, sqlResource, outputFolder, "treatmentRegistration", headers, externalCohortTypes);
2123
}
2224
}

0 commit comments

Comments
 (0)