diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/AnnotationParameters.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/AnnotationParameters.java index b97bd690b41b88f2be7f53e158aad68be24252db..915148448b690b991d7bf6daf6320c4abd156739 100644 --- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/AnnotationParameters.java +++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/AnnotationParameters.java @@ -54,13 +54,21 @@ public class AnnotationParameters { } public boolean hasOutputField(BioEntityField field) { + for (AnnotatorOutputParameter annotatorParameter : getOutputParameters()) { + if (annotatorParameter.getField() != null && annotatorParameter.getField().equals(field)) { + return true; + } + } + return false; + } + + public List<AnnotatorOutputParameter> getOutputParameters() { + List<AnnotatorOutputParameter> result = new ArrayList<>(); for (AnnotatorParameter annotatorParameter : annotatorParameters) { if (annotatorParameter instanceof AnnotatorOutputParameter) { - if (((AnnotatorOutputParameter) annotatorParameter).getField().equals(field)) { - return true; - } + result.add((AnnotatorOutputParameter) annotatorParameter); } } - return false; + return result; } } diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ElementAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ElementAnnotator.java index ce4b4cde91af941bc39f0f9d7c4a49a355508896..4861253b15667b781811999f5b53a4a2ce086167 100644 --- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ElementAnnotator.java +++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ElementAnnotator.java @@ -109,6 +109,9 @@ public abstract class ElementAnnotator extends CachableInterface { if (inputParameters.size() == 0) { inputParameters = getAvailableInputParameters(); } + if (parameters.getOutputParameters().size()==0) { + parameters.addAnnotatorParameters(this.getAvailableOuputProperties()); + } List<Set<Object>> inputs = getInputsParameters(bioEntity, inputParameters); for (Set<Object> inputSet : inputs) { boolean annotated = false; @@ -273,14 +276,16 @@ public abstract class ElementAnnotator extends CachableInterface { * @param prefix * prefix used in warnings */ - protected void setSymbol(BioEntity element, String symbol, String prefix) { - if (element.getSymbol() == null || element.getSymbol().equals("") || element.getSymbol().equals(symbol)) { - element.setSymbol(symbol); - } else { - logger.warn(prefix + "Symbols doesn't match: \"" + symbol + "\", \"" + element.getSymbol() + "\""); - } - if (element.getName() == null || element.getName().equals("")) { - element.setName(symbol); + protected void setSymbol(BioEntity element, String symbol, String prefix, AnnotationParameters parameters) { + if (parameters.hasOutputField(BioEntityField.SYMBOL)) { + if (element.getSymbol() == null || element.getSymbol().equals("") || element.getSymbol().equals(symbol)) { + element.setSymbol(symbol); + } else { + logger.warn(prefix + "Symbols doesn't match: \"" + symbol + "\", \"" + element.getSymbol() + "\""); + } + if (element.getName() == null || element.getName().equals("")) { + element.setName(symbol); + } } } diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotator.java index 4d32f04c70bda29d7e3c47ebb5a84b5cf0187638..a75e4bdbec1c9c34ba8ab0871fc8b8ebe3ed0dce 100644 --- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotator.java +++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotator.java @@ -143,7 +143,7 @@ public class EnsemblAnnotator extends ElementAnnotator implements IExternalServi if (identifier.getDataType().equals(MiriamType.ENSEMBL)) { ElementUtils eu = new ElementUtils(); String prefix = eu.getElementTag(element); - return annotateElement(element, identifier, prefix); + return annotateElement(element, identifier, prefix, parameters); } else { throw new NotImplementedException(); } @@ -161,7 +161,7 @@ public class EnsemblAnnotator extends ElementAnnotator implements IExternalServi * @throws AnnotatorException * thrown when there is a problem with annotating element */ - private boolean annotateElement(BioEntity annotatedObject, MiriamData entrezMiriamData, String prefix) + private boolean annotateElement(BioEntity annotatedObject, MiriamData entrezMiriamData, String prefix, AnnotationParameters parameters) throws AnnotatorException { String query = REST_SERVICE_URL + entrezMiriamData.getResource() + URL_SUFFIX; try { @@ -188,7 +188,7 @@ public class EnsemblAnnotator extends ElementAnnotator implements IExternalServi } String symbol = super.getNodeAttr("display_id", node); if (symbol != null) { - setSymbol(annotatedObject, symbol, prefix); + setSymbol(annotatedObject, symbol, prefix, parameters); } String fullName = super.getNodeAttr("description", node); if (fullName != null) { diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EntrezAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EntrezAnnotator.java index 91d3f9a88b9cf6940acd1de5f38efa808b61caff..13aee3027c5d7e68e575bc844c5f8c996dfe3df1 100644 --- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EntrezAnnotator.java +++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EntrezAnnotator.java @@ -147,7 +147,7 @@ public class EntrezAnnotator extends ElementAnnotator implements IExternalServic if (identifier.getDataType().equals(MiriamType.ENTREZ)) { ElementUtils eu = new ElementUtils(); String prefix = eu.getElementTag(element); - return annotateElement(element, identifier, prefix); + return annotateElement(element, identifier, prefix, parameters); } else { throw new NotImplementedException(); } @@ -165,11 +165,11 @@ public class EntrezAnnotator extends ElementAnnotator implements IExternalServic * @throws AnnotatorException * thrown when there is a problem with annotating element */ - private boolean annotateElement(BioEntity element, MiriamData entrezMiriamData, String prefix) + private boolean annotateElement(BioEntity element, MiriamData entrezMiriamData, String prefix, AnnotationParameters parameters) throws AnnotatorException { EntrezData data = getEntrezForMiriamData(entrezMiriamData, prefix); if (data != null) { - setSymbol(element, data.getSymbol(), prefix); + setSymbol(element, data.getSymbol(), prefix, parameters); setFullName((Element) element, data.getFullName(), prefix); diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/HgncAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/HgncAnnotator.java index a412585c7e38fdd7aac503125aa8319f6031e467..16f15fe7c0529c7c41f14f2e505372a87fc166e1 100644 --- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/HgncAnnotator.java +++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/HgncAnnotator.java @@ -150,7 +150,7 @@ public class HgncAnnotator extends ElementAnnotator implements IExternalService // hgnc_symbol in the element element.addMiriamData(createMiriamData(MiriamType.HGNC_SYMBOL, getNodeValue(node))); } - setSymbol(element, getNodeValue(node), prefix); + setSymbol(element, getNodeValue(node), prefix, parameters); } else if (type.equals("name")) { setFullName((Element) element, getNodeValue(node), prefix); } diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ElementAnnotatorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ElementAnnotatorTest.java index df2ede52f998539cf66a99a6a536abbb514956b7..f958df441ac04667f39880a7ed97d465ba1ea7aa 100644 --- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ElementAnnotatorTest.java +++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ElementAnnotatorTest.java @@ -64,7 +64,7 @@ public class ElementAnnotatorTest extends AnnotationTestFunctions { public void testSetNotMatchingSymbol() { GenericProtein species = new GenericProtein("id"); species.setSymbol("X"); - annotator.setSymbol(species, "Y", null); + annotator.setSymbol(species, "Y", null, allOutputFieldsAndAnnotations); assertEquals(1, getWarnings().size()); }