f472ff063144d7e7c43548e47092f5bc7fb56a76
[jalview.git] / forester / java / src / org / forester / archaeopteryx / tools / InferenceManager.java
1
2 package org.forester.archaeopteryx.tools;
3
4 import java.io.File;
5
6 import org.forester.archaeopteryx.Configuration;
7
8 public final class InferenceManager {
9
10     private final static String DEFAULT_PATHS[] = { "C:\\Program Files\\", "C:\\Program Files (x86)\\", "/bin/",
11             "/usr/local/bin/", "/usr/bin/"     };
12     private final File          _path_to_local_mafft;
13     private final File          _path_to_local_kalign;
14     private final File          _path_to_local_fastme;
15     private final File          _path_to_local_raxml;
16     private final File          _path_to_local_clustalo;
17
18     public static InferenceManager createInstance( final Configuration c ) {
19         return new InferenceManager( c.getpathToLocalMafft(),
20                                      c.getPathToLocalKalign(),
21                                      c.getPathToLocalFastme(),
22                                      c.getPathToLocalRaxml(),
23                                      c.getPathToLocalClustalOmega() );
24     }
25
26     public boolean canDoMsa() {
27         return ( getPathToLocalMafft() != null ) || ( getPathToLocalKalign() != null )
28                 || ( getPathToLocalClustalo() != null );
29     }
30
31     public File getPathToLocalMafft() {
32         return _path_to_local_mafft;
33     }
34
35     public File getPathToLocalKalign() {
36         return _path_to_local_kalign;
37     }
38
39     public File getPathToLocalFastme() {
40         return _path_to_local_fastme;
41     }
42
43     public File getPathToLocalRaxml() {
44         return _path_to_local_raxml;
45     }
46
47     public File getPathToLocalClustalo() {
48         return _path_to_local_clustalo;
49     }
50
51     private final static File createLocalPath( final File path, final String name ) {
52         if ( ( path != null ) && path.canExecute() && !path.isDirectory() ) {
53             return path;
54         }
55         final File p1 = new File( name );
56         if ( p1.canExecute() && !p1.isDirectory() ) {
57             return p1;
58         }
59         for( final String path_str : DEFAULT_PATHS ) {
60             try {
61                 final File p2 = new File( path_str + name );
62                 if ( p2.canExecute() && !p2.isDirectory() ) {
63                     return p2;
64                 }
65                 final File p3 = new File( path_str + name + ".exe" );
66                 if ( p3.canExecute() && !p3.isDirectory() ) {
67                     return p3;
68                 }
69                 final File p4 = new File( path_str + name + ".bat" );
70                 if ( p4.canExecute() && !p4.isDirectory() ) {
71                     return p4;
72                 }
73             }
74             catch ( final Exception e ) {
75             }
76         }
77         return null;
78     }
79
80     private InferenceManager( final File path_to_local_mafft,
81                               final File path_to_local_kalign,
82                               final File path_to_local_fastme,
83                               final File path_to_local_raxml,
84                               final File path_to_local_clustalo ) {
85         _path_to_local_mafft = createLocalPath( path_to_local_mafft, "mafft" );
86         _path_to_local_kalign = createLocalPath( path_to_local_kalign, "kalign" );
87         _path_to_local_fastme = createLocalPath( path_to_local_fastme, "fastme" );
88         _path_to_local_raxml = createLocalPath( path_to_local_raxml, "raxml" );
89         _path_to_local_clustalo = createLocalPath( path_to_local_clustalo, "clustalo" );
90     }
91 }