From e5f78e9333fbec05d93a48a770f5d93052ece580 Mon Sep 17 00:00:00 2001 From: Sascha Steinbiss <ss34@sanger.ac.uk> Date: Wed, 29 Jan 2014 16:26:36 +0000 Subject: [PATCH] make aggregators tied to pre-mapping keys take precedence --- test/uk/ac/sanger/artemis/io/GFF3AttributeBuilderTest.java | 2 +- uk/ac/sanger/artemis/io/GFF3AttributeBuilder.java | 6 +++++- uk/ac/sanger/artemis/io/GFFStreamFeature.java | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/test/uk/ac/sanger/artemis/io/GFF3AttributeBuilderTest.java b/test/uk/ac/sanger/artemis/io/GFF3AttributeBuilderTest.java index 80b27334f..e65c526b6 100644 --- a/test/uk/ac/sanger/artemis/io/GFF3AttributeBuilderTest.java +++ b/test/uk/ac/sanger/artemis/io/GFF3AttributeBuilderTest.java @@ -290,6 +290,6 @@ public class GFF3AttributeBuilderTest { ab.setAggregator("attr1", testProc); ab.add("attr1", in); ab.add("attr2", in); - assertEquals(ab.toString(), "attr2=foo,bar foo,bar"); + assertEquals(ab.toString(), "attr2=>>foo<<|>>bar<< foo,bar"); } } diff --git a/uk/ac/sanger/artemis/io/GFF3AttributeBuilder.java b/uk/ac/sanger/artemis/io/GFF3AttributeBuilder.java index 2a7b25294..a46cf4378 100644 --- a/uk/ac/sanger/artemis/io/GFF3AttributeBuilder.java +++ b/uk/ac/sanger/artemis/io/GFF3AttributeBuilder.java @@ -116,6 +116,7 @@ public class GFF3AttributeBuilder { } public void add(String attr, StringVector val) { + String origAttr = attr; ArrayList<String> targetAttrs = new ArrayList<String>(); // expand attributes if (clones.containsKey(attr)) @@ -136,7 +137,10 @@ public class GFF3AttributeBuilder { for (String this_attr : targetAttrs) { String aggregatedVal; // do we have an aggregator for this type? - if (aggs.containsKey(this_attr)) { + if (aggs.containsKey(origAttr)) { + GFF3AttributeAggregator agg = aggs.get(origAttr); + aggregatedVal = agg.process(val); + } else if (aggs.containsKey(this_attr)) { GFF3AttributeAggregator agg = aggs.get(this_attr); aggregatedVal = agg.process(val); } else { diff --git a/uk/ac/sanger/artemis/io/GFFStreamFeature.java b/uk/ac/sanger/artemis/io/GFFStreamFeature.java index 522d050e6..6279f57ef 100644 --- a/uk/ac/sanger/artemis/io/GFFStreamFeature.java +++ b/uk/ac/sanger/artemis/io/GFFStreamFeature.java @@ -915,7 +915,7 @@ public class GFFStreamFeature extends SimpleDocumentFeature implements // EC numbers go into Dbxref abuf.setMapping("EC_number", "Dbxref"); - abuf.setAggregator("Dbxref", ecProc); + abuf.setAggregator("EC_number", ecProc); abuf.setGlue("Dbxref", ","); // start/end ranges -- GitLab