// Path: src/treecmp/metric/BaseMetric.java
// public abstract class BaseMetric implements Metric{
// 
//     protected String name;
//     protected String commandLineName;
//     protected String description;
//     protected String unifomFileName;
//     protected String yuleFileName;
//     protected String alnFileSuffix;
// 
//     protected IMetircDistrbHolder unifomRandData;
//     protected IMetircDistrbHolder yuleRandData;
// 
//     protected boolean rooted;
//     protected boolean weighted;
//     protected boolean diffLeafSets;
// 
//     public boolean isDiffLeafSets() {
//         return diffLeafSets;
//     }
// 
//     public void setDiffLeafSets(boolean diffLeafSets) {
//         this.diffLeafSets = diffLeafSets;
//     }
// 
//     public boolean isRooted() {
//         return rooted;
//     }
// 
//     public void setRooted(boolean rooted) {
//         this.rooted = rooted;
//     }
// 
//     public void setWeighted(boolean weighted) {
//         this.weighted = weighted;
//     }
// 
//     public boolean isWeighted() {
//         return weighted;
//     }
//     public String getAlnFileSuffix() {
//         return alnFileSuffix;
//     }
// 
//     public void setAlnFileSuffix(String alnFileSuffix) {
//         this.alnFileSuffix = alnFileSuffix;
//     }
//     
//     public String getUnifomFileName() {
//         return unifomFileName;
//     }
// 
//     public void setUnifomFileName(String unifomFileName) {
//         this.unifomFileName = unifomFileName;
//     }
// 
//     public String getYuleFileName() {
//         return yuleFileName;
//     }
// 
//     public void setYuleFileName(String yuleFileName) {
//         this.yuleFileName = yuleFileName;
//     }
// 
// 
//     public IMetircDistrbHolder getUnifomRandData() {
//         return unifomRandData;
//     }
// 
// 
//     public IMetircDistrbHolder getYuleRandData() {
//         return yuleRandData;
//     }
// 
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
//     
//     public BaseMetric() {
//         this.rooted = false;
//         this.diffLeafSets = false;
//     }
// 
//     public String getCommandLineName() {
//         return commandLineName;
//     }
// 
//     public void setCommandLineName(String commandLineName) {
//         this.commandLineName = commandLineName;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public abstract double getDistance(Tree t1, Tree t2, int... indexes) ;
//     public  AlignInfo getAlignment(){
//         return null;
//     }
//     
//     private IMetircDistrbHolder parseData(String dataDir, String dataFileName){
//         
//         MetircDistrbHolder mdh = new MetircDistrbHolder();
// 
//         String fullPath = dataDir + "/" + dataFileName;
// 
//         try {
//         FileReader fr = new FileReader(fullPath);
//         BufferedReader br = new BufferedReader(fr);
//         int cnt = 0;
//         String line;
//         while ((line = br.readLine()) != null){
//           cnt++;
//           if(cnt > 1){
//               MetricDistribution md = new MetricDistribution();
//               md.readData(line);
//               mdh.insertDistribution(md);
//           }
//         }
//         br.close();
//       }
//       catch (IOException e) {
//           Logger.getLogger(ConfigSettings.class.getName()).log(Level.SEVERE, "Error while reading data file:" + fullPath, e);
//           mdh = null;
//       }
//         return mdh;
//     }
// 
//     public void initData(){
//         ConfigSettings config = ConfigSettings.getConfig();
//         String dataDir = config.getDataDir();
//         if (unifomRandData == null){
//             if (unifomFileName != null){
//                 unifomRandData = parseData(dataDir, unifomFileName);
//             }         
//         }
//         
//         if (yuleRandData == null){
//             if (yuleFileName != null){
//                 yuleRandData = parseData(dataDir, yuleFileName);
//             }
//         }
//     }
//       
// }


import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import treecmp.metric.BaseMetric;
                                m.setWeighted(true);
                            }
                        }
                        if (diff_leaves != null) {
                            if (diff_leaves.equals("true")) {
                                m.setDiffLeafSets(true);
                            }
                        }

                        DMset.addMetric(m);
                    }
                }

                //parse statistic section
                list = doc.getElementsByTagName("reporting");
                Element element = (Element) list.item(0);
                String sSep = getTextValue(element, "filed_separator");
                IOSettings IOs = IOSettings.getIOSettings();

                if (sSep.compareTo("tab") == 0) {
                    IOs.setSSep("\t");
                } else {
                    IOs.setSSep(sSep);
                }
                IOs.setCsvSep(";");

            } catch (SAXException ex) {
                Logger.getLogger(ConfigSettings.class.getName()).log(Level.SEVERE, null, ex);
            } catch (FileNotFoundException ex) {
                throw ex;
// Path: src/treecmp/metric/BaseMetric.java
// public abstract class BaseMetric implements Metric{
// 
//     protected String name;
//     protected String commandLineName;
//     protected String description;
//     protected String unifomFileName;
//     protected String yuleFileName;
//     protected String alnFileSuffix;
// 
//     protected IMetircDistrbHolder unifomRandData;
//     protected IMetircDistrbHolder yuleRandData;
// 
//     protected boolean rooted;
//     protected boolean weighted;
//     protected boolean diffLeafSets;
// 
//     public boolean isDiffLeafSets() {
//         return diffLeafSets;
//     }
// 
//     public void setDiffLeafSets(boolean diffLeafSets) {
//         this.diffLeafSets = diffLeafSets;
//     }
// 
//     public boolean isRooted() {
//         return rooted;
//     }
// 
//     public void setRooted(boolean rooted) {
//         this.rooted = rooted;
//     }
// 
//     public void setWeighted(boolean weighted) {
//         this.weighted = weighted;
//     }
// 
//     public boolean isWeighted() {
//         return weighted;
//     }
//     public String getAlnFileSuffix() {
//         return alnFileSuffix;
//     }
// 
//     public void setAlnFileSuffix(String alnFileSuffix) {
//         this.alnFileSuffix = alnFileSuffix;
//     }
//     
//     public String getUnifomFileName() {
//         return unifomFileName;
//     }
// 
//     public void setUnifomFileName(String unifomFileName) {
//         this.unifomFileName = unifomFileName;
//     }
// 
//     public String getYuleFileName() {
//         return yuleFileName;
//     }
// 
//     public void setYuleFileName(String yuleFileName) {
//         this.yuleFileName = yuleFileName;
//     }
// 
// 
//     public IMetircDistrbHolder getUnifomRandData() {
//         return unifomRandData;
//     }
// 
// 
//     public IMetircDistrbHolder getYuleRandData() {
//         return yuleRandData;
//     }
// 
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
//     
//     public BaseMetric() {
//         this.rooted = false;
//         this.diffLeafSets = false;
//     }
// 
//     public String getCommandLineName() {
//         return commandLineName;
//     }
// 
//     public void setCommandLineName(String commandLineName) {
//         this.commandLineName = commandLineName;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public abstract double getDistance(Tree t1, Tree t2, int... indexes) ;
//     public  AlignInfo getAlignment(){
//         return null;
//     }
//     
//     private IMetircDistrbHolder parseData(String dataDir, String dataFileName){
//         
//         MetircDistrbHolder mdh = new MetircDistrbHolder();
// 
//         String fullPath = dataDir + "/" + dataFileName;
// 
//         try {
//         FileReader fr = new FileReader(fullPath);
//         BufferedReader br = new BufferedReader(fr);
//         int cnt = 0;
//         String line;
//         while ((line = br.readLine()) != null){
//           cnt++;
//           if(cnt > 1){
//               MetricDistribution md = new MetricDistribution();
//               md.readData(line);
//               mdh.insertDistribution(md);
//           }
//         }
//         br.close();
//       }
//       catch (IOException e) {
//           Logger.getLogger(ConfigSettings.class.getName()).log(Level.SEVERE, "Error while reading data file:" + fullPath, e);
//           mdh = null;
//       }
//         return mdh;
//     }
// 
//     public void initData(){
//         ConfigSettings config = ConfigSettings.getConfig();
//         String dataDir = config.getDataDir();
//         if (unifomRandData == null){
//             if (unifomFileName != null){
//                 unifomRandData = parseData(dataDir, unifomFileName);
//             }         
//         }
//         
//         if (yuleRandData == null){
//             if (yuleFileName != null){
//                 yuleRandData = parseData(dataDir, yuleFileName);
//             }
//         }
//     }
//       
// }


// Path: src/treecmp/config/ConfigSettings.java
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import treecmp.metric.BaseMetric;

                                m.setWeighted(true);
                            }
                        }
                        if (diff_leaves != null) {
                            if (diff_leaves.equals("true")) {
                                m.setDiffLeafSets(true);
                            }
                        }

                        DMset.addMetric(m);
                    }
                }

                //parse statistic section
                list = doc.getElementsByTagName("reporting");
                Element element = (Element) list.item(0);
                String sSep = getTextValue(element, "filed_separator");
                IOSettings IOs = IOSettings.getIOSettings();

                if (sSep.compareTo("tab") == 0) {
                    IOs.setSSep("\t");
                } else {
                    IOs.setSSep(sSep);
                }
                IOs.setCsvSep(";");

            } catch (SAXException ex) {
                Logger.getLogger(ConfigSettings.class.getName()).log(Level.SEVERE, null, ex);
            } catch (FileNotFoundException ex) {
                throw ex;
            } catch (IOException ex) {