package compbio.ws.client; import static compbio.ws.client.Constraints.pseparator; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; import compbio.data.sequence.Alignment; import compbio.data.sequence.ClustalAlignmentUtil; import compbio.data.sequence.Score; public class IOHelper { /** * Checks -i options and return the File if one was provided, null otherwise * * @param cmd * @param key * @param mustExist * @return * @throws IOException */ static File getFile(String[] cmd, String key, boolean mustExist) throws IOException { assert key != null && key.trim().length() != 0; for (int i = 0; i < cmd.length; i++) { String filename = cmd[i]; filename = filename.trim(); if (filename.toLowerCase().startsWith(key + pseparator)) { filename = filename.substring((key + pseparator).length()); File file = new File(filename); if (mustExist && !file.exists()) { System.out.println(key + " file " + file.getAbsolutePath() + " does not exist"); return null; } if (!mustExist && !file.exists()) { file.createNewFile(); } if (!file.canRead()) { System.out.println("Cannot read " + key + " file " + file.getAbsolutePath()); return null; } return file; } } return null; } /** * Load parameters from file * * @throws IOException */ static List loadParameters(File paramsfile) throws IOException { assert paramsfile != null && paramsfile.exists(); BufferedReader reader = new BufferedReader(new FileReader(paramsfile)); String line = null; ArrayList params = new ArrayList(); while ((line = reader.readLine()) != null) { line = line.trim(); if (line.length() == 0) continue; params.add(line); } return params; } static OutputStream getOutStream(File file) { assert file != null && file.exists(); try { return new FileOutputStream(file); } catch (FileNotFoundException e) { e.printStackTrace(); } return null; } /** * Outputs clustal formatted alignment into the file represented by the * outStream * * @param outStream * @param align * the alignment to output */ static void writeOut(OutputStream outStream, Alignment align) { try { ClustalAlignmentUtil.writeClustalAlignment(outStream, align); } catch (IOException e) { System.err .println("Problems writing output file! Stack trace is below: "); e.printStackTrace(); } finally { if (outStream != null) { try { outStream.close(); } catch (IOException ignored) { // e.printStackTrace(); } } } } /** * Outputs AAcon results into the file represented by the outStream * * @param outStream * @param result * the AACon scores to output */ static void writeOut(OutputStream outStream, Map> result) { try { for (Map.Entry> entry : result.entrySet()) { System.out.println(">" + entry.getKey()); Score.write(entry.getValue(), outStream); } } catch (IOException e) { System.err .println("Problems writing output file! Stack trace is below: "); e.printStackTrace(); } finally { if (outStream != null) { try { outStream.close(); } catch (IOException ignored) { // e.printStackTrace(); } } } } }