JAL-2805 added nexus specific parser settings
[jalview.git] / src / jalview / ext / forester / io / ForesterParser.java
index 851b12b..4cd84b1 100644 (file)
@@ -1,42 +1,63 @@
 package jalview.ext.forester.io;
 
-import jalview.api.FeatureSettingsModelI;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.SequenceI;
+import jalview.ext.archaeopteryx.AptxInit;
 import jalview.ext.archaeopteryx.Tree;
 import jalview.ext.treeviewer.TreeI;
 import jalview.ext.treeviewer.TreeParserI;
-import jalview.io.AlignmentFileReaderI;
-import jalview.io.DataSourceType;
-import jalview.io.FileParse;
 
+import java.io.File;
 import java.io.IOException;
 
 import org.forester.io.parsers.PhylogenyParser;
 import org.forester.io.parsers.nexus.NexusPhylogeniesParser;
 import org.forester.io.parsers.phyloxml.PhyloXmlParser;
+import org.forester.io.parsers.util.PhylogenyParserException;
 import org.forester.phylogeny.Phylogeny;
 
-public class ForesterParser implements TreeParserI, AlignmentFileReaderI
+public class ForesterParser
+        implements TreeParserI
 {
   private final PhylogenyParser parser;
 
-  protected ForesterParser(PhylogenyParser foresterParser, FileParse source)
+  private TreeI[] parsedTrees;
+
+  protected ForesterParser(PhylogenyParser foresterParser, File file)
+          throws PhylogenyParserException, IOException
   {
     parser = foresterParser;
+    parser.setSource(file);
+  }
+
+  public static ForesterParser createNexusParser(File file)
+          throws PhylogenyParserException, IOException
+  {
+    NexusPhylogeniesParser nxParser = new NexusPhylogeniesParser();
+    nxParser.setReplaceUnderscores(
+            AptxInit.APTX_CONFIG.isReplaceUnderscoresInNhParsing());
+    nxParser.setIgnoreQuotes(false);
+    return new ForesterParser(new NexusPhylogeniesParser(), file);
   }
 
+  public static ForesterParser createPhyloXmlParser(File file)
+          throws PhylogenyParserException, IOException
+  {
+    // support non-xsd validating?
+    return new ForesterParser(
+            PhyloXmlParser.createPhyloXmlParserXsdValidating(), file);
+  }
+
+  // ParserBasedPhylogenyFactory.getInstance().create(foresterParser, source)
   @Override
   public TreeI[] parse() throws IOException
   {
     Phylogeny[] foresterTrees = parser.parse();
-    TreeI[] jalviewTrees = new TreeI[foresterTrees.length];
+    parsedTrees = new TreeI[foresterTrees.length];
 
     for (int i = 0; i < foresterTrees.length; i++)
     {
-      jalviewTrees[i] = new Tree(foresterTrees[i]);
+      parsedTrees[i] = new Tree(foresterTrees[i]);
     }
-    return jalviewTrees;
+    return parsedTrees;
 
   }
 
@@ -53,78 +74,10 @@ public class ForesterParser implements TreeParserI, AlignmentFileReaderI
     return parser.getName();
   }
 
-  @Override
-  public SequenceI[] getSeqsAsArray()
-  {
-    // TODO Auto-generated method stub
-    return null;
-  }
-
-  @Override
-  public void addAnnotations(AlignmentI al)
-  {
-    // TODO Auto-generated method stub
-
-  }
 
   @Override
-  public void addGroups(AlignmentI al)
+  public TreeI[] getParsedTrees()
   {
-    // TODO Auto-generated method stub
-
-  }
-
-  @Override
-  public void setSeqs(SequenceI[] sequencesArray)
-  {
-    // TODO Auto-generated method stub
-
-  }
-
-  @Override
-  public boolean hasWarningMessage()
-  {
-    // TODO Auto-generated method stub
-    return false;
-  }
-
-  @Override
-  public String getWarningMessage()
-  {
-    // TODO Auto-generated method stub
-    return null;
-  }
-
-  @Override
-  public String getInFile()
-  {
-    // TODO Auto-generated method stub
-    return null;
-  }
-
-  @Override
-  public DataSourceType getDataSourceType()
-  {
-    // TODO Auto-generated method stub
-    return null;
-  }
-
-  @Override
-  public FeatureSettingsModelI getFeatureColourScheme()
-  {
-    // TODO Auto-generated method stub
-    return null;
-  }
-
-  public static ForesterParser createNexusParser(FileParse source)
-  {
-    return new ForesterParser(new NexusPhylogeniesParser(), source);
-  }
-
-  public static ForesterParser createPhyloXmlParser(FileParse source)
-  {
-    // support non-xsd validating?
-    return new ForesterParser(
-            PhyloXmlParser.createPhyloXmlParserXsdValidating(), source);
+    return parsedTrees;
   }
 }
\ No newline at end of file