Skip to content

Commit c9d7456

Browse files
committed
Merge branch 'master' of github.com:biojava/biojava
# By Anthony (2) and others # Via emckee2006 (13) and others * 'master' of github.com:biojava/biojava: Added class to allow writing of Group to SDF Added functionality to write groups to MDL molblocks (as strings) Added function to Group interface Added function to HetatomImpl implementation of that interface Change AbstractFeature Qualifiers to a key:Array from key:value biojava#302 change qualifier to list in AbstractFeature. Change FeatureInterface. Change FeatureDbReferenceInfo because it also uses the FeatureInterface. Note: this was not intended and may cause unexpected issues.
2 parents ce107ff + 8011c44 commit c9d7456

File tree

11 files changed

+717
-521
lines changed

11 files changed

+717
-521
lines changed

biojava-core/src/main/java/org/biojava/nbio/core/sequence/ProteinSequence.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public ProteinSequence(ProxySequenceReader<AminoAcidCompound> proxyLoader, Compo
109109

110110
// cases if a protein has more than 1 parent are not supported yet
111111
if (CDSFeatures.size() == 1) {
112-
Qualifier codedBy = CDSFeatures.get(0).getQualifiers().get("coded_by");
112+
Qualifier codedBy = CDSFeatures.get(0).getQualifiers().get("coded_by").get(0);
113113

114114
if (codedBy != null) {
115115
String codedBySeq = codedBy.getValue();

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

Lines changed: 15 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,Qualifier> Qualifiers = new HashMap<String,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,22 +272,31 @@ public void setUserObject(Object userObject) {
271272
}
272273

273274
@Override
274-
public HashMap<String, 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, Qualifier> qualifiers) {
281+
public void setQualifiers(Map<String, List<Qualifier>> qualifiers) {
281282
// TODO Auto-generated method stub
282283
Qualifiers = qualifiers;
283284

284285
}
285286

286287
@Override
287288
public void addQualifier(String key, Qualifier qualifier) {
288-
// TODO Auto-generated method stub
289-
Qualifiers.put(key, qualifier);
289+
// Check for key. Update list of values
290+
if (Qualifiers.containsKey(key)){
291+
List<Qualifier> vals = Qualifiers.get(key);
292+
vals.add(qualifier);
293+
Qualifiers.put(key, vals);
294+
} else {
295+
List<Qualifier> vals = new ArrayList<Qualifier>();
296+
vals.add(qualifier);
297+
Qualifiers.put(key, vals);
298+
}
290299

291300
}
301+
292302
}

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

Lines changed: 17 additions & 8 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,Qualifier> qualifiers = new HashMap<String,Qualifier>();
53+
private Map<String, List<Qualifier>> qualifiers = new HashMap<String,List<Qualifier>>();
5354

5455

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

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

144145
@Override
145-
public void setQualifiers(HashMap<String, 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, Qualifier>();
153+
qualifiers = new HashMap<String, List<Qualifier>>();
153154
}
154-
155-
qualifiers.put(key, qualifier);
155+
// Check for key. Update list of values
156+
if (qualifiers.containsKey(key)){
157+
List<Qualifier> vals = qualifiers.get(key);
158+
vals.add(qualifier);
159+
qualifiers.put(key, vals);
160+
} else {
161+
List<Qualifier> vals = new ArrayList<Qualifier>();
162+
vals.add(qualifier);
163+
qualifiers.put(key, vals);
164+
}
165+
156166
}
157-
158-
}
167+
}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +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.HashMap;
33-
import java.util.List;
34-
3535
/**
3636
* Interface class to handle describing arbitrary features. A feature can be found at multiple locations in a sequence such as
3737
* the surface of a protein where different sequence positions make up that feature. Ligand binding pocket is another example.
@@ -175,14 +175,14 @@ public interface FeatureInterface<S extends AbstractSequence<C>, C extends Compo
175175
* @return
176176
*/
177177

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

180180
/**
181181
* Set the qualifiers
182182
* @param qualifiers
183183
*/
184184

185-
public void setQualifiers(HashMap<String, Qualifier> qualifiers);
185+
public void setQualifiers(Map<String, List<Qualifier>> qualifiers);
186186
/**
187187
* Add a qualifier
188188
* @param qualifier

0 commit comments

Comments
 (0)