Fix core WST file
[jabaws.git] / ws / client / IOHelper.java
1 package compbio.ws.client;\r
2 \r
3 import static compbio.ws.client.Constraints.pseparator;\r
4 \r
5 import java.io.BufferedReader;\r
6 import java.io.File;\r
7 import java.io.FileNotFoundException;\r
8 import java.io.FileOutputStream;\r
9 import java.io.FileReader;\r
10 import java.io.IOException;\r
11 import java.io.OutputStream;\r
12 import java.util.ArrayList;\r
13 import java.util.List;\r
14 import java.util.Set;\r
15 \r
16 import compbio.data.sequence.Alignment;\r
17 import compbio.data.sequence.ClustalAlignmentUtil;\r
18 import compbio.data.sequence.Score;\r
19 \r
20 public class IOHelper {\r
21 \r
22         /**\r
23          * Checks -i options and return the File if one was provided, null otherwise\r
24          * \r
25          * @param cmd\r
26          * @param key\r
27          * @param mustExist\r
28          * @return\r
29          * @throws IOException\r
30          */\r
31         static File getFile(String[] cmd, String key, boolean mustExist)\r
32                         throws IOException {\r
33                 assert key != null && key.trim().length() != 0;\r
34                 for (int i = 0; i < cmd.length; i++) {\r
35                         String filename = cmd[i];\r
36                         filename = filename.trim();\r
37                         if (filename.toLowerCase().startsWith(key + pseparator)) {\r
38                                 filename = filename.substring((key + pseparator).length());\r
39                                 File file = new File(filename);\r
40                                 if (mustExist && !file.exists()) {\r
41                                         System.out.println(key + " file " + file.getAbsolutePath()\r
42                                                         + " does not exist");\r
43                                         return null;\r
44                                 }\r
45                                 if (!mustExist && !file.exists()) {\r
46                                         file.createNewFile();\r
47                                 }\r
48                                 if (!file.canRead()) {\r
49                                         System.out.println("Cannot read " + key + " file "\r
50                                                         + file.getAbsolutePath());\r
51                                         return null;\r
52                                 }\r
53                                 return file;\r
54                         }\r
55                 }\r
56                 return null;\r
57         }\r
58 \r
59         /**\r
60          * Load parameters from file\r
61          * \r
62          * @throws IOException\r
63          */\r
64         static List<String> loadParameters(File paramsfile) throws IOException {\r
65                 assert paramsfile != null && paramsfile.exists();\r
66                 BufferedReader reader = new BufferedReader(new FileReader(paramsfile));\r
67                 String line = null;\r
68                 ArrayList<String> params = new ArrayList<String>();\r
69                 while ((line = reader.readLine()) != null) {\r
70                         line = line.trim();\r
71                         if (line.length() == 0)\r
72                                 continue;\r
73                         params.add(line);\r
74                 }\r
75                 return params;\r
76         }\r
77 \r
78         static OutputStream getOutStream(File file) {\r
79                 assert file != null && file.exists();\r
80                 try {\r
81                         return new FileOutputStream(file);\r
82                 } catch (FileNotFoundException e) {\r
83                         e.printStackTrace();\r
84                 }\r
85                 return null;\r
86         }\r
87 \r
88         /**\r
89          * Outputs clustal formatted alignment into the file represented by the\r
90          * outStream\r
91          * \r
92          * @param outStream\r
93          * @param align\r
94          *            the alignment to output\r
95          */\r
96         static void writeOut(OutputStream outStream, Alignment align) {\r
97                 try {\r
98                         ClustalAlignmentUtil.writeClustalAlignment(outStream, align);\r
99                 } catch (IOException e) {\r
100                         System.err\r
101                                         .println("Problems writing output file! Stack trace is below: ");\r
102                         e.printStackTrace();\r
103                 } finally {\r
104                         if (outStream != null) {\r
105                                 try {\r
106                                         outStream.close();\r
107                                 } catch (IOException ignored) {\r
108                                         // e.printStackTrace();\r
109                                 }\r
110                         }\r
111                 }\r
112         }\r
113 \r
114         /**\r
115          * Outputs AAcon results into the file represented by the outStream\r
116          * \r
117          * @param outStream\r
118          * @param result\r
119          *            the AACon scores to output\r
120          */\r
121         static void writeOut(OutputStream outStream, Set<Score> result) {\r
122                 try {\r
123                         Score.write(result, outStream);\r
124                 } catch (IOException e) {\r
125                         System.err\r
126                                         .println("Problems writing output file! Stack trace is below: ");\r
127                         e.printStackTrace();\r
128                 } finally {\r
129                         if (outStream != null) {\r
130                                 try {\r
131                                         outStream.close();\r
132                                 } catch (IOException ignored) {\r
133                                         // e.printStackTrace();\r
134                                 }\r
135                         }\r
136                 }\r
137         }\r
138 \r
139 }\r