From 0e6ce2e2b83ab3d2bbf49343d27ac81373920ef1 Mon Sep 17 00:00:00 2001 From: Ruslan Forostianov Date: Thu, 11 Jul 2024 20:58:23 +0200 Subject: [PATCH] Extract db communicating methods out of the constructor introduce initialise() method --- .../scripts/GeneticAlterationImporter.java | 11 ++++- .../GeneticAlterationIncrementalImporter.java | 49 +++++++++++-------- .../scripts/ImportCnaDiscreteLongData.java | 1 + .../portal/scripts/ImportTabDelimData.java | 2 + 4 files changed, 40 insertions(+), 23 deletions(-) diff --git a/src/main/java/org/mskcc/cbio/portal/scripts/GeneticAlterationImporter.java b/src/main/java/org/mskcc/cbio/portal/scripts/GeneticAlterationImporter.java index c076a411..a9cb4e63 100644 --- a/src/main/java/org/mskcc/cbio/portal/scripts/GeneticAlterationImporter.java +++ b/src/main/java/org/mskcc/cbio/portal/scripts/GeneticAlterationImporter.java @@ -25,10 +25,9 @@ protected GeneticAlterationImporter() {} public GeneticAlterationImporter( int geneticProfileId, List orderedSampleList - ) throws DaoException { + ) { this.geneticProfileId = geneticProfileId; this.orderedSampleList = orderedSampleList; - storeOrderedSampleList(); } protected void storeOrderedSampleList() throws DaoException { @@ -93,5 +92,13 @@ private void ensureNumberOfValuesIsCorrect(int valuesNumber) { } } + + public void initialise() { + try { + storeOrderedSampleList(); + } catch (DaoException e) { + throw new RuntimeException(e); + } + } public void finalise() { } } diff --git a/src/main/java/org/mskcc/cbio/portal/scripts/GeneticAlterationIncrementalImporter.java b/src/main/java/org/mskcc/cbio/portal/scripts/GeneticAlterationIncrementalImporter.java index 755ae0ee..b6164d0b 100644 --- a/src/main/java/org/mskcc/cbio/portal/scripts/GeneticAlterationIncrementalImporter.java +++ b/src/main/java/org/mskcc/cbio/portal/scripts/GeneticAlterationIncrementalImporter.java @@ -17,34 +17,15 @@ public class GeneticAlterationIncrementalImporter extends GeneticAlterationImpor private final List fileOrderedSampleList; private final DaoGeneticAlteration daoGeneticAlteration = DaoGeneticAlteration.getInstance(); - private final HashMap> geneticAlterationMap; + private HashMap> geneticAlterationMap; public GeneticAlterationIncrementalImporter( int geneticProfileId, List fileOrderedSampleList - ) throws DaoException { + ) { this.geneticProfileId = geneticProfileId; - this.geneticAlterationMap = daoGeneticAlteration.getGeneticAlterationMapForEntityIds(geneticProfileId, null); this.fileOrderedSampleList = fileOrderedSampleList; - - ArrayList savedOrderedSampleList = DaoGeneticProfileSamples.getOrderedSampleList(this.geneticProfileId); - int initialOrderSampleListSize = savedOrderedSampleList.size(); - geneticAlterationMap.forEach((geneticEntityId, sampleToValue) -> { - if (sampleToValue.size() != initialOrderSampleListSize) { - throw new IllegalStateException("Number of samples (" - + sampleToValue.size() + ") for genetic entity with id " - + geneticEntityId + " does not match with the number in the preexisting sample list (" - + initialOrderSampleListSize + ")."); - } - }); - // add all new sample ids at the end - this.orderedSampleList = new ArrayList<>(savedOrderedSampleList); - List newSampleIds = this.fileOrderedSampleList.stream().filter(sampleId -> !savedOrderedSampleList.contains(sampleId)).toList(); - this.orderedSampleList.addAll(newSampleIds); - DaoGeneticProfileSamples.deleteAllSamplesInGeneticProfile(this.geneticProfileId); - this.storeOrderedSampleList(); - daoGeneticAlteration.deleteAllRecordsInGeneticProfile(this.geneticProfileId); } @Override @@ -60,6 +41,32 @@ public boolean store(int geneticEntityId, String[] values) throws DaoException { return super.store(geneticEntityId, expandedValues); } + @Override + public void initialise() { + try { + this.geneticAlterationMap = daoGeneticAlteration.getGeneticAlterationMapForEntityIds(geneticProfileId, null); + ArrayList savedOrderedSampleList = DaoGeneticProfileSamples.getOrderedSampleList(this.geneticProfileId); + int initialOrderSampleListSize = savedOrderedSampleList.size(); + geneticAlterationMap.forEach((geneticEntityId, sampleToValue) -> { + if (sampleToValue.size() != initialOrderSampleListSize) { + throw new IllegalStateException("Number of samples (" + + sampleToValue.size() + ") for genetic entity with id " + + geneticEntityId + " does not match with the number in the preexisting sample list (" + + initialOrderSampleListSize + ")."); + } + }); + // add all new sample ids at the end + this.orderedSampleList = new ArrayList<>(savedOrderedSampleList); + List newSampleIds = this.fileOrderedSampleList.stream().filter(sampleId -> !savedOrderedSampleList.contains(sampleId)).toList(); + this.orderedSampleList.addAll(newSampleIds); + DaoGeneticProfileSamples.deleteAllSamplesInGeneticProfile(this.geneticProfileId); + daoGeneticAlteration.deleteAllRecordsInGeneticProfile(this.geneticProfileId); + } catch (DaoException e) { + throw new RuntimeException(e); + } + super.initialise(); + } + @Override public void finalise() { expandRemainingGeneticEntityTabDelimitedRowsWithBlankValue(); diff --git a/src/main/java/org/mskcc/cbio/portal/scripts/ImportCnaDiscreteLongData.java b/src/main/java/org/mskcc/cbio/portal/scripts/ImportCnaDiscreteLongData.java index 765986b5..bcad7ee8 100644 --- a/src/main/java/org/mskcc/cbio/portal/scripts/ImportCnaDiscreteLongData.java +++ b/src/main/java/org/mskcc/cbio/portal/scripts/ImportCnaDiscreteLongData.java @@ -153,6 +153,7 @@ private void doImportData() throws Exception { orderedSampleList = newArrayList(toImport.eventsTable.columnKeySet()); this.geneticAlterationGeneImporter = isIncrementalUpdateMode ? new GeneticAlterationIncrementalImporter(geneticProfileId, orderedSampleList) : new GeneticAlterationImporter(geneticProfileId, orderedSampleList); + geneticAlterationGeneImporter.initialise(); DaoSampleProfile.upsertSampleToProfileMapping(orderedSampleList, geneticProfileId, genePanelId); for (Long entrezId : toImport.eventsTable.rowKeySet()) { diff --git a/src/main/java/org/mskcc/cbio/portal/scripts/ImportTabDelimData.java b/src/main/java/org/mskcc/cbio/portal/scripts/ImportTabDelimData.java index 37736a96..a081ee35 100644 --- a/src/main/java/org/mskcc/cbio/portal/scripts/ImportTabDelimData.java +++ b/src/main/java/org/mskcc/cbio/portal/scripts/ImportTabDelimData.java @@ -305,6 +305,8 @@ private void doImportData() throws IOException, DaoException { this.geneticAlterationImporter = isIncrementalUpdateMode ? new GeneticAlterationIncrementalImporter(geneticProfileId, orderedSampleList) : new GeneticAlterationImporter(geneticProfileId, orderedSampleList); + geneticAlterationImporter.initialise(); + //cache for data found in cna_event' table: Set existingCnaEvents = new HashSet<>(); if (isDiscretizedCnaProfile) {