コード例 #1
0
ファイル: PathogenFrame.java プロジェクト: stevenhwu/ABI
  protected boolean readFromFile(File file) throws IOException {
    Reader reader = new FileReader(file);

    BufferedReader bufferedReader = new BufferedReader(reader);
    String line = bufferedReader.readLine();
    while (line != null && line.length() == 0) {
      line = bufferedReader.readLine();
    }

    boolean isNexus = (line != null && line.toUpperCase().contains("#NEXUS"));

    reader = new FileReader(file);

    Tree tree = null;
    try {
      if (isNexus) {
        NexusImporter importer = new NexusImporter(reader);
        tree = importer.importTree(taxa);
      } else {
        NewickImporter importer = new NewickImporter(reader);
        tree = importer.importTree(taxa);
      }

    } catch (Importer.ImportException ime) {
      JOptionPane.showMessageDialog(
          this,
          "Error parsing imported file: " + ime,
          "Error reading file",
          JOptionPane.ERROR_MESSAGE);
      ime.printStackTrace();
      return false;
    } catch (IOException ioex) {
      JOptionPane.showMessageDialog(
          this, "File I/O Error: " + ioex, "File I/O Error", JOptionPane.ERROR_MESSAGE);
      ioex.printStackTrace();
      return false;
    } catch (Exception ex) {
      JOptionPane.showMessageDialog(
          this, "Fatal exception: " + ex, "Error reading file", JOptionPane.ERROR_MESSAGE);
      ex.printStackTrace();
      return false;
    }

    if (tree == null) {
      JOptionPane.showMessageDialog(
          this,
          "The file is not in a suitable format or contains no trees.",
          "Error reading file",
          JOptionPane.ERROR_MESSAGE);
      return false;
    }

    FlexibleTree binaryTree = new FlexibleTree(tree, true);
    binaryTree.resolveTree();
    trees.add(binaryTree);
    if (taxa == null) {
      taxa = binaryTree;
    }

    getExportTreeAction().setEnabled(true);
    getExportDataAction().setEnabled(true);

    return true;
  }