JAL-1807 - Bob's last(?) before leaving Dundee -- adds fast file loading
[jalviewjs.git] / src / jalview / jsdev / GenericFileAdapter.java
index 4bafd31..f73b53b 100644 (file)
-package jalview.jsdev;\r
-\r
-import jalview.datamodel.AlignmentI;\r
-import jalview.io.AlignFile;\r
-import jalview.io.FileParse;\r
-\r
-import java.io.BufferedReader;\r
-import java.io.FileReader;\r
-import java.io.IOException;\r
-import java.io.InputStreamReader;\r
-import java.lang.reflect.Constructor;\r
-import java.lang.reflect.InvocationTargetException;\r
-import java.net.URL;\r
-\r
-import javajs.J2SIgnoreImport;\r
-/**\r
- * A class to open files via reflection so that their classes are only loaded as necessary\r
- * \r
- * note: not all file openers have corresponding String inFile and FileParse\r
- * source options. Why not?\r
- * \r
- * note: Pileupfile does not have a capital "F"; the method below requires that,\r
- * so if that file name gets changed, so too does the reflection code here.\r
- * \r
- * @author Bob Hanson\r
- * \r
- */\r
-\r
-@J2SIgnoreImport({java.io.FileReader.class})\r
-abstract public class GenericFileAdapter extends AlignFile {\r
-\r
-       /**\r
-        * inFileOrSource class type\r
-        * \r
-        * @param inFileOrSource\r
-        *          type will determine constructor -- [], [AlignmentI],\r
-        *          [inFile,type], or [source]\r
-        * @param type\r
-        * @param fileName\r
-        * @return\r
-        */\r
-       public static AlignFile getFile(String fileType, Object... params) {\r
-               Class<?> cl = null;\r
-               try {\r
-                       cl = Class.forName("jalview.io." + fileType);\r
-               } catch (ClassNotFoundException e) {\r
-                       System.err.println("did not find file jalview.io." + fileType);\r
-                       return null;\r
-               }\r
-               Constructor<?> m;\r
-               Throwable ex = null;\r
-               try {\r
-                       switch (params.length) {\r
-                       case 0:\r
-                               return (AlignFile) cl.newInstance();\r
-                       case 1:\r
-                               m = (params[0] instanceof FileParse ? cl\r
-                                               .getConstructor(FileParse.class) : cl\r
-                                               .getConstructor(AlignmentI.class));\r
-                               break;\r
-                       case 2:\r
-                               m = cl.getConstructor(String.class, String.class);\r
-                               break;\r
-                       default:\r
-                               return null;\r
-                       }\r
-                       return (AlignFile) m.newInstance(params);\r
-               } catch (InstantiationException e) {\r
-                       ex = e;\r
-               } catch (IllegalAccessException e) {\r
-                       ex = e;\r
-               } catch (NoSuchMethodException e) {\r
-                       ex = e;\r
-               } catch (SecurityException e) {\r
-                       ex = e;\r
-               } catch (IllegalArgumentException e) {\r
-                       ex = e;\r
-               } catch (InvocationTargetException e) {\r
-                       ex = e;\r
-               }\r
-               if (ex != null) {\r
-                       System.err.println("Error in GenericFileAdapter: " + ex);\r
-                       /**\r
-                        * @j2sNative\r
-                        * \r
-                        *            alert(ex)\r
-                        * \r
-                        */\r
-                       {\r
-                               ex.printStackTrace();\r
-                       }\r
-               }\r
-               return null;\r
-       }\r
-\r
-       /**\r
-        * Determines whether or not we have a JavaScript applet.\r
-        * \r
-        * @return\r
-        */\r
-       public static boolean isJS() {\r
-       /**\r
-        * @j2sNative \r
-        * \r
-        * return true;\r
-        * \r
-        */\r
-       {\r
-               return false;\r
-       } \r
-       }\r
-\r
-       /**\r
-        * opens a file for line-oriented reading via File() or URL()\r
-        * \r
-        * @param fileName\r
-        * @param forceURL\r
-        * @return\r
-        * @throws IOException\r
-        */\r
-       public static BufferedReader getReader(String fileName, boolean forceURL) throws IOException {\r
-       if (!forceURL && !isJS())\r
-               return new BufferedReader(new FileReader(fileName));            \r
-               if (fileName.indexOf("//") < 0)\r
-                       fileName = "file://" + fileName;\r
-    return new BufferedReader(new InputStreamReader(new URL(fileName).openStream()));\r
-       }\r
-       \r
-\r
-}\r
+package jalview.jsdev;
+
+import jalview.datamodel.AlignmentI;
+import jalview.io.AlignFile;
+import jalview.io.FileParse;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.net.URL;
+
+import javajs.J2SIgnoreImport;
+/**
+ * A class to open files via reflection so that their classes are only loaded as necessary
+ * 
+ * note: not all file openers have corresponding String inFile and FileParse
+ * source options. Why not?
+ * 
+ * note: Pileupfile does not have a capital "F"; the method below requires that,
+ * so if that file name gets changed, so too does the reflection code here.
+ * 
+ * @author Bob Hanson
+ * 
+ */
+
+@J2SIgnoreImport({java.io.FileReader.class})
+abstract public class GenericFileAdapter extends AlignFile {
+
+       /**
+        * inFileOrSource class type
+        * 
+        * @param inFileOrSource
+        *          type will determine constructor -- [], [AlignmentI],
+        *          [inFile,type], or [source]
+        * @param type
+        * @param fileName
+        * @return
+        */
+       public static AlignFile getFile(String fileType, Object... params) {
+               Class<?> cl = null;
+               try {
+                       cl = Class.forName("jalview.io." + fileType);
+               } catch (ClassNotFoundException e) {
+                       System.err.println("did not find file jalview.io." + fileType);
+                       return null;
+               }
+               Constructor<?> m;
+               Throwable ex = null;
+               try {
+                       switch (params.length) {
+                       case 0:
+                               return (AlignFile) cl.newInstance();
+                       case 1:
+                               m = (params[0] instanceof FileParse ? cl
+                                               .getConstructor(FileParse.class) : cl
+                                               .getConstructor(AlignmentI.class));
+                               break;
+                       case 2:
+                               m = cl.getConstructor(String.class, String.class);
+                               break;
+                       default:
+                               return null;
+                       }
+                       return (AlignFile) m.newInstance(params);
+               } catch (InstantiationException e) {
+                       ex = e;
+               } catch (IllegalAccessException e) {
+                       ex = e;
+               } catch (NoSuchMethodException e) {
+                       ex = e;
+               } catch (SecurityException e) {
+                       ex = e;
+               } catch (IllegalArgumentException e) {
+                       ex = e;
+               } catch (InvocationTargetException e) {
+                       ex = e;
+               }
+               if (ex != null) {
+                       System.err.println("Error in GenericFileAdapter: " + ex);
+                       /**
+                        * @j2sNative
+                        * 
+                        *            alert(ex)
+                        * 
+                        */
+                       {
+                               ex.printStackTrace();
+                       }
+               }
+               return null;
+       }
+
+       /**
+        * Determines whether or not we have a JavaScript applet.
+        * 
+        * @return
+        */
+       public static boolean isJS() {
+       /**
+        * @j2sNative 
+        * 
+        * return true;
+        * 
+        */
+       {
+               return false;
+       } 
+       }
+
+       /**
+        * opens a file for line-oriented reading via File() or URL()
+        * 
+        * @param fileName
+        * @param forceURL
+        * @return
+        * @throws IOException
+        */
+       public static BufferedReader getReader(String fileName, boolean forceURL) throws IOException {
+       if (!forceURL && !isJS())
+               return new BufferedReader(new FileReader(fileName));            
+               if (fileName.indexOf("//") < 0)
+                       fileName = "file://" + fileName;
+    return new BufferedReader(new InputStreamReader(new URL(fileName).openStream()));
+       }
+
+       public final static String TCOFFEE_SCORE = "TCoffeeScore";
+       public static final int Phylip_FILE = 1;
+       public static final String Phylip_FILE_EXT = "phy";
+       public static final String Phylip_FILE_DESC = "PHYLIP";
+       public static final int JSON_FILE = 2;
+       public static final String JSON_FILE_EXT = "json";
+       public static final String JSON_FILE_DESC = "JSON";
+       public static final int Html_FILE = 3;
+       public static final String Html_FILE_EXT = "html";
+       public static final String Html_FILE_DESC = "HTML";
+       
+
+}