ingo@1279: package de.intevation.flys.client.shared;
ingo@1279: 
ingo@1279: 
ingo@1279: public final class DoubleUtils {
ingo@1279: 
ingo@1279:     public static final String DEFAULT_DELIM = " ";
ingo@1279: 
ingo@1279: 
ingo@1279:     private DoubleUtils() {
ingo@1279:     }
ingo@1279: 
ingo@1279: 
ingo@1279:     public static Double getDouble(String value) {
ingo@1279:         try {
ingo@1279:             return Double.valueOf(value);
ingo@1279:         }
ingo@1279:         catch (NumberFormatException nfe) {
ingo@1279:             // do nothing
ingo@1279:         }
ingo@1279: 
ingo@1279:         return null;
ingo@1279:     }
ingo@1279: 
ingo@1279: 
ingo@1279:     public static double[] getMinMax(String value) {
ingo@1279:         return getMinMax(value, DEFAULT_DELIM);
ingo@1279:     }
ingo@1279: 
ingo@1279: 
ingo@1279:     public static double[] getMinMax(String value, String delim) {
ingo@1279:         if (value == null) {
ingo@1279:             return null;
ingo@1279:         }
ingo@1279: 
ingo@1279:         String[] values = value.split(delim);
ingo@1279: 
ingo@1279:         int     len = values != null ? values.length : 0;
ingo@1279:         double[] mm = new double[] { Double.MAX_VALUE, -Double.MAX_VALUE };
ingo@1279: 
ingo@1279:         for (int i = 0; i < len; i++) {
ingo@1279:             Double d = getDouble(values[i]);
ingo@1279: 
ingo@1279:             if (d != null) {
ingo@1279:                 mm[0] = mm[0] < d ? mm[0] : d;
ingo@1279:                 mm[1] = mm[1] > d ? mm[1] : d;
ingo@1279:             }
ingo@1279:         }
ingo@1279: 
ingo@1279:         return mm[0] != Double.MAX_VALUE && mm[1] != -Double.MAX_VALUE
ingo@1279:             ? mm
ingo@1279:             : null;
ingo@1279:     }
ingo@1279: }
ingo@1279: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :