Skip to content

Commit f163ebf

Browse files
Merge pull request #502 from Breeding-Insight/bug/BI-2803
[BI-2803] Create new obsVarCount stat for both Experiment creation and appends use case
2 parents dd0f51b + 6971ad8 commit f163ebf

3 files changed

Lines changed: 26 additions & 5 deletions

File tree

src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/appendoverwrite/middleware/process/AppendStatistic.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package org.breedinginsight.brapps.importer.services.processors.experiment.appendoverwrite.middleware.process;
1919

2020
import io.micronaut.context.annotation.Prototype;
21+
import lombok.Setter;
2122
import org.breedinginsight.brapps.importer.model.response.ImportPreviewStatistics;
2223

2324
import java.util.HashSet;
@@ -32,6 +33,8 @@ public class AppendStatistic {
3233
private int newCount;
3334
private int existingCount;
3435
private int mutatedCount;
36+
@Setter
37+
private int obsVarCount;
3538

3639
public AppendStatistic() {
3740
this.clearData();
@@ -44,6 +47,7 @@ public void clearData() {
4447
this.newCount = 0;
4548
this.existingCount = 0;
4649
this.mutatedCount = 0;
50+
this.obsVarCount = 0;
4751
}
4852
public int incrementNewCount(Integer value) {
4953
int increment = 0;
@@ -94,14 +98,16 @@ public Map<String, ImportPreviewStatistics> constructPreviewMap() {
9498
ImportPreviewStatistics newStats = ImportPreviewStatistics.builder().newObjectCount(newCount).build();
9599
ImportPreviewStatistics existingStats = ImportPreviewStatistics.builder().newObjectCount(existingCount).build();
96100
ImportPreviewStatistics mutatedStats = ImportPreviewStatistics.builder().newObjectCount(mutatedCount).build();
101+
ImportPreviewStatistics obsVarStats = ImportPreviewStatistics.builder().newObjectCount(obsVarCount).build();
97102

98103
return Map.of(
99104
"Environments", environmentStats,
100105
"Observation_Units", observationUnitsStats,
101106
"GIDs", gidStats,
102107
"Observations", newStats,
103108
"Existing_Observations", existingStats,
104-
"Mutated_Observations", mutatedStats
109+
"Mutated_Observations", mutatedStats,
110+
"Observation_Variables", obsVarStats
105111
);
106112
}
107113
}

src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/appendoverwrite/middleware/process/ImportTableProcess.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ public AppendOverwriteMiddlewareContext process(AppendOverwriteMiddlewareContext
218218
*/
219219
if (phenotypeCols.isEmpty()) {
220220
processedData = processedDataFactory.undefinedDatasetBean();
221-
updatePreviewStatistics(processedData, context, studyName, unitId);
221+
updatePreviewStatistics(processedData, context, studyName, unitId, phenotypeCols.size());
222222
}
223223

224224
// Assemble the pending observation data for all phenotypes
@@ -332,7 +332,7 @@ public AppendOverwriteMiddlewareContext process(AppendOverwriteMiddlewareContext
332332
processedData.getValidationErrors().ifPresent(errList -> errList.forEach(e -> validationErrors.addError(rowNum + 2, e))); // +2 to account for header row and excel file 1-based row index
333333

334334
// Update import preview statistics and set in the context
335-
updatePreviewStatistics(processedData, context, studyName, unitId);
335+
updatePreviewStatistics(processedData, context, studyName, unitId, varNames.size());
336336

337337
// Construct a pending observation
338338
Optional<PendingImportObject<BrAPIObservation>> pendingProcessedData = Optional.ofNullable(processedData.constructPendingObservation());
@@ -395,12 +395,14 @@ private boolean isChanged(String cellData, BrAPIObservation observation, String
395395
private void updatePreviewStatistics(VisitedObservationData processedData,
396396
AppendOverwriteMiddlewareContext context,
397397
String studyName,
398-
String unitId) {
398+
String unitId,
399+
int obsVarCount) {
399400
// Update import preview statistics and set in the context
400401
processedData.updateTally(statistic);
401402
statistic.addEnvironmentName(studyName);
402403
statistic.addObservationUnitId(unitId);
403404
statistic.addGid(context.getAppendOverwriteWorkflowContext().getPendingGermplasmByOUId().get(unitId).getBrAPIObject().getAccessionNumber());
405+
statistic.setObsVarCount(obsVarCount);
404406
context.getAppendOverwriteWorkflowContext().setStatistic(statistic);
405407
}
406408
}

src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/create/workflow/CreateNewExperimentWorkflow.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,15 @@ private Map<String, ImportPreviewStatistics> generateStatisticsMap(PendingData p
258258
.count()
259259
);
260260

261+
// Assume observationVariableName is set when pending observations are created.
262+
int obsVarCount = Math.toIntExact(
263+
observationByHash.values()
264+
.stream()
265+
.map(o -> o.getBrAPIObject().getObservationVariableName())
266+
.distinct()
267+
.count()
268+
);
269+
261270
ImportPreviewStatistics environmentStats = ImportPreviewStatistics.builder()
262271
.newObjectCount(environmentNameCounter.size())
263272
.build();
@@ -276,14 +285,18 @@ private Map<String, ImportPreviewStatistics> generateStatisticsMap(PendingData p
276285
ImportPreviewStatistics mutatedObservationStats = ImportPreviewStatistics.builder()
277286
.newObjectCount(numMutatedObservations)
278287
.build();
288+
ImportPreviewStatistics obsVarStats = ImportPreviewStatistics.builder()
289+
.newObjectCount(obsVarCount)
290+
.build();
279291

280292
return Map.of(
281293
"Environments", environmentStats,
282294
"Observation_Units", obdUnitStats,
283295
"GIDs", gidStats,
284296
"Observations", observationStats,
285297
"Existing_Observations", existingObservationStats,
286-
"Mutated_Observations", mutatedObservationStats
298+
"Mutated_Observations", mutatedObservationStats,
299+
"Observation_Variables", obsVarStats
287300
);
288301
}
289302

0 commit comments

Comments
 (0)