Skip to content

Commit c50a3a4

Browse files
committed
Change AbstractFeature Qualifiers to a key:Array from key:value biojava#302
1 parent aa6dc94 commit c50a3a4

5 files changed

Lines changed: 38 additions & 32 deletions

File tree

biojava-core/src/main/java/org/biojava/nbio/core/sequence/features/AbstractFeature.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import java.util.Comparator;
3131
import java.util.HashMap;
3232
import java.util.List;
33+
import java.util.Map;
3334

3435
/**
3536
* A feature is currently any descriptive item that can be associated with a sequence position(s)
@@ -47,7 +48,7 @@ public abstract class AbstractFeature<S extends AbstractSequence<C>, C extends C
4748
private String description = "";
4849
private String shortDescription = "";
4950
private Object userObject = null;
50-
private HashMap<String, ArrayList<Qualifier>> Qualifiers = new HashMap<String, ArrayList<Qualifier>>();
51+
private Map<String, List<Qualifier>> Qualifiers = new HashMap<String, List<Qualifier>>();
5152

5253
/**
5354
* A feature has a type and a source
@@ -271,13 +272,13 @@ public void setUserObject(Object userObject) {
271272
}
272273

273274
@Override
274-
public HashMap<String, ArrayList<Qualifier>> getQualifiers() {
275+
public Map<String, List<Qualifier>> getQualifiers() {
275276
// TODO Auto-generated method stub
276277
return Qualifiers;
277278
}
278279

279280
@Override
280-
public void setQualifiers(HashMap<String, ArrayList<Qualifier>> qualifiers) {
281+
public void setQualifiers(Map<String, List<Qualifier>> qualifiers) {
281282
// TODO Auto-generated method stub
282283
Qualifiers = qualifiers;
283284

@@ -287,11 +288,11 @@ public void setQualifiers(HashMap<String, ArrayList<Qualifier>> qualifiers) {
287288
public void addQualifier(String key, Qualifier qualifier) {
288289
// Check for key. Update list of values
289290
if (Qualifiers.containsKey(key)){
290-
ArrayList<Qualifier> vals = Qualifiers.get(key);
291+
List<Qualifier> vals = Qualifiers.get(key);
291292
vals.add(qualifier);
292293
Qualifiers.put(key, vals);
293294
} else {
294-
ArrayList<Qualifier> vals = new ArrayList<Qualifier>();
295+
List<Qualifier> vals = new ArrayList<Qualifier>();
295296
vals.add(qualifier);
296297
Qualifiers.put(key, vals);
297298
}

biojava-core/src/main/java/org/biojava/nbio/core/sequence/features/FeatureDbReferenceInfo.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.util.ArrayList;
3333
import java.util.HashMap;
3434
import java.util.List;
35+
import java.util.Map;
3536

3637
/**
3738
* It is {@link DBReferenceInfo} which implements {@link FeatureInterface}. It allows to keep a dbReferenceInfo as a feature.
@@ -49,7 +50,7 @@ public class FeatureDbReferenceInfo<S extends AbstractSequence<C>, C extends Com
4950
private String description = "";
5051
private String shortDescription = "";
5152
private Object userObject;
52-
private HashMap<String,ArrayList<Qualifier>> qualifiers = new HashMap<String,ArrayList<Qualifier>>();
53+
private Map<String, List<Qualifier>> qualifiers = new HashMap<String,List<Qualifier>>();
5354

5455

5556
public FeatureDbReferenceInfo(String database, String id) {
@@ -137,27 +138,27 @@ public void setUserObject(Object userObject) {
137138
}
138139

139140
@Override
140-
public HashMap<String, ArrayList<Qualifier>> getQualifiers() {
141+
public Map<String, List<Qualifier>> getQualifiers() {
141142
return qualifiers;
142143
}
143144

144145
@Override
145-
public void setQualifiers(HashMap<String, ArrayList<Qualifier>> qualifiers) {
146+
public void setQualifiers(Map<String, List<Qualifier>> qualifiers) {
146147
this.qualifiers = qualifiers;
147148
}
148149

149150
@Override
150151
public void addQualifier(String key, Qualifier qualifier) {
151152
if (qualifiers == null) {
152-
qualifiers = new HashMap<String, ArrayList<Qualifier>>();
153+
qualifiers = new HashMap<String, List<Qualifier>>();
153154
}
154155
// Check for key. Update list of values
155156
if (qualifiers.containsKey(key)){
156-
ArrayList<Qualifier> vals = qualifiers.get(key);
157+
List<Qualifier> vals = qualifiers.get(key);
157158
vals.add(qualifier);
158159
qualifiers.put(key, vals);
159160
} else {
160-
ArrayList<Qualifier> vals = new ArrayList<Qualifier>();
161+
List<Qualifier> vals = new ArrayList<Qualifier>();
161162
vals.add(qualifier);
162163
qualifiers.put(key, vals);
163164
}

biojava-core/src/main/java/org/biojava/nbio/core/sequence/features/FeatureInterface.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,13 @@
2525

2626
package org.biojava.nbio.core.sequence.features;
2727

28+
import java.util.List;
29+
import java.util.Map;
30+
2831
import org.biojava.nbio.core.sequence.location.template.AbstractLocation;
2932
import org.biojava.nbio.core.sequence.template.AbstractSequence;
3033
import org.biojava.nbio.core.sequence.template.Compound;
3134

32-
import java.util.ArrayList;
33-
import java.util.HashMap;
34-
import java.util.List;
35-
3635
/**
3736
* Interface class to handle describing arbitrary features. A feature can be found at multiple locations in a sequence such as
3837
* the surface of a protein where different sequence positions make up that feature. Ligand binding pocket is another example.
@@ -176,14 +175,14 @@ public interface FeatureInterface<S extends AbstractSequence<C>, C extends Compo
176175
* @return
177176
*/
178177

179-
public HashMap<String, ArrayList<Qualifier>> getQualifiers();
178+
public Map<String, List<Qualifier>> getQualifiers();
180179

181180
/**
182181
* Set the qualifiers
183182
* @param qualifiers
184183
*/
185184

186-
public void setQualifiers(HashMap<String, ArrayList<Qualifier>> qualifiers);
185+
public void setQualifiers(Map<String, List<Qualifier>> qualifiers);
187186
/**
188187
* Add a qualifier
189188
* @param qualifier

biojava-core/src/main/java/org/biojava/nbio/core/sequence/io/GenericInsdcHeaderFormat.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import java.util.ArrayList;
3535
import java.util.Collections;
3636
import java.util.Formatter;
37+
import java.util.List;
3738
import java.util.Locale;
3839

3940
/**
@@ -121,7 +122,7 @@ protected String _write_feature(FeatureInterface<AbstractSequence<C>, C> feature
121122
formatter.close();
122123

123124
//Now the qualifiers...
124-
for(ArrayList<Qualifier> qualifiers : feature.getQualifiers().values()) {
125+
for(List<Qualifier> qualifiers : feature.getQualifiers().values()) {
125126
for(Qualifier q : qualifiers){
126127
line += _write_feature_qualifier(q.getName(), q.getValue(), q.needsQuotes());
127128
}

biojava-core/src/test/java/org/biojava/nbio/core/sequence/io/GenbankReaderTest.java

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,27 +24,32 @@
2424
*/
2525
package org.biojava.nbio.core.sequence.io;
2626

27+
import static org.junit.Assert.assertNotNull;
28+
29+
import java.io.InputStream;
30+
import java.util.ArrayList;
31+
import java.util.LinkedHashMap;
32+
import java.util.List;
33+
import java.util.Map;
34+
2735
import org.biojava.nbio.core.sequence.DNASequence;
2836
import org.biojava.nbio.core.sequence.ProteinSequence;
2937
import org.biojava.nbio.core.sequence.compound.AminoAcidCompound;
3038
import org.biojava.nbio.core.sequence.compound.AminoAcidCompoundSet;
3139
import org.biojava.nbio.core.sequence.compound.DNACompoundSet;
3240
import org.biojava.nbio.core.sequence.compound.NucleotideCompound;
41+
import org.biojava.nbio.core.sequence.features.FeatureInterface;
3342
import org.biojava.nbio.core.sequence.features.Qualifier;
34-
import org.junit.*;
43+
import org.biojava.nbio.core.sequence.template.AbstractSequence;
44+
import org.junit.After;
45+
import org.junit.AfterClass;
46+
import org.junit.Assert;
47+
import org.junit.Before;
48+
import org.junit.BeforeClass;
49+
import org.junit.Test;
3550
import org.slf4j.Logger;
3651
import org.slf4j.LoggerFactory;
3752

38-
import java.io.InputStream;
39-
import java.util.ArrayList;
40-
import java.util.HashMap;
41-
import java.util.List;
42-
import java.util.LinkedHashMap;
43-
import org.biojava.nbio.core.sequence.features.FeatureInterface;
44-
import org.biojava.nbio.core.sequence.template.AbstractSequence;
45-
46-
import static org.junit.Assert.assertNotNull;
47-
4853
/**
4954
*
5055
* @author Scooter Willis <willishf at gmail dot com>
@@ -122,7 +127,6 @@ public void CDStest() throws Exception {
122127
new GenericGenbankHeaderParser<ProteinSequence, AminoAcidCompound>(),
123128
new ProteinSequenceCreator(AminoAcidCompoundSet.getAminoAcidCompoundSet())
124129
);
125-
@SuppressWarnings("unused")
126130
LinkedHashMap<String, ProteinSequence> proteinSequences = GenbankProtein.process();
127131
inStream.close();
128132

@@ -134,8 +138,8 @@ public void CDStest() throws Exception {
134138

135139
FeatureInterface<AbstractSequence<AminoAcidCompound>, AminoAcidCompound> cdsFeature = protein.getFeaturesByType("CDS").get(0);
136140
String codedBy = cdsFeature.getQualifiers().get("coded_by").get(0).getValue();
137-
HashMap<String, ArrayList<Qualifier>> quals = cdsFeature.getQualifiers();
138-
ArrayList<Qualifier> dbrefs = quals.get("db_xref");
141+
Map<String, List<Qualifier>> quals = cdsFeature.getQualifiers();
142+
List<Qualifier> dbrefs = quals.get("db_xref");
139143

140144
Assert.assertNotNull(codedBy);
141145
Assert.assertTrue(!codedBy.isEmpty());

0 commit comments

Comments
 (0)