JAL-3691 toUpperCase(Locale.ROOT) for all standard file format operations
[jalview.git] / src / jalview / io / JPredFile.java
index d9836c1..8f93b48 100755 (executable)
@@ -1,19 +1,22 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
- * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  * 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.
- * 
+ * 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 Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 /**
  * PredFile.java
  */
 package jalview.io;
 
-import java.io.*;
-import java.util.*;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.xml.sax.SAXException;
+import jalview.datamodel.Alignment;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.Sequence;
+import jalview.datamodel.SequenceI;
+import jalview.util.MessageManager;
 
-import fr.orsay.lri.varna.exceptions.ExceptionFileFormatOrSyntax;
-import fr.orsay.lri.varna.exceptions.ExceptionLoadingFailed;
-import fr.orsay.lri.varna.exceptions.ExceptionPermissionDenied;
-
-import jalview.datamodel.*;
+import java.io.IOException;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.StringTokenizer;
+import java.util.Vector;
 
 /**
  * Parser for the JPred/JNet concise format. This is a series of CSV lines, each
@@ -69,24 +71,19 @@ public class JPredFile extends AlignFile
    * 
    * @param inFile
    *          DOCUMENT ME!
-   * @param type
+   * @param sourceType
    *          DOCUMENT ME!
    * 
    * @throws IOException
    *           DOCUMENT ME!
- * @throws SAXException 
- * @throws ParserConfigurationException 
- * @throws ExceptionFileFormatOrSyntax 
- * @throws ExceptionLoadingFailed 
- * @throws ExceptionPermissionDenied 
- * @throws InterruptedException 
    */
-  public JPredFile(String inFile, String type) throws IOException, ExceptionFileFormatOrSyntax, ParserConfigurationException, SAXException, ExceptionPermissionDenied, ExceptionLoadingFailed, InterruptedException
+  public JPredFile(String inFile, DataSourceType sourceType)
+          throws IOException
   {
-    super(inFile, type);
+    super(inFile, sourceType);
   }
 
-  public JPredFile(FileParse source) throws IOException, ExceptionFileFormatOrSyntax, ParserConfigurationException, SAXException, ExceptionPermissionDenied, ExceptionLoadingFailed, InterruptedException
+  public JPredFile(FileParse source) throws IOException
   {
     super(source);
   }
@@ -135,6 +132,7 @@ public class JPredFile extends AlignFile
   /**
    * DOCUMENT ME!
    */
+  @Override
   public void initData()
   {
     super.initData();
@@ -146,6 +144,7 @@ public class JPredFile extends AlignFile
   /**
    * parse a JPred concise file into a sequence-alignment like object.
    */
+  @Override
   public void parse() throws IOException
   {
     // JBPNote log.System.out.println("all read in ");
@@ -209,8 +208,8 @@ public class JPredFile extends AlignFile
           {
             ascore = symbols.nextToken();
 
-            Float score = new Float(ascore);
-            scores.addElement((Object) score);
+            Float score = Float.valueOf(ascore);
+            scores.addElement(score);
           }
 
           Scores.put(id, scores);
@@ -221,16 +220,16 @@ public class JPredFile extends AlignFile
 
           for (int j = 0; j < i; j++)
           {
-            scores.setElementAt(
-                    (Object) ((Float) scores.elementAt(j)).toString(), j);
+            scores.setElementAt(((Float) scores.elementAt(j)).toString(),
+                    j);
           }
 
-          scores.addElement((Object) ascore);
+          scores.addElement(ascore);
 
           while (symbols.hasMoreTokens())
           {
             ascore = symbols.nextToken();
-            scores.addElement((Object) ascore);
+            scores.addElement(ascore);
           }
 
           Scores.put(id, scores);
@@ -270,7 +269,9 @@ public class JPredFile extends AlignFile
           }
 
           if (QuerySeqPosition == -1)
+          {
             QuerySeqPosition = ids.size();
+          }
           ids.addElement(name);
           noSeqs++;
         }
@@ -283,7 +284,7 @@ public class JPredFile extends AlignFile
 
           seq_entries.addElement(newseq.toString());
           ids.addElement(id);
-          Symscores.put((Object) id, (Object) new Integer(ids.size() - 1));
+          Symscores.put(id, Integer.valueOf(ids.size() - 1));
         }
       }
     }
@@ -299,18 +300,20 @@ public class JPredFile extends AlignFile
     {
       // Add all sequence like objects
       Sequence newSeq = new Sequence(ids.elementAt(i).toString(),
-              seq_entries.elementAt(i).toString(), 1, seq_entries
-                      .elementAt(i).toString().length());
+              seq_entries.elementAt(i).toString(), 1,
+              seq_entries.elementAt(i).toString().length());
 
       if (maxLength != seq_entries.elementAt(i).toString().length())
       {
-        throw new IOException("JPredConcise: Entry ("
-                + ids.elementAt(i).toString()
-                + ") has an unexpected number of columns");
+        throw new IOException(MessageManager.formatMessage(
+                "exception.jpredconcide_entry_has_unexpected_number_of_columns",
+                new String[]
+                { ids.elementAt(i).toString() }));
       }
 
-      if ((newSeq.getName().startsWith("QUERY") || newSeq.getName()
-              .startsWith("align;")) && (QuerySeqPosition == -1))
+      if ((newSeq.getName().startsWith("QUERY")
+              || newSeq.getName().startsWith("align;"))
+              && (QuerySeqPosition == -1))
       {
         QuerySeqPosition = seqs.size();
       }
@@ -330,9 +333,10 @@ public class JPredFile extends AlignFile
       } catch (Exception e)
       {
         tal = null;
-        IOException ex = new IOException(
-                "Couldn't parse concise annotation for prediction profile.\n"
-                        + e);
+        IOException ex = new IOException(MessageManager.formatMessage(
+                "exception.couldnt_parse_concise_annotation_for_prediction",
+                new String[]
+                { e.getMessage() }));
         e.printStackTrace(); // java 1.1 does not have :
                              // ex.setStackTrace(e.getStackTrace());
         throw ex;
@@ -351,7 +355,8 @@ public class JPredFile extends AlignFile
    * 
    * @return String
    */
-  public String print()
+  @Override
+  public String print(SequenceI[] sqs, boolean jvsuffix)
   {
     return "Not Supported";
   }
@@ -361,24 +366,18 @@ public class JPredFile extends AlignFile
    * 
    * @param args
    *          DOCUMENT ME!
- * @throws SAXException 
- * @throws ParserConfigurationException 
- * @throws ExceptionFileFormatOrSyntax 
- * @throws ExceptionLoadingFailed 
- * @throws ExceptionPermissionDenied 
- * @throws InterruptedException 
    */
-  public static void main(String[] args) throws ExceptionFileFormatOrSyntax, ParserConfigurationException, SAXException, ExceptionPermissionDenied, ExceptionLoadingFailed, InterruptedException
+  public static void main(String[] args)
   {
     try
     {
-      JPredFile blc = new JPredFile(args[0], "File");
+      JPredFile jpred = new JPredFile(args[0], DataSourceType.FILE);
 
-      for (int i = 0; i < blc.seqs.size(); i++)
+      for (int i = 0; i < jpred.seqs.size(); i++)
       {
-        System.out.println(((Sequence) blc.seqs.elementAt(i)).getName()
+        System.out.println(((Sequence) jpred.seqs.elementAt(i)).getName()
                 + "\n"
-                + ((Sequence) blc.seqs.elementAt(i)).getSequenceAsString()
+                + ((Sequence) jpred.seqs.elementAt(i)).getSequenceAsString()
                 + "\n");
       }
     } catch (java.io.IOException e)
@@ -409,8 +408,8 @@ public class JPredFile extends AlignFile
     }
     // check that no stray annotations have been added at the end.
     {
-      SequenceI sq = (SequenceI) seqs.elementAt(j - 1);
-      if (sq.getName().toUpperCase().startsWith("JPRED"))
+      SequenceI sq = seqs.elementAt(j - 1);
+      if (sq.getName().toUpperCase(Locale.ROOT).startsWith("JPRED"))
       {
         annotSeqs.addElement(sq);
         seqs.removeElementAt(--j);