JAL-1683 replace year/version strings with tokens in source
[jalview.git] / src / jalview / util / DBRefUtils.java
index 411a7b9..9a4ffc8 100755 (executable)
@@ -1,20 +1,22 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1)
- * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
+ * This file is part of Jalview.
  * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.util;
 
@@ -30,9 +32,9 @@ public class DBRefUtils
   /**
    * 
    * @param dbrefs
-   *                Vector of DBRef objects to search
+   *          Vector of DBRef objects to search
    * @param sources
-   *                String[] array of source DBRef IDs to retrieve
+   *          String[] array of source DBRef IDs to retrieve
    * @return Vector
    */
   public static DBRefEntry[] selectRefs(DBRefEntry[] dbrefs,
@@ -79,9 +81,9 @@ public class DBRefUtils
    * isDasCoordinateSystem
    * 
    * @param string
-   *                String
+   *          String
    * @param dBRefEntry
-   *                DBRefEntry
+   *          DBRefEntry
    * @return boolean true if Source DBRefEntry is compatible with DAS
    *         CoordinateSystem name
    */
@@ -152,9 +154,9 @@ public class DBRefUtils
    * attributes.
    * 
    * @param ref
-   *                Set of references to search
+   *          Set of references to search
    * @param entry
-   *                pattern to collect - null any entry for wildcard match
+   *          pattern to collect - null any entry for wildcard match
    * @return
    */
   public static DBRefEntry[] searchRefs(DBRefEntry[] ref, DBRefEntry entry)
@@ -304,8 +306,8 @@ public class DBRefUtils
             if ((refb.getMap().getMap() == null && refa.getMap().getMap() == null)
                     || (refb.getMap().getMap() != null
                             && refa.getMap().getMap() != null && refb
-                            .getMap().getMap().getInverse().equals(
-                                    refa.getMap().getMap())))
+                            .getMap().getMap().getInverse()
+                            .equals(refa.getMap().getMap())))
             {
               return true;
             }
@@ -362,8 +364,8 @@ public class DBRefUtils
   {
     public boolean matches(DBRefEntry refa, DBRefEntry refb)
     {
-//      System.err.println("Comparing A: "+refa.getSrcAccString()+(refa.hasMap()?" has map.":"."));
-//      System.err.println("Comparing B: "+refb.getSrcAccString()+(refb.hasMap()?" has map.":"."));
+      // System.err.println("Comparing A: "+refa.getSrcAccString()+(refa.hasMap()?" has map.":"."));
+      // System.err.println("Comparing B: "+refb.getSrcAccString()+(refb.hasMap()?" has map.":"."));
       if (refa.getSource() != null && refb.getSource() != null
               && refb.getSource().equals(refa.getSource()))
       {
@@ -382,9 +384,9 @@ public class DBRefUtils
                   && (refb.getMap().getMap() == null && refa.getMap()
                           .getMap() == null)
                   || (refb.getMap().getMap() != null
-                          && refa.getMap().getMap() != null && 
-                          (refb
-                          .getMap().getMap().equals(refa.getMap().getMap())))) { // getMap().getMap().containsEither(false,refa.getMap().getMap())
+                          && refa.getMap().getMap() != null && (refb
+                          .getMap().getMap().equals(refa.getMap().getMap()))))
+          { // getMap().getMap().containsEither(false,refa.getMap().getMap())
             return true;
           }
         }
@@ -401,7 +403,7 @@ public class DBRefUtils
    * @param version
    * @param acn
    * @param seq
-   *                where to anotate with reference
+   *          where to anotate with reference
    * @return parsed version of entry that was added to seq (if any)
    */
   public static DBRefEntry parseToDbRef(SequenceI seq, String dbname,
@@ -416,11 +418,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(" "))
@@ -431,7 +437,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