- * accession ID only must be identical.
- */
- public static DbRefComp matchId = new DbRefComp() {
- @Override
- public boolean matches(DBRefEntry refa, DBRefEntry refb, int mode) {
- if (refa.getAccessionId() != null && refb.getAccessionId() != null
- && refb.getAccessionId().equals(refa.getAccessionId())) {
- return true;
- }
- return false;
- }
- };
-
- /**
- * Parses a DBRefEntry and adds it to the sequence, also a PDBEntry if the
- * database is PDB.
- * <p>
- * Used by file parsers to generate DBRefs from annotation within file (eg
- * Stockholm)
- *
- * @param dbname
- * @param version
- * @param acn
- * @param seq where to annotate with reference
- * @return parsed version of entry that was added to seq (if any)
- */
- public static DBRefEntry parseToDbRef(SequenceI seq, String dbname, String version, String acn) {
- DBRefEntry ref = null;
- if (dbname != null) {
- String locsrc = DBRefUtils.getCanonicalName(dbname);
- if (locsrc.equals(DBRefSource.PDB)) {
- /*
- * Check for PFAM style stockhom PDB accession id citation e.g. "1WRI A; 7-80;"
- */
- Regex r = new com.stevesoft.pat.Regex("([0-9][0-9A-Za-z]{3})\\s*(.?)\\s*;\\s*([0-9]+)-([0-9]+)");
- if (r.search(acn.trim())) {
- String pdbid = r.stringMatched(1);
- String chaincode = r.stringMatched(2);
- if (chaincode == null) {
- chaincode = " ";
- }
- // String mapstart = r.stringMatched(3);
- // String mapend = r.stringMatched(4);
- if (chaincode.equals(" ")) {
- chaincode = "_";
- }
- // construct pdb ref.
- ref = new DBRefEntry(locsrc, version, pdbid + chaincode);
- PDBEntry pdbr = new PDBEntry();
- pdbr.setId(pdbid);
- pdbr.setType(PDBEntry.Type.PDB);
- pdbr.setChainCode(chaincode);
- seq.addPDBId(pdbr);
- } else {
- System.err.println("Malformed PDB DR line:" + acn);
- }
- } else {
- // default:
- ref = new DBRefEntry(locsrc, version, acn);
- }
- }
- if (ref != null) {
- seq.addDBRef(ref);
- }
- return ref;
- }
+ * Returns the (possibly empty) list of those supplied dbrefs which have the
+ * specified source database, with a case-insensitive match of source name
+ *
+ * @param dbRefs
+ * @param source
+ * @return
+ */
+ public static List<DBRefEntry> searchRefsForSource(DBRefEntry[] dbRefs,
+ String source)
+ {
+ List<DBRefEntry> matches = new ArrayList<>();
+ if (dbRefs != null && source != null)
+ {
+ for (DBRefEntry dbref : dbRefs)
+ {
+ if (source.equalsIgnoreCase(dbref.getSource()))
+ {
+ matches.add(dbref);
+ }
+ }
+ }
+ return matches;
+ }