Merge develop to Release_2_8_3_Branch
[jalview.git] / src / jalview / util / DBRefUtils.java
index d6965f5..8163f05 100755 (executable)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  */
 package jalview.util;
 
-import java.util.*;
+import jalview.datamodel.DBRefEntry;
+import jalview.datamodel.PDBEntry;
+import jalview.datamodel.SequenceI;
 
-import jalview.datamodel.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Vector;
 
 public class DBRefUtils
 {
@@ -48,8 +54,8 @@ public class DBRefUtils
     {
       return dbrefs;
     }
-    Hashtable srcs = new Hashtable();
-    Vector res = new Vector();
+    Map<String, Integer> srcs = new HashMap<String, Integer>();
+    ArrayList<DBRefEntry> res = new ArrayList<DBRefEntry>();
 
     for (int i = 0; i < sources.length; i++)
     {
@@ -59,18 +65,14 @@ public class DBRefUtils
     {
       if (srcs.containsKey(dbrefs[i].getSource()))
       {
-        res.addElement(dbrefs[i]);
+        res.add(dbrefs[i]);
       }
     }
 
     if (res.size() > 0)
     {
       DBRefEntry[] reply = new DBRefEntry[res.size()];
-      for (int i = 0; i < res.size(); i++)
-      {
-        reply[i] = (DBRefEntry) res.elementAt(i);
-      }
-      return reply;
+      return res.toArray(reply);
     }
     res = null;
     // there are probable memory leaks in the hashtable!
@@ -169,7 +171,9 @@ public class DBRefUtils
           DbRefComp comparator)
   {
     if (ref == null || entry == null)
+    {
       return null;
+    }
     Vector rfs = new Vector();
     for (int i = 0; i < ref.length; i++)
     {
@@ -303,6 +307,7 @@ public class DBRefUtils
         {
           if ((refa.getMap() == null && refb.getMap() == null)
                   || (refa.getMap() != null && refb.getMap() != null))
+          {
             if ((refb.getMap().getMap() == null && refa.getMap().getMap() == null)
                     || (refb.getMap().getMap() != null
                             && refa.getMap().getMap() != null && refb
@@ -311,6 +316,7 @@ public class DBRefUtils
             {
               return true;
             }
+          }
         }
       }
       return false;
@@ -418,11 +424,15 @@ public class DBRefUtils
         // check for chaincode and mapping
         // PFAM style stockhom PDB citation
         com.stevesoft.pat.Regex r = new com.stevesoft.pat.Regex(
-                "([0-9][0-9A-Za-z]{3})\\s*(.?)\\s*;([0-9]+)-([0-9]+)");
+                "([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(" "))
@@ -433,8 +443,11 @@ public class DBRefUtils
           ref = new DBRefEntry(locsrc, version, pdbid + chaincode);
           PDBEntry pdbr = new PDBEntry();
           pdbr.setId(pdbid);
+          pdbr.setProperty(new Hashtable());
           pdbr.getProperty().put("CHAIN", chaincode);
           seq.addPDBId(pdbr);
+        } else {
+          System.err.println("Malformed PDB DR line:"+acn);
         }
       }
       else