diff --git a/service/src/main/java/lcsb/mapviewer/services/utils/ColorSchemaReader.java b/service/src/main/java/lcsb/mapviewer/services/utils/ColorSchemaReader.java index 2f5ba0faa2bdd1f03652d5844cbecdb91f837a07..af525309e8582bc2d4dc5f58c798b457c04f3be2 100644 --- a/service/src/main/java/lcsb/mapviewer/services/utils/ColorSchemaReader.java +++ b/service/src/main/java/lcsb/mapviewer/services/utils/ColorSchemaReader.java @@ -820,13 +820,28 @@ public class ColorSchemaReader { } String[] columns = line.split("\t"); if (columns.length > 1) { + ColorSchemaType type = overlay.getColorSchemaType(); + if (type == null) { + Map<String, String> params = TextFileUtils + .getHeaderParametersFromFile(new ByteArrayInputStream(overlay.getInputData().getFileContent())); + String typeString = params.get(ZipEntryFileFactory.LAYOUT_HEADER_PARAM_TYPE); + if (typeString != null) { + type = ColorSchemaType.valueOf(typeString); + } else { + logger.warn("Undefined color schema type for overlay: " + overlay.getId()); + type = ColorSchemaType.GENERIC; + } + } Map<ColorSchemaColumn, Integer> schemaColumns = new HashMap<>(); - parseColumns(columns, schemaColumns, ColorSchemaType.GENERIC); + parseColumns(columns, schemaColumns, type); for (ColorSchemaColumn column : schemaColumns.keySet()) { try { Field f = ColorSchemaColumn.class.getField(column.name()); - if (column.getDepractedColumnName() != null || f.isAnnotationPresent(Deprecated.class)) { + if (f.isAnnotationPresent(Deprecated.class)) { + result.add(column); + } else if (column.getDepractedColumnName() != null + && column.getDepractedColumnName().equalsIgnoreCase(columns[schemaColumns.get(column)])) { result.add(column); } } catch (NoSuchFieldException | SecurityException e) { diff --git a/service/src/test/java/lcsb/mapviewer/services/utils/ColorSchemaReaderTest.java b/service/src/test/java/lcsb/mapviewer/services/utils/ColorSchemaReaderTest.java index f58cdd4923d1c5f3925ef44e0e9d83d14ae58f22..e97c9420f00cd4570dca48c15b4cc2777135d124 100644 --- a/service/src/test/java/lcsb/mapviewer/services/utils/ColorSchemaReaderTest.java +++ b/service/src/test/java/lcsb/mapviewer/services/utils/ColorSchemaReaderTest.java @@ -15,12 +15,14 @@ import org.junit.*; import lcsb.mapviewer.commands.ColorExtractor; import lcsb.mapviewer.commands.ColorModelCommand; import lcsb.mapviewer.common.TextFileUtils; +import lcsb.mapviewer.converter.zip.ZipEntryFileFactory; import lcsb.mapviewer.model.cache.UploadedFileEntry; import lcsb.mapviewer.model.map.MiriamData; import lcsb.mapviewer.model.map.layout.*; import lcsb.mapviewer.model.map.model.Model; import lcsb.mapviewer.model.map.species.Element; import lcsb.mapviewer.services.ServiceTestFunctions; +import lcsb.mapviewer.services.utils.data.ColorSchemaColumn; public class ColorSchemaReaderTest extends ServiceTestFunctions { Logger logger = LogManager.getLogger(ColorSchemaReaderTest.class); @@ -334,4 +336,35 @@ public class ColorSchemaReaderTest extends ServiceTestFunctions { overlay.setInputData(file); assertEquals(0, reader.getDeprecatedColumns(overlay).size()); } + + @Test + public void testGetDeprecatedColumnsForValidGeneticColumns() throws Exception { + Layout overlay = new Layout(); + overlay.setColorSchemaType(ColorSchemaType.GENETIC_VARIANT); + UploadedFileEntry file = new UploadedFileEntry(); + file.setFileContent((ColorSchemaColumn.POSITION.name() + "\tgene_name\n").getBytes("UTF-8")); + overlay.setInputData(file); + assertEquals(0, reader.getDeprecatedColumns(overlay).size()); + } + + @Test + public void testGetDeprecatedColumnsForDeprecatedGeneticColumns() throws Exception { + Layout overlay = new Layout(); + overlay.setColorSchemaType(ColorSchemaType.GENETIC_VARIANT); + UploadedFileEntry file = new UploadedFileEntry(); + file.setFileContent((ColorSchemaColumn.POSITION.name() + "\tname\n").getBytes("UTF-8")); + overlay.setInputData(file); + assertEquals(1, reader.getDeprecatedColumns(overlay).size()); + } + + @Test + public void testGetDeprecatedColumnsForOverlayWithHeader() throws Exception { + Layout overlay = new Layout(); + UploadedFileEntry file = new UploadedFileEntry(); + String content = "#" + ZipEntryFileFactory.LAYOUT_HEADER_PARAM_TYPE + "=" + ColorSchemaType.GENERIC + "\n" + + ColorSchemaColumn.VALUE.name() + "\tname\n"; + file.setFileContent((content).getBytes("UTF-8")); + overlay.setInputData(file); + assertEquals(0, reader.getDeprecatedColumns(overlay).size()); + } }