X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Futil%2FForesterUtil.java;h=48d973b500c4c6fdaf95c192f82888caf7769b69;hb=03c2309734ed910f833cc2e5281c654879d7a12a;hp=8d36a6e5b827f11e10465c1cab675ce7706d6c85;hpb=af5e25d369f3240ce41018957383044c12126d98;p=jalview.git diff --git a/forester/java/src/org/forester/util/ForesterUtil.java b/forester/java/src/org/forester/util/ForesterUtil.java index 8d36a6e..48d973b 100644 --- a/forester/java/src/org/forester/util/ForesterUtil.java +++ b/forester/java/src/org/forester/util/ForesterUtil.java @@ -42,6 +42,8 @@ import java.io.Writer; import java.math.BigDecimal; import java.net.URL; import java.net.URLConnection; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; @@ -62,11 +64,14 @@ import java.util.TreeSet; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.forester.archaeopteryx.Constants; +import org.forester.archaeopteryx.AptxConstants; +import org.forester.io.parsers.PhylogenyParser; +import org.forester.phylogeny.Phylogeny; import org.forester.phylogeny.PhylogenyNode; import org.forester.phylogeny.data.Distribution; import org.forester.phylogeny.data.Sequence; import org.forester.phylogeny.data.Taxonomy; +import org.forester.phylogeny.factories.ParserBasedPhylogenyFactory; import org.forester.protein.BasicProtein; import org.forester.protein.Domain; import org.forester.protein.Protein; @@ -115,13 +120,13 @@ public final class ForesterUtil { * This calculates a color. If value is equal to min the returned color is * minColor, if value is equal to max the returned color is maxColor, * otherwise a color 'proportional' to value is returned. - * + * * @param value - * the value + * the value * @param min - * the smallest value + * the smallest value * @param max - * the largest value + * the largest value * @param minColor * the color for min * @param maxColor @@ -152,15 +157,15 @@ public final class ForesterUtil { * value is equal to mean the returned color is meanColor, otherwise a color * 'proportional' to value is returned -- either between min-mean or * mean-max - * + * * @param value * the value * @param min * the smallest value * @param max - * the largest value + * the largest value * @param mean - * the mean/median value + * the mean/median value * @param minColor * the color for min * @param maxColor @@ -203,7 +208,7 @@ public final class ForesterUtil { /** * Helper method for calcColor methods. - * + * * @param smallercolor_component_x * color component the smaller color * @param largercolor_component_x @@ -220,8 +225,8 @@ public final class ForesterUtil { /** * Helper method for calcColor methods. - * - * + * + * * @param value * the value * @param larger @@ -583,7 +588,7 @@ public final class ForesterUtil { /** * Returns true is Domain domain falls in an uninterrupted stretch of * covered positions. - * + * * @param domain * @param covered_positions * @return @@ -609,7 +614,7 @@ public final class ForesterUtil { * This determines whether String[] a and String[] b have at least one * String in common (intersect). Returns false if at least one String[] is * null or empty. - * + * * @param a * a String[] b a String[] * @return true if both a and b or not empty or null and contain at least @@ -646,7 +651,7 @@ public final class ForesterUtil { return OS_NAME.toLowerCase().startsWith( "mac" ); } catch ( final Exception e ) { - ForesterUtil.printWarningMessage( Constants.PRG_NAME, "minor error: " + e ); + ForesterUtil.printWarningMessage( AptxConstants.PRG_NAME, "minor error: " + e ); return false; } } @@ -683,7 +688,7 @@ public final class ForesterUtil { return OS_NAME.toLowerCase().indexOf( "win" ) > -1; } catch ( final Exception e ) { - ForesterUtil.printWarningMessage( Constants.PRG_NAME, "minor error: " + e ); + ForesterUtil.printWarningMessage( AptxConstants.PRG_NAME, "minor error: " + e ); return false; } } @@ -969,7 +974,7 @@ public final class ForesterUtil { } else { throw new IllegalArgumentException( "attempt to parse object of type [" + source.getClass() - + "] (can only parse objects of type File, InputStream, String, or StringBuffer)" ); + + "] (can only parse objects of type File, InputStream, String, or StringBuffer)" ); } return reader; } @@ -1113,16 +1118,16 @@ public final class ForesterUtil { } /** - * + * * Example regarding engulfment: ------------0.1 ----------0.2 --0.3 => * domain with 0.3 is ignored - * + * * -----------0.1 ----------0.2 --0.3 => domain with 0.3 is ignored - * - * + * + * * ------------0.1 ----------0.3 --0.2 => domains with 0.3 and 0.2 are _not_ * ignored - * + * * @param max_allowed_overlap * maximal allowed overlap (inclusive) to be still considered not * overlapping (zero or negative value to allow any overlap) @@ -1136,7 +1141,7 @@ public final class ForesterUtil { final boolean remove_engulfed_domains, final Protein protein ) { final Protein pruned_protein = new BasicProtein( protein.getProteinId().getId(), protein.getSpecies() - .getSpeciesId(), protein.getLength() ); + .getSpeciesId(), protein.getLength() ); final List sorted = SurfacingUtil.sortDomainsWithAscendingConfidenceValues( protein ); final List covered_positions = new ArrayList(); for( final Domain domain : sorted ) { @@ -1171,7 +1176,7 @@ public final class ForesterUtil { /** * Removes all white space from String s. - * + * * @return String s with white space removed */ final public static String removeWhiteSpace( String s ) { @@ -1342,7 +1347,7 @@ public final class ForesterUtil { final public static void unexpectedFatalError( final String prg_name, final Exception e ) { System.err.println(); System.err.println( "[" + prg_name - + "] > unexpected error; should not have occured! Please contact program author(s)." ); + + "] > unexpected error; should not have occured! Please contact program author(s)." ); e.printStackTrace( System.err ); System.err.println(); System.exit( -1 ); @@ -1351,7 +1356,7 @@ public final class ForesterUtil { final public static void unexpectedFatalError( final String prg_name, final String message ) { System.err.println(); System.err.println( "[" + prg_name - + "] > unexpected error: should not have occured! Please contact program author(s)." ); + + "] > unexpected error: should not have occured! Please contact program author(s)." ); System.err.println( message ); System.err.println(); System.exit( -1 ); @@ -1360,7 +1365,7 @@ public final class ForesterUtil { final public static void unexpectedFatalError( final String prg_name, final String message, final Exception e ) { System.err.println(); System.err.println( "[" + prg_name - + "] > unexpected error: should not have occured! Please contact program author(s)." ); + + "] > unexpected error: should not have occured! Please contact program author(s)." ); System.err.println( message ); e.printStackTrace( System.err ); System.err.println(); @@ -1413,6 +1418,44 @@ public final class ForesterUtil { return sb.toString(); } + + public final static Phylogeny[] readPhylogeniesFromUrl( final URL url, + final PhylogenyParser parser ) + throws NoSuchAlgorithmException, IOException, KeyManagementException { + if ( url == null ) { + throw new IllegalArgumentException( "URL to read from must not be null" ); + } + else if ( parser == null ) { + throw new IllegalArgumentException( "parser to use to read from URL must not be null" ); + } + final URLConnection con; + if ( url.toString().startsWith( "https:" ) ) { + con = TrustManager.makeHttpsURLConnection( url ); + } + else if ( url.toString().startsWith( "http:" ) ) { + con = url.openConnection(); + } + else { + throw new IllegalArgumentException( "Cannot deal with URL: " + url ); + } + if ( con == null ) { + throw new IOException( "could not create connection from " + url ); + } + con.setDefaultUseCaches( false ); + final InputStream is = con.getInputStream(); + if ( is == null ) { + throw new IOException( "could not create input stream from " + url ); + } + final Phylogeny[] trees = ParserBasedPhylogenyFactory.getInstance().create( is, parser ); + try { + is.close(); + } + catch ( final Exception e ) { + // ignore + } + return trees; + } + private ForesterUtil() { } }