JAL-1067 - T-Coffee score file reader
[jalview.git] / src / jalview / io / TCoffeeScoreFile.java
index df00986..7a3f2d9 100644 (file)
@@ -78,6 +78,44 @@ public class TCoffeeScoreFile {
        
 
        /**
+        * Parse the specified file.
+        * 
+        * @param file The file to be parsed 
+        */
+       public static TCoffeeScoreFile load(File file) {
+               try {
+                       return load(new FileReader(file));
+               } 
+               catch (FileNotFoundException e) {
+                       throw new RuntimeException(e);
+               }
+       }
+       
+       /**
+        * Parse the provided reader for the T-Coffee scores file format
+        * 
+        * @param reader 
+        */
+       public static TCoffeeScoreFile load(Reader reader) {
+
+               try {
+                       BufferedReader in = (BufferedReader) (reader instanceof BufferedReader ? reader : new BufferedReader(reader));
+                       TCoffeeScoreFile result = new TCoffeeScoreFile();
+                       result.doParsing(in);
+                       return result.header != null && result.scores != null ? result : null;
+               }
+               catch( Exception e) {
+                       throw new RuntimeException(e);
+               }
+       }
+               
+       /**
+        * The default constructor is marked as {@code protected} since this class is meant to created 
+        * through the {@link #load(File)} or {@link #load(Reader)} factory methods
+        */
+       protected TCoffeeScoreFile() { } 
+       
+       /**
         * Get the string of score values for the specified seqeunce ID. 
         * @param id The sequence ID 
         * @return The scores as a string of values e.g. {@code 99999987-------432}. 
@@ -122,43 +160,17 @@ public class TCoffeeScoreFile {
                return result;
        }
        
-       /**
-        * Parse the specified file.
-        * 
-        * @param file The file to be parsed 
-        */
-       public void parse(File file) {
-               try {
-                       parse(new FileReader(file));
-               } 
-               catch (FileNotFoundException e) {
-                       throw new RuntimeException(e);
-               }
-       }
-       
-       /**
-        * Parse the provided reader for the T-Coffee scores file format
-        * 
-        * @param reader 
-        */
-       public void parse(Reader reader) {
 
-               try {
-                       BufferedReader in = (BufferedReader) (reader instanceof BufferedReader ? reader : new BufferedReader(reader));
-                       doParsing(in);
-               }
-               catch( Exception e) {
-                       throw new RuntimeException(e);
-               }
-       }
-       
        private void doParsing(BufferedReader in) throws IOException {
 
                /*
                 * read the header
                 */
                header = readHeader(in);
+
+               if( header == null ) { return; }
                
+       
                /*
                 * initilize the structure
                 */