diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/ColorModelCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/ColorModelCommand.java index f7da34ff5dfc2d45ffe2881c0a8e5bd916aeb390..1237e8f02e4af2273bc7159866d709f8624e3231 100644 --- a/model-command/src/main/java/lcsb/mapviewer/commands/ColorModelCommand.java +++ b/model-command/src/main/java/lcsb/mapviewer/commands/ColorModelCommand.java @@ -209,6 +209,11 @@ public class ColorModelCommand extends ModelCommand { return false; } } + if (schema.getElementId() != null && !schema.getElementId().isEmpty()) { + if (!element.getElementId().equalsIgnoreCase(schema.getElementId())) { + return false; + } + } if (schema.getTypes().size() > 0) { boolean found = false; for (Class<?> clazz : schema.getTypes()) { diff --git a/model-command/src/test/java/lcsb/mapviewer/commands/ColorModelCommandTest.java b/model-command/src/test/java/lcsb/mapviewer/commands/ColorModelCommandTest.java index d523a7c938e27f7168f6e8048cbb3e44e804c92f..252d31a3c82a5053ee2b92d485921b5606bf6671 100644 --- a/model-command/src/test/java/lcsb/mapviewer/commands/ColorModelCommandTest.java +++ b/model-command/src/test/java/lcsb/mapviewer/commands/ColorModelCommandTest.java @@ -452,4 +452,46 @@ public class ColorModelCommandTest extends CommandTestFunctions { } } + + public void testAliasColoringWithUnknownElementSourceId() throws Exception { + try { + Model model = getModelForFile("testFiles/sample.xml", false); + + ColorSchema schema = new GenericColorSchema(); + schema.setElementId("xxx"); + + Collection<ColorSchema> schemas = new ArrayList<>(); + schemas.add(schema); + + ColorModelCommand factory = new ColorModelCommand(model, schemas, colorExtractor); + Map<Object, ColorSchema> map = factory.getModifiedElements(); + assertEquals(0, map.values().size()); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testAliasColoringWithElementIdMatch() throws Exception { + try { + Model model = getModelForFile("testFiles/sample.xml", false); + + ColorSchema schema = new GenericColorSchema(); + schema.setElementId(model.getElements().iterator().next().getElementId()); + + Collection<ColorSchema> schemas = new ArrayList<>(); + schemas.add(schema); + + ColorModelCommand factory = new ColorModelCommand(model, schemas, colorExtractor); + Map<Object, ColorSchema> map = factory.getModifiedElements(); + assertEquals(1, map.values().size()); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + } diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/ColorSchema.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/ColorSchema.java index e4a4b1f2e2e1dcfecfcefd5151066e4b4e7850df..0d185c7ad46077fe17412bd0779c2f0d95b94a92 100644 --- a/model/src/main/java/lcsb/mapviewer/model/map/layout/ColorSchema.java +++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/ColorSchema.java @@ -42,6 +42,8 @@ public abstract class ColorSchema implements Serializable { * Identifier of the reaction to change the color. */ private String reactionIdentifier = null; + + private String elementId = null; /** * Should the direction of highlighted reaction be reversed. @@ -467,4 +469,12 @@ public abstract class ColorSchema implements Serializable { this.modelName = modelName; } + public String getElementId() { + return elementId; + } + + public void setElementId(String elementId) { + this.elementId = elementId; + } + }