From d0b91be8a8c5411d7773cda2d0d99f613585b00e Mon Sep 17 00:00:00 2001 From: kaloyane <kaloyane> Date: Fri, 16 Sep 2011 13:43:06 +0000 Subject: [PATCH] [LMS-2531] 1) revert previous changes. 2) Imports should treat Gene SYMBOLS as a whitespace-separated list of values (not a single code) SVN: 22972 --- ...QiagenScreeningLibraryColumnExtractor.java | 2 +- .../server/LibraryRegistrationTask.java | 52 +++++++---------- .../server/LibraryRegistrationTaskTest.java | 58 ++----------------- 3 files changed, 28 insertions(+), 84 deletions(-) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/library_tools/QiagenScreeningLibraryColumnExtractor.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/library_tools/QiagenScreeningLibraryColumnExtractor.java index 59d3fa5791c..64776f778c0 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/library_tools/QiagenScreeningLibraryColumnExtractor.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/library_tools/QiagenScreeningLibraryColumnExtractor.java @@ -109,7 +109,7 @@ public class QiagenScreeningLibraryColumnExtractor extends AbstractColumnExtract public String getGeneSymbol(String[] row) { - return getCodeValue(row, GENE_SYMBOL); + return getValue(row, GENE_SYMBOL); } public String getGeneDescription(String[] row) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/LibraryRegistrationTask.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/LibraryRegistrationTask.java index 9a6215b1b51..1160a83af40 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/LibraryRegistrationTask.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/LibraryRegistrationTask.java @@ -193,44 +193,36 @@ class LibraryRegistrationTask implements IASyncAction return; } - String normalizedValue = normalizeGeneValue(newGeneProp.getValue()); - String mergedGeneType = mergeGeneTypes(existingGene, normalizedValue); - newGeneProp.setValue(mergedGeneType); + String mergedGeneSymbols = mergeGeneSymbols(existingGene, newGeneProp.getValue()); + newGeneProp.setValue(mergedGeneSymbols); } - private String mergeGeneTypes(String existingType, String newType) + private String mergeGeneSymbols(String existingSymbols, String newSymbolString) { - if (StringUtils.isBlank(newType) || newType.equals(existingType)) + if (StringUtils.isBlank(newSymbolString) || newSymbolString.equals(existingSymbols)) { - return existingType; + return existingSymbols; } - - boolean ignoreNewType = - existingType.startsWith(newType + DELIM) || existingType.endsWith(DELIM + newType) - || (existingType.indexOf(DELIM + newType + DELIM) > 0); - - if (ignoreNewType) + + String[] newSymbols = newSymbolString.split("\\s+"); + StringBuilder result = new StringBuilder(existingSymbols); + for (String newSymbol : newSymbols) { - return existingType; - } else - { - return existingType + DELIM + newType; - } - } + if (StringUtils.isBlank(newSymbol)) + { + continue; + } + boolean alreadyExisting = + existingSymbols.startsWith(newSymbol + DELIM) || existingSymbols.endsWith(DELIM + newSymbol) + || (existingSymbols.indexOf(DELIM + newSymbol + DELIM) > 0); - /** - * Remove leading and trailing underscores. - */ - private String normalizeGeneValue(String value) - { - final String UNDERSCORE = "_"; - if (value.startsWith(UNDERSCORE) || value.endsWith(UNDERSCORE)) - { - String normalized = value.replaceAll("_*$", ""); - normalized = normalized.replaceAll("^_*", ""); - return normalized; + if (false == alreadyExisting) + { + result.append(DELIM); + result.append(newSymbol); + } } - return value; + return result.toString(); } public boolean doAction(Writer messageWriter) diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/server/LibraryRegistrationTaskTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/server/LibraryRegistrationTaskTest.java index ffe0cbb1e69..e73e7602343 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/server/LibraryRegistrationTaskTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/server/LibraryRegistrationTaskTest.java @@ -89,15 +89,15 @@ public class LibraryRegistrationTaskTest extends AssertJUnit { NewMaterial g1 = createNewGene("G1", "AB"); NewMaterial g2 = createNewGene("G2", "AB"); - NewMaterial g3 = createNewGene("G3", "AB"); - NewMaterial g4 = createNewGene("G4", "AB"); - NewMaterial g5 = createNewGene("G5", "AB"); + NewMaterial g3 = createNewGene("G3", "BC AB"); + NewMaterial g4 = createNewGene("G4", "AB AB"); + NewMaterial g5 = createNewGene("G5", "AB DDD"); final List<NewMaterial> newGenes = Arrays.asList(g1, g2, g3, g4, g5); final List<Material> existingGenes = Arrays.asList(createExistingGene("G1", "ABC A"), createExistingGene("G2", "AB"), createExistingGene("G3", "AB BC"), createExistingGene("G4", "XY AB"), - createExistingGene("G5", "XY AB YZ")); + createExistingGene("G5", "XY AB YZ DDD")); final RecordingMatcher<List<NewMaterialsWithTypes>> materialsWithTypesMatcher = new RecordingMatcher<List<NewMaterialsWithTypes>>(); @@ -130,7 +130,7 @@ public class LibraryRegistrationTaskTest extends AssertJUnit assertEquals("AB", extractGeneSymbol(g2)); assertEquals("AB BC", extractGeneSymbol(g3)); assertEquals("XY AB", extractGeneSymbol(g4)); - assertEquals("XY AB YZ", extractGeneSymbol(g5)); + assertEquals("XY AB YZ DDD", extractGeneSymbol(g5)); List<NewMaterialsWithTypes> materialsWithTypes = LibraryRegistrationTask.createMaterialsWithTypes( @@ -147,54 +147,6 @@ public class LibraryRegistrationTaskTest extends AssertJUnit } } - @Test - public void testUpdateWithUnderscores() - { - NewMaterial g1 = createNewGene("G1", "_AB_"); - NewMaterial g2 = createNewGene("G2", "_AB_"); - NewMaterial g3 = createNewGene("G3", "_AB_"); - NewMaterial g4 = createNewGene("G4", "_AB_"); - NewMaterial g5 = createNewGene("G5", "_AB_"); - - final List<NewMaterial> newGenes = Arrays.asList(g1, g2, g3, g4, g5); - final List<Material> existingGenes = - Arrays.asList(createExistingGene("G1", "ABC A"), createExistingGene("G2", "AB"), - createExistingGene("G3", "AB BC"), createExistingGene("G4", "XY AB"), - createExistingGene("G5", "XY AB YZ")); - final RecordingMatcher<List<NewMaterialsWithTypes>> materialsWithTypesMatcher = - new RecordingMatcher<List<NewMaterialsWithTypes>>(); - - task = - new LibraryRegistrationTask(SESSION_TOKEN, newGenes, null, null, commonServer, - genericServer, daoFactory); - - context.checking(new Expectations() - { - { - one(daoFactory).getEntityTypeDAO(EntityKind.MATERIAL); - will(returnValue(entityTypeDAO)); - - one(entityTypeDAO).tryToFindEntityTypeByCode( - ScreeningConstants.GENE_PLUGIN_TYPE_CODE); - will(returnValue(new MaterialTypePE())); - - one(commonServer).listMaterials(with(SESSION_TOKEN), - with(any(ListMaterialCriteria.class)), with(true)); - will(returnValue(existingGenes)); - - one(genericServer).registerOrUpdateMaterials(with(SESSION_TOKEN), - with(materialsWithTypesMatcher)); - } - }); - - task.doAction(new StringWriter()); - - assertEquals("ABC A AB", extractGeneSymbol(g1)); - assertEquals("AB", extractGeneSymbol(g2)); - assertEquals("AB BC", extractGeneSymbol(g3)); - assertEquals("XY AB", extractGeneSymbol(g4)); - assertEquals("XY AB YZ", extractGeneSymbol(g5)); - } private NewMaterial createNewGene(String code, String geneSymbol) { IEntityProperty geneSymbolProperty = createGeneSymbolProperty(geneSymbol); -- GitLab