Skip to content
Snippets Groups Projects
Commit c298d7b2 authored by Neelesh Thakur's avatar Neelesh Thakur
Browse files

fix issue with records not being included when empty meta block with valid geo block is provided

parent 6858e29b
No related branches found
No related tags found
2 merge requests!744Upgraded packages to mitigated vulns in netty, guava, snakeyaml,!742fix issue with records batch api as it drops valid record after conversion
Pipeline #202586 passed with warnings
......@@ -36,8 +36,10 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
......@@ -60,26 +62,36 @@ public class DpsConversionService {
List<JsonObject> recordsWithGeoJsonBlock = new ArrayList<>();
List<ConversionRecord> recordsWithoutConversionBlock = this.classifyRecords(originalRecords, conversionStatuses, recordsWithMetaBlock, recordsWithGeoJsonBlock);
List<ConversionRecord> allRecords = recordsWithoutConversionBlock;
Map<String, ConversionRecord> conversionResults = new HashMap<>();
addOrUpdateRecordStatus(conversionResults, recordsWithoutConversionBlock);
if (!conversionStatuses.isEmpty()) {
RecordsAndStatuses crsConversionResult = null;
List<ConversionRecord> conversionRecords = new ArrayList<>();
if (!recordsWithGeoJsonBlock.isEmpty()) {
List<ConversionRecord> geoConvertedRecords = new ArrayList<>();
crsConversionResult = this.crsConversionService.doCrsGeoJsonConversion(recordsWithGeoJsonBlock, conversionStatuses);
conversionRecords = this.getConversionRecords(crsConversionResult);
geoConvertedRecords = this.getConversionRecords(crsConversionResult);
addOrUpdateRecordStatus(conversionResults, geoConvertedRecords);
}
if (!recordsWithMetaBlock.isEmpty()) {
List<ConversionRecord> metaConvertedRecords = new ArrayList<>();
crsConversionResult = this.crsConversionService.doCrsConversion(recordsWithMetaBlock, conversionStatuses);
conversionRecords = this.getConversionRecords(crsConversionResult);
this.unitConversionService.convertUnitsToSI(conversionRecords);
this.datesConversionService.convertDatesToISO(conversionRecords);
metaConvertedRecords = this.getConversionRecords(crsConversionResult);
this.unitConversionService.convertUnitsToSI(metaConvertedRecords);
this.datesConversionService.convertDatesToISO(metaConvertedRecords);
addOrUpdateRecordStatus(conversionResults, metaConvertedRecords);
}
allRecords.addAll(conversionRecords);
}
this.checkMismatchAndLogMissing(originalRecords, allRecords);
List<ConversionRecord> out = new ArrayList<>(conversionResults.values());
this.checkMismatchAndLogMissing(originalRecords, out);
return this.makeResponseStatus(out);
}
return this.MakeResponseStatus(allRecords);
private void addOrUpdateRecordStatus(Map<String, ConversionRecord> out, List<ConversionRecord> result) {
for (ConversionRecord conversionRecord: result) {
String recordId = conversionRecord.getRecordId();
out.put(recordId, conversionRecord);
}
}
private List<ConversionRecord> classifyRecords(List<JsonObject> originalRecords, List<ConversionStatus.ConversionStatusBuilder> conversionStatuses, List<JsonObject> recordsWithMetaBlock, List<JsonObject> recordsWithGeoJsonBlock) {
......@@ -147,7 +159,7 @@ public class DpsConversionService {
return null;
}
private RecordsAndStatuses MakeResponseStatus(List<ConversionRecord> conversionRecords) {
private RecordsAndStatuses makeResponseStatus(List<ConversionRecord> conversionRecords) {
RecordsAndStatuses result = new RecordsAndStatuses();
List<JsonObject> records = new ArrayList<>();
List<ConversionStatus> conversionStatuses = new ArrayList<>();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment