Skip to content

Commit

Permalink
#29 | Vivek, Suhas | Checklist table creation WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
Suhas Vishwanath committed Jul 12, 2023
1 parent 00e3137 commit 1ca4386
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,8 @@ public enum Type {
ManualProgramEnrolmentEligibility,
GroupToMember,
HouseholdToMember,
RepeatableQuestionGroup
RepeatableQuestionGroup,
Checklist
}

public enum TableType {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.avniproject.etl.repository.rowMappers.MediaTableMetadataBuilder;
import org.avniproject.etl.repository.rowMappers.TableMetadataMapper;
import org.avniproject.etl.repository.rowMappers.tableMappers.AddressTable;
import org.avniproject.etl.repository.rowMappers.tableMappers.ChecklistTable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
Expand Down Expand Up @@ -45,6 +46,7 @@ public SchemaMetadata getNewSchemaMetadata() {
tables.addAll(getGroupSubjectTables());

tables.addAll(getRepeatableQuestionGroupTables());
//tables.addAll(getChecklistTables());
return new SchemaMetadata(tables);
}

Expand Down Expand Up @@ -72,7 +74,7 @@ private TableMetadata getAddressTable() {
private List<TableMetadata> getRepeatableQuestionGroupTables() {
String sqlFormat = readSqlFile("repeatableQG/repeatableQuestionGroups.sql");
String sql = format(sqlFormat, PLACEHOLDER_CONCEPT_UUID);
return getTableMetadata(sql);
return getTableMetadataForForm(sql);
}

private List<TableMetadata> getFormTables() {
Expand Down Expand Up @@ -114,13 +116,28 @@ private List<TableMetadata> getFormTables() {
" and (p.id is null or op.id is not null) and (et.id is null or oet.id is not null)" +
" and nafe.id is null;", PLACEHOLDER_CONCEPT_UUID);

List<TableMetadata> tables = getTableMetadata(sql);
List<TableMetadata> tables = getTableMetadataForForm(sql);
tables.forEach(this::addDecisionConceptColumns);
tables.stream().filter(t -> !t.isSubjectTable()).forEach(this::addSyncAttributeColumns);
return tables;
}

private List<TableMetadata> getTableMetadata(String sql) {
private List<TableMetadata> getChecklistTables() {
String sql = readSqlFile("checklist/checklistMetadata.sql");
List<Map<String, Object>> checklistTypes = runInOrgContext(() -> jdbcTemplate.queryForList(sql), jdbcTemplate);
ChecklistTable checklistTable = new ChecklistTable(checklistTypes);

Map<String, Object> tableDetails = checklistTypes.get(0);

return checklistTypes.stream().map(x -> {
TableMetadata tableMetadata = new TableMetadata();
tableMetadata.setName(checklistTable.name(tableDetails));
tableMetadata.setType(TableMetadata.Type.Checklist);
return tableMetadata;
}).collect(Collectors.toList());
}

private List<TableMetadata> getTableMetadataForForm(String sql) {
List<Map<String, Object>> maps = runInOrgContext(() -> jdbcTemplate.queryForList(sql), jdbcTemplate);
Map<Object, List<Map<String, Object>>> tableMaps = maps.stream().collect(Collectors.groupingBy(stringObjectMap -> stringObjectMap.get("form_mapping_uuid")));
return tableMaps.values().stream().map(mapList -> new TableMetadataMapper().create(mapList)).collect(Collectors.toList());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public class TableNameGenerator {
public static final String ProgramEnrolmentRepeatableQuestionGroup = "ProgramEnrolmentRepeatableQuestionGroup";
public static final String ProgramEncounterRepeatableQuestionGroup = "ProgramEncounterRepeatableQuestionGroup";

private static final Map<String, List<Integer>> tableTypeTrimmingMap = new HashMap<>() {{
private static final Map<String, List<Integer>> trims = new HashMap<>() {{
put("Registration", List.of(6));
put(RegistrationRepeatableQuestionGroup, List.of(6, 20));
put("Encounter", List.of(6, 20));
Expand Down Expand Up @@ -41,7 +41,7 @@ public String generateName(List<String> entities, String tableType, String suffi
}

private String getTrimmedTableName(List<String> entities, String tableType, String suffix) {
List<Integer> trimmingList = tableTypeTrimmingMap.get(tableType);
List<Integer> trimmingList = trims.get(tableType);
List<String> trimmedNameList = IntStream
.range(0, entities.size())
.mapToObj(i -> getTrimmedName(entities, new StringBuilder(), trimmingList, i, suffix))
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package org.avniproject.etl.repository.rowMappers.tableMappers;

import org.avniproject.etl.domain.metadata.Column;
import org.avniproject.etl.domain.metadata.ColumnMetadata;
import org.avniproject.etl.repository.rowMappers.ColumnMetadataMapper;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import static java.lang.String.format;

public class ChecklistTable extends Table {
private final List<Map<String, Object>> checklistTypes;

public ChecklistTable(List<Map<String, Object>> checklistTypes) {
this.checklistTypes = checklistTypes;
}

@Override
public String name(Map<String, Object> tableDetails) {
return generateTableName("checklist", "", tableDetails, "name");
}

@Override
public List<Column> columns() {
return new Columns()
.withIdColumn()
.withColumn(new Column("program_enrolment_id", Column.Type.integer, Column.ColumnType.index))
.withColumn(new Column("base_date", Column.Type.date))
.withCommonColumns()
.build();
}
}
9 changes: 9 additions & 0 deletions src/main/resources/sql/etl/checklist/checklistMetadata.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
select cd.name name,
program.name program_name,
st.name subject_type_name
from checklist_detail cd
join program on program.name = 'Child'
join form_mapping fm on fm.entity_id = program.id
join form f on fm.form_id = f.id
join subject_type st on st.id = fm.subject_type_id
where f.form_type = 'ProgramEnrolment';

0 comments on commit 1ca4386

Please sign in to comment.