diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/AbstractImageGenerator.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/AbstractImageGenerator.java index 036d3b221f8cdf631b18cf7b2a5c5c09f1f50541..bcd7da6eec806623c261579cb2fc62fa658f1f60 100644 --- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/AbstractImageGenerator.java +++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/AbstractImageGenerator.java @@ -17,6 +17,7 @@ import org.apache.log4j.Logger; import lcsb.mapviewer.commands.ColorExtractor; import lcsb.mapviewer.commands.SemanticZoomLevelMatcher; import lcsb.mapviewer.common.MimeType; +import lcsb.mapviewer.converter.graphics.AbstractImageGenerator.Params; import lcsb.mapviewer.converter.graphics.bioEntity.BioEntityConverterImpl; import lcsb.mapviewer.converter.graphics.layer.LayerConverter; import lcsb.mapviewer.model.map.compartment.Compartment; @@ -68,7 +69,7 @@ import lcsb.mapviewer.modelutils.map.ElementUtils; * */ public abstract class AbstractImageGenerator { - + /** * Class that allows to check if element is visible (or transparent) when * drawing. It's used to filter out invisible elements when drawing @@ -205,6 +206,8 @@ public abstract class AbstractImageGenerator { */ private Color maxColor = Color.BLACK; + private Color simpleColor = Color.BLACK; + /** * @param scale * scale to set @@ -533,6 +536,10 @@ public abstract class AbstractImageGenerator { return maxColor; } + public Color getSimpleColor() { + return simpleColor; + } + /** * Returns {@link Color} that should be used for drawing overlays with * minimum value. @@ -566,6 +573,17 @@ public abstract class AbstractImageGenerator { return this; } + /** + * @param simpleColor + * simpleColor to set + * @return object with all parameters + * @see #simpleColor + */ + public Params simpleColor(Color simpleColor) { + this.simpleColor = simpleColor; + return this; + } + /** * @return the sbgn * @see #sbgn @@ -585,6 +603,12 @@ public abstract class AbstractImageGenerator { return this; } + public Params colorExtractor(ColorExtractor colorExtractor) { + return minColor(colorExtractor.getMinColor()).// + maxColor(colorExtractor.getMaxColor()).// + simpleColor(colorExtractor.getSimpleColor()); + } + } /** @@ -653,7 +677,7 @@ public abstract class AbstractImageGenerator { this.level = params.getLevel(); this.scale = params.getScale(); - colorExtractor = new ColorExtractor(params.getMinColor(), params.getMaxColor()); + colorExtractor = new ColorExtractor(params.getMinColor(), params.getMaxColor(), params.getSimpleColor()); // set border frame extended by a margin border = new Rectangle2D.Double( diff --git a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/ConverterTest.java b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/ConverterTest.java index 59f4964c758ef2dd761a65abd1d6196885e54d99..13aac7e4274322704c0f9a06b4f4c245a59a844d 100644 --- a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/ConverterTest.java +++ b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/ConverterTest.java @@ -26,7 +26,7 @@ public class ConverterTest { @Test public void test() { try { - ColorExtractor colorExtractor = new ColorExtractor(Color.BLUE, Color.RED); + ColorExtractor colorExtractor = new ColorExtractor(Color.BLUE, Color.RED, Color.BLUE); new BioEntityConverterImpl(new BottomSquareCompartment("id1"), colorExtractor); new BioEntityConverterImpl(new TopSquareCompartment("id2"), colorExtractor); new BioEntityConverterImpl(new LeftSquareCompartment("id3"), colorExtractor); diff --git a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/BioEntityConverterImplTest.java b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/BioEntityConverterImplTest.java index 206b3f332fb0d63ef640fdf71e63047a057b906b..68060ae78364070ca6f49d320a3be1e10cb31bc1 100644 --- a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/BioEntityConverterImplTest.java +++ b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/BioEntityConverterImplTest.java @@ -27,7 +27,7 @@ import lcsb.mapviewer.model.map.species.GenericProtein; public class BioEntityConverterImplTest { - ColorExtractor colorExtractor = new ColorExtractor(Color.RED, Color.GREEN); + ColorExtractor colorExtractor = new ColorExtractor(Color.RED, Color.GREEN, Color.BLUE); @AfterClass public static void tearDownAfterClass() throws Exception { diff --git a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/SpeciesConverterTest.java b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/SpeciesConverterTest.java index 1bdacdc9d7ea94ec4328ca4f6305873286000a4a..3b8f0499b32142579e6ae3bd38d58823a2b4bea4 100644 --- a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/SpeciesConverterTest.java +++ b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/SpeciesConverterTest.java @@ -22,7 +22,7 @@ import lcsb.mapviewer.model.map.species.GenericProtein; public class SpeciesConverterTest { - ColorExtractor colorExtractor = new ColorExtractor(Color.RED, Color.GREEN); + ColorExtractor colorExtractor = new ColorExtractor(Color.RED, Color.GREEN, Color.BLUE); @Before public void setUp() throws Exception { diff --git a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/reaction/ReactionConverterTest.java b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/reaction/ReactionConverterTest.java index f5f24088412eedb983923420f2cb1cac7a9f5ea6..6c54f92d23fed16523dfe9f89515ff52b7483d2b 100644 --- a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/reaction/ReactionConverterTest.java +++ b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/reaction/ReactionConverterTest.java @@ -40,7 +40,7 @@ import lcsb.mapviewer.model.map.species.GenericProtein; public class ReactionConverterTest extends GraphicsTestFunctions { - ColorExtractor colorExtractor = new ColorExtractor(Color.RED, Color.GREEN); + ColorExtractor colorExtractor = new ColorExtractor(Color.RED, Color.GREEN, Color.BLUE); @Before public void setUp() throws Exception { diff --git a/frontend-js/src/main/js/ConfigurationType.js b/frontend-js/src/main/js/ConfigurationType.js index defc30720f30b40ee06e0236b61d8fd0fe4954b5..aa792f821a083b1e4dfbb66bbb720ca43a89ff2f 100644 --- a/frontend-js/src/main/js/ConfigurationType.js +++ b/frontend-js/src/main/js/ConfigurationType.js @@ -8,6 +8,7 @@ var ConfigurationType = { LEGEND_FILES : "LEGEND_FILES", MIN_COLOR_VAL : "MIN_COLOR_VAL", MAX_COLOR_VAL : "MAX_COLOR_VAL", + SIMPLE_COLOR_VAL : "SIMPLE_COLOR_VAL", SEARCH_DISTANCE : "SEARCH_DISTANCE", USER_MANUAL_FILE : "USER_MANUAL_FILE", }; diff --git a/frontend-js/src/main/js/Functions.js b/frontend-js/src/main/js/Functions.js index 14e71695de597639a821311fe11c0355169ccb25..de976d6f3778f44c0acde57220c832bea03b711a 100644 --- a/frontend-js/src/main/js/Functions.js +++ b/frontend-js/src/main/js/Functions.js @@ -171,16 +171,22 @@ Functions.overlayToColor = function(elementOverlay) { return Promise.reject("elementOverlay cannot be null!"); } else if (elementOverlay.color !== undefined && elementOverlay.color !== null) { return Promise.resolve(self.intToColorString(elementOverlay.color.value)); - } else if (elementOverlay.value !== undefined && elementOverlay.value !== null) { + } else { var ratio = 0; var promiseColor = null; - if (elementOverlay.value < 0) { - ratio = -elementOverlay.value; - promiseColor = ServerConnector.getMinOverlayColorInt(); + if (elementOverlay.value !== undefined && elementOverlay.value !== null) { + if (elementOverlay.value < 0) { + ratio = -elementOverlay.value; + promiseColor = ServerConnector.getMinOverlayColorInt(); + } else { + ratio = elementOverlay.value; + promiseColor = ServerConnector.getMaxOverlayColorInt(); + } } else { - ratio = elementOverlay.value; - promiseColor = ServerConnector.getMaxOverlayColorInt(); + ratio = 1; + promiseColor = ServerConnector.getSimpleOverlayColorInt(); } + return promiseColor.then(function(color) { ratio = 1 - ratio; @@ -207,8 +213,6 @@ Functions.overlayToColor = function(elementOverlay) { color = red | green | blue; return self.intToColorString(color); }); - } else { - return Promise.reject("elementOverlay doesn't have neither color nor value set!"); } }; diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index 98798955d4ee3490de9e7670627cc097cf20089a..45af28dfb1affff12ce7a34172a04a7d620ab6b9 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -62,6 +62,24 @@ ServerConnector.getMinOverlayColorInt = function() { }); }; +ServerConnector.getSimpleOverlayColorInt = function() { + var self = this; + var userColor; + return self.getLoggedUser().then(function(user) { + userColor = user.getSimpleColor(); + return self.getConfigurationParam(ConfigurationType.SIMPLE_COLOR_VAL); + }).then(function(systemSimpleColor) { + var color = userColor; + if (userColor === null || userColor === undefined || userColor === "") { + color = systemSimpleColor; + } + color = parseInt(color, 16); + /* jslint bitwise: true */ + color = (color & 0xFFFFFF); + return color; + }); +}; + ServerConnector.getMaxOverlayColorInt = function() { var self = this; var userColor; diff --git a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js index d88f5d762895b46811d5b759e577551252c23656..6880c24711602bbb0f30ffdfa199fcd485205cb8 100644 --- a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js @@ -161,9 +161,9 @@ OverlayPanel.prototype.createOverlayRow = function(overlay, checked) { checkbox.checked = checked; checkbox.onclick = function() { if (this.checked) { - return self.getMap().openDataOverlay(overlay.getId()); + return self.getMap().openDataOverlay(overlay.getId()).then(null, GuiConnector.alert); } else { - return self.getMap().removeSelectedLayout(overlay.getId()); + return self.getMap().removeSelectedLayout(overlay.getId()).then(null, GuiConnector.alert); } }; viewTd.appendChild(checkbox); @@ -426,7 +426,7 @@ OverlayPanel.prototype.openAddOverlayDialog = function() { content.appendChild(fileInput); content.appendChild(guiUtils.createNewLine()); - content.appendChild(guiUtils.createLabel("Or provide list of elements here: ")); + content.appendChild(guiUtils.createLabel("Or provide list of elements here (one per line): ")); content.appendChild(guiUtils.createNewLine()); contentInput = guiUtils.createTextArea(); content.appendChild(contentInput); diff --git a/frontend-js/src/main/js/map/data/User.js b/frontend-js/src/main/js/map/data/User.js index 48398247f9155faaaee8a27c86a6e1ded54e4ed3..cd41f7d7f9760ec82f889fe2618259a19fc1c792 100644 --- a/frontend-js/src/main/js/map/data/User.js +++ b/frontend-js/src/main/js/map/data/User.js @@ -13,6 +13,7 @@ function User(javaObject) { this.setPrivileges(javaObject.privileges); this.setMinColor(javaObject.minColor); this.setMaxColor(javaObject.maxColor); + this.setSimpleColor(javaObject.simpleColor); } User.prototype.setLogin = function(login) { @@ -63,6 +64,14 @@ User.prototype.getMinColor = function() { return this._minColor; }; +User.prototype.setSimpleColor = function(simpleColor) { + this._simpleColor = simpleColor; +}; + +User.prototype.getSimpleColor = function() { + return this._simpleColor; +}; + User.prototype.setMaxColor = function(maxColor) { this._maxColor = maxColor; }; diff --git a/frontend-js/src/main/js/map/window/AbstractInfoWindow.js b/frontend-js/src/main/js/map/window/AbstractInfoWindow.js index d194c3e1d4d946abb6cb94f063b5c0b066cff577..612b8b2d408395558ae6e9fc1a06d4e52f85dda9 100644 --- a/frontend-js/src/main/js/map/window/AbstractInfoWindow.js +++ b/frontend-js/src/main/js/map/window/AbstractInfoWindow.js @@ -1,5 +1,7 @@ "use strict"; +var Promise = require("bluebird"); + var logger = require('../../logger'); var Functions = require('../../Functions'); diff --git a/frontend-js/src/test/js/Functions-test.js b/frontend-js/src/test/js/Functions-test.js index 9595bf326be87b4c7f0e38f96f486ccd0a68cf7f..7951eb34d46a18abd620131c1aa744acc1faae8a 100644 --- a/frontend-js/src/test/js/Functions-test.js +++ b/frontend-js/src/test/js/Functions-test.js @@ -200,9 +200,7 @@ describe('functions', function() { it('overlayToColor with invalid arg 2', function() { return functions.overlayToColor({}).then(function(colorString) { - throw new Error('Promise was unexpectedly fulfilled. Result: ' + colorString); - }, function rejected(error) { - assert.ok(error.indexOf("elementOverlay doesn't have neither color nor value set") >= 0); + assert.ok(colorString); }); }); diff --git a/frontend-js/src/test/js/ServerConnector-test.js b/frontend-js/src/test/js/ServerConnector-test.js index cb575f3384c06e952ffdc550afeecff86a8a2011..a4bfb5cc62b4a8e0766b4cb2679789abf7e20a5f 100644 --- a/frontend-js/src/test/js/ServerConnector-test.js +++ b/frontend-js/src/test/js/ServerConnector-test.js @@ -2,6 +2,8 @@ require("./mocha-config.js"); +var Promise = require("bluebird"); + var HttpStatus = require('http-status-codes'); var Alias = require('../../main/js/map/data/Alias'); diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/ClearColorModelCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/ClearColorModelCommand.java index 891434f015e8b5a93073963b4f34532f7317c20f..64a211a66469f91641e9b2555a2a4d5af16eb6a4 100644 --- a/model-command/src/main/java/lcsb/mapviewer/commands/ClearColorModelCommand.java +++ b/model-command/src/main/java/lcsb/mapviewer/commands/ClearColorModelCommand.java @@ -26,7 +26,7 @@ public class ClearColorModelCommand extends ModelCommand { */ public ClearColorModelCommand(Model model) { super(model); - colorModelCommand = new ColorModelCommand(model, new ArrayList<>(), new ColorExtractor(Color.WHITE, Color.WHITE)); + colorModelCommand = new ColorModelCommand(model, new ArrayList<>(), new ColorExtractor(Color.WHITE, Color.WHITE, Color.WHITE)); } @Override diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/ColorExtractor.java b/model-command/src/main/java/lcsb/mapviewer/commands/ColorExtractor.java index 1a6d5d5d31976885404440319dab3dc8e4304507..0638978854921b447bdf5ec20ae3cff3865c5cff 100644 --- a/model-command/src/main/java/lcsb/mapviewer/commands/ColorExtractor.java +++ b/model-command/src/main/java/lcsb/mapviewer/commands/ColorExtractor.java @@ -24,6 +24,8 @@ public class ColorExtractor { */ private Color maxColor; + private Color simpleColor; + /** * Default constructor. * @@ -34,12 +36,13 @@ public class ColorExtractor { * Color that should be used for max values of * {@link ColorSchema#value} */ - public ColorExtractor(Color minColor, Color maxColor) { - if (minColor == null || maxColor == null) { + public ColorExtractor(Color minColor, Color maxColor, Color simpleColor) { + if (minColor == null || maxColor == null || simpleColor == null) { throw new InvalidArgumentException("Parameters cannot be null"); } this.minColor = minColor; this.maxColor = maxColor; + this.simpleColor = simpleColor; } /** @@ -53,6 +56,8 @@ public class ColorExtractor { public Color getNormalizedColor(ColorSchema colorSchema) { if (colorSchema.getColor() != null) { return colorSchema.getColor(); + } else if (colorSchema.getValue() == null) { + return simpleColor; } else { return getColorForValue(colorSchema.getValue()); } @@ -93,4 +98,8 @@ public class ColorExtractor { public Color getMaxColor() { return maxColor; } + + public Color getSimpleColor() { + return simpleColor; + } } 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 14d934650b6eec46884d8f889e27d8e8472fcbbc..8bc1cd05cba8f5a21e96fb2a700abbe6dcf54369 100644 --- a/model-command/src/test/java/lcsb/mapviewer/commands/ColorModelCommandTest.java +++ b/model-command/src/test/java/lcsb/mapviewer/commands/ColorModelCommandTest.java @@ -31,7 +31,7 @@ import lcsb.mapviewer.model.map.species.GenericProtein; public class ColorModelCommandTest extends CommandTestFunctions { Logger logger = Logger.getLogger(ColorModelCommandTest.class); - ColorExtractor colorExtractor = new ColorExtractor(Color.RED, Color.GREEN); + ColorExtractor colorExtractor = new ColorExtractor(Color.RED, Color.GREEN, Color.BLUE); @Before public void setUp() throws Exception { diff --git a/model/src/main/java/lcsb/mapviewer/model/user/ConfigurationElementType.java b/model/src/main/java/lcsb/mapviewer/model/user/ConfigurationElementType.java index 71e8845ee329681ac3b0d57562ef0826288abc30..8ff0f95344526a7e9e12cd455af360f510d71a1d 100644 --- a/model/src/main/java/lcsb/mapviewer/model/user/ConfigurationElementType.java +++ b/model/src/main/java/lcsb/mapviewer/model/user/ConfigurationElementType.java @@ -126,7 +126,12 @@ public enum ConfigurationElementType { /** * Color used for positive overlay values. */ - MAX_COLOR_VAL("Overlay color for postive values", "0000FF", ConfigurationElementEditType.COLOR, false); + MAX_COLOR_VAL("Overlay color for postive values", "0000FF", ConfigurationElementEditType.COLOR, false), + + /** + * Color used for undefined overlay values. + */ + SIMPLE_COLOR_VAL("Overlay color when no values are defined", "00FF00", ConfigurationElementEditType.COLOR, false); /** * Default value of the configuration parameter (it will be used only when diff --git a/model/src/main/java/lcsb/mapviewer/model/user/User.java b/model/src/main/java/lcsb/mapviewer/model/user/User.java index 3cc421f8f51a6d229836e00d244be48821b286f4..216c7837dbf52005d912857520f45af158284698 100644 --- a/model/src/main/java/lcsb/mapviewer/model/user/User.java +++ b/model/src/main/java/lcsb/mapviewer/model/user/User.java @@ -80,6 +80,13 @@ public class User implements Serializable { */ private Color maxColor; + /** + * User defined color overriding system + * {@link ConfigurationElementType#SIMPLE_COLOR_VAL}. Used for coloring + * overlays without values and colors. + */ + private Color simpleColor; + /** * Is the user removed. */ @@ -309,4 +316,21 @@ public class User implements Serializable { this.maxColor = maxColor; } + /** + * @return the simpleColor + * @see #simpleColor + */ + public Color getSimpleColor() { + return simpleColor; + } + + /** + * @param simpleColor + * the simpleColor to set + * @see #simpleColor + */ + public void setSimpleColor(Color simpleColor) { + this.simpleColor = simpleColor; + } + } diff --git a/persist/src/db/11/fix_db_20170725.sql b/persist/src/db/11/fix_db_20170725.sql new file mode 100644 index 0000000000000000000000000000000000000000..37a66ace4e369cad3a43817851e970acbd5eae04 --- /dev/null +++ b/persist/src/db/11/fix_db_20170725.sql @@ -0,0 +1,2 @@ +--simple color for coloring +alter table user_table add column simplecolor bytea; \ No newline at end of file diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java index cba3a43808693c1ebe96e3858c2a5b76aa157f2a..41af2e14c2428ce1486c00498ab8f8ef756260e7 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java @@ -313,8 +313,7 @@ public class ProjectRestImpl extends BaseRestImpl { level(level - Configuration.MIN_ZOOM_LEVEL).// nested(false).// automatically set nested view as invalid scale(scale).// - minColor(colorExtractor.getMinColor()).// - maxColor(colorExtractor.getMaxColor()).// + colorExtractor(colorExtractor).// sbgn(topModel.getProject().isSbgnFormat()).// model(colorModel); if (overlay != null) { diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java index 1aef78c3c4651cfd214cb0854984783a3ef8f0ce..bcd07b094b7ae9854fe2952e8f656493de13458f 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java @@ -76,6 +76,7 @@ public class UserRestImpl { columnsSet.add("email"); columnsSet.add("minColor"); columnsSet.add("maxColor"); + columnsSet.add("simpleColor"); columnsSet.add("removed"); columnsSet.add("privileges"); } else { @@ -105,6 +106,8 @@ public class UserRestImpl { value = user.getMinColor(); } else if (column.equals("maxcolor")) { value = user.getMaxColor(); + } else if (column.equals("simplecolor")) { + value = user.getSimpleColor(); } else if (column.equals("removed")) { value = user.isRemoved(); } else if (column.equals("privileges") && admin) { diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java b/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java index d1b2df719b2095c1424414e012dd19b1af3183d7..78513655c609304555e06f3ca6582b3cec52fca2 100644 --- a/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java +++ b/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java @@ -935,7 +935,7 @@ public class LayoutService implements ILayoutService { ColorSchemaReader reader = new ColorSchemaReader(); Collection<ColorSchema> schemas = reader.readColorSchema(getInputDataForLayout(layoutId, token)); // colors here are not important - ColorModelCommand command = new ColorModelCommand(model, schemas, new ColorExtractor(Color.BLACK, Color.BLACK)); + ColorModelCommand command = new ColorModelCommand(model, schemas, new ColorExtractor(Color.BLACK, Color.BLACK, Color.BLACK)); LightLayoutAliasViewFactory factory = new LightLayoutAliasViewFactory(); List<LightLayoutAliasView> result = new ArrayList<>(); for (Map.Entry<Object, ColorSchema> entry : command.getModifiedElements().entrySet()) { @@ -957,7 +957,7 @@ public class LayoutService implements ILayoutService { ColorSchemaReader reader = new ColorSchemaReader(); Collection<ColorSchema> schemas = reader.readColorSchema(getInputDataForLayout(layoutId, token)); // colors here are not important - ColorModelCommand command = new ColorModelCommand(model, schemas, new ColorExtractor(Color.BLACK, Color.BLACK)); + ColorModelCommand command = new ColorModelCommand(model, schemas, new ColorExtractor(Color.BLACK, Color.BLACK, Color.BLACK)); LightLayoutReactionViewFactory factory = new LightLayoutReactionViewFactory(); List<LightLayoutReactionView> result = new ArrayList<>(); for (Map.Entry<Object, ColorSchema> entry : command.getModifiedElements().entrySet()) { @@ -980,7 +980,7 @@ public class LayoutService implements ILayoutService { Collection<ColorSchema> schemas; schemas = reader.readColorSchema(getInputDataForLayout(layoutId, token)); // colors here are not important - ColorModelCommand command = new ColorModelCommand(model, schemas, new ColorExtractor(Color.BLACK, Color.BLACK)); + ColorModelCommand command = new ColorModelCommand(model, schemas, new ColorExtractor(Color.BLACK, Color.BLACK, Color.BLACK)); return command.getModifiedElements(); } catch (InvalidColorSchemaException e) { throw new InvalidStateException(e); @@ -1002,7 +1002,7 @@ public class LayoutService implements ILayoutService { Collection<ColorSchema> schemas; schemas = reader.readColorSchema(getInputDataForLayout(layoutId, token)); // colors here are not important - ColorModelCommand command = new ColorModelCommand(model, schemas, new ColorExtractor(Color.BLACK, Color.BLACK)); + ColorModelCommand command = new ColorModelCommand(model, schemas, new ColorExtractor(Color.BLACK, Color.BLACK, Color.BLACK)); FullLayoutAliasViewFactory factory = new FullLayoutAliasViewFactory(); List<FullLayoutAliasView> result = new ArrayList<>(); @@ -1059,7 +1059,7 @@ public class LayoutService implements ILayoutService { Collection<ColorSchema> schemas; schemas = reader.readColorSchema(getInputDataForLayout(layoutId, token)); // colors here are not important - ColorModelCommand command = new ColorModelCommand(model, schemas, new ColorExtractor(Color.BLACK, Color.BLACK)); + ColorModelCommand command = new ColorModelCommand(model, schemas, new ColorExtractor(Color.BLACK, Color.BLACK, Color.BLACK)); FullLayoutAliasViewFactory factory = new FullLayoutAliasViewFactory(); for (Map.Entry<Object, ColorSchema> entry : command.getModifiedElements().entrySet()) { @@ -1085,7 +1085,7 @@ public class LayoutService implements ILayoutService { Collection<ColorSchema> schemas; schemas = reader.readColorSchema(getInputDataForLayout(layoutId, token)); // colors here are not important - ColorModelCommand command = new ColorModelCommand(model, schemas, new ColorExtractor(Color.BLACK, Color.BLACK)); + ColorModelCommand command = new ColorModelCommand(model, schemas, new ColorExtractor(Color.BLACK, Color.BLACK, Color.BLACK)); FullLayoutReactionViewFactory factory = new FullLayoutReactionViewFactory(); for (Map.Entry<Object, ColorSchema> entry : command.getModifiedElements().entrySet()) { diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java b/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java index 15e752a460c776dedfb1db301500c70e9e53a94c..25fa736447967dcb84d4d2f063ccdb70fe10b25a 100644 --- a/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java +++ b/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java @@ -473,11 +473,13 @@ public class UserService implements IUserService { public ColorExtractor getColorExtractorForUser(User loggedUser) { Color colorMin = null; Color colorMax = null; + Color colorSimple = null; if (loggedUser != null) { User dbUser = getUserById(loggedUser.getId()); if (dbUser != null) { colorMin = dbUser.getMinColor(); colorMax = dbUser.getMaxColor(); + colorSimple = dbUser.getSimpleColor(); } } ColorParser parser = new ColorParser(); @@ -488,7 +490,10 @@ public class UserService implements IUserService { if (colorMax == null) { colorMax = parser.parse(configurationService.getConfigurationValue(ConfigurationElementType.MAX_COLOR_VAL)); } - return new ColorExtractor(colorMin, colorMax); + if (colorSimple == null) { + colorSimple = parser.parse(configurationService.getConfigurationValue(ConfigurationElementType.SIMPLE_COLOR_VAL)); + } + return new ColorExtractor(colorMin, colorMax, colorSimple); } /** 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 94efeff004bd03caad4b272cf9f8d159c8d6bfa1..3d856d3868a883178a88bcc15e7f538993fa766c 100644 --- a/service/src/main/java/lcsb/mapviewer/services/utils/ColorSchemaReader.java +++ b/service/src/main/java/lcsb/mapviewer/services/utils/ColorSchemaReader.java @@ -573,7 +573,7 @@ public class ColorSchemaReader { String[] values = line.split("\t", -1); ColorSchema schema = new GenericColorSchema(); processNameColumn(schema, values[0]); - schema.setValue(1.0); + schema.setDescription(""); result.add(schema); line = br.readLine(); } diff --git a/service/src/test/java/lcsb/mapviewer/services/impl/LayoutServiceTest2.java b/service/src/test/java/lcsb/mapviewer/services/impl/LayoutServiceTest2.java index 3d409a1875ba3518299d2c78f88b95ec5cc1d51c..0d39e9cb6d0e88baaf86092b6775bf51f84a09f7 100644 --- a/service/src/test/java/lcsb/mapviewer/services/impl/LayoutServiceTest2.java +++ b/service/src/test/java/lcsb/mapviewer/services/impl/LayoutServiceTest2.java @@ -37,7 +37,7 @@ import lcsb.mapviewer.services.utils.data.ColorSchemaType; public class LayoutServiceTest2 { Logger logger = Logger.getLogger(LayoutServiceTest2.class); - ColorExtractor colorExtractor = new ColorExtractor(Color.RED, Color.GREEN); + ColorExtractor colorExtractor = new ColorExtractor(Color.RED, Color.GREEN, Color.BLUE); @Before public void setUp() throws Exception { 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 38c9407b576bc47ea3f6eb74f173dff5c0cee8e3..4553b58724e916c312df2e16878c6d6076091161 100644 --- a/service/src/test/java/lcsb/mapviewer/services/utils/ColorSchemaReaderTest.java +++ b/service/src/test/java/lcsb/mapviewer/services/utils/ColorSchemaReaderTest.java @@ -224,7 +224,7 @@ public class ColorSchemaReaderTest extends ServiceTestFunctions { @Test public void testColoring3() throws Exception { try { - ColorExtractor colorExtractor = new ColorExtractor(Color.RED, Color.GREEN); + ColorExtractor colorExtractor = new ColorExtractor(Color.RED, Color.GREEN, Color.BLUE); Model model = getModelForFile("testFiles/coloring/protein_to_color.xml", false);