Mega Code Archive

 
Categories / Java / Data Type
 

Parses a time period into a long Translates possible [msecsecminh] suffixes

import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.net.URLDecoder; import java.util.Map; /*   * JBoss, Home of Professional Open Source   * Copyright 2005, JBoss Inc., and individual contributors as indicated   * by the @authors tag. See the copyright.txt in the distribution for a   * full listing of individual contributors.   *   * This is free software; you can redistribute it and/or modify it   * under the terms of the GNU Lesser General Public License as   * published by the Free Software Foundation; either version 2.1 of   * the License, or (at your option) any later version.   *   * This software is distributed in the hope that it will be useful,   * but WITHOUT ANY WARRANTY; without even the implied warranty of   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   * Lesser General Public License for more details.   *   * You should have received a copy of the GNU Lesser General Public   * License along with this software; if not, write to the Free   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.   */ public class Main{   /** Millisecond conversion constants */   private static final long MSEC = 1;   private static final long SECS = 1000;   private static final long MINS = 60 * 1000;   private static final long HOUR = 60 * 60 * 1000;   /**    * Parses a time period into a long.    *    * Translates possible [msec|sec|min|h] suffixes    *    * For example:    *   "1"      ->  1 (msec)    *   "1msec   ->  1 (msec)    *   "1sec"   ->  1000 (msecs)    *   "1min"   ->  60000 (msecs)    *   "1h"     ->  3600000 (msecs)    *     * Accepts negative periods, e.g. "-1"    *     * @param period the stringfied time period    * @return the parsed time period as long    * @throws NumberFormatException    */   public static long parseTimePeriod(String period)   {      try      {         String s = period.toLowerCase();         long factor;                  // look for suffix         if (s.endsWith("msec"))         {            s = s.substring(0, s.lastIndexOf("msec"));            factor = MSEC;         }         else if (s.endsWith("sec"))         {            s = s.substring(0, s.lastIndexOf("sec"));            factor = SECS;         }         else if (s.endsWith("min"))         {            s = s.substring(0, s.lastIndexOf("min"));            factor = MINS;         }         else if (s.endsWith("h"))         {            s = s.substring(0, s.lastIndexOf("h"));            factor = HOUR;         }         else         {            factor = 1;         }           return Long.parseLong(s) * factor;      }      catch (RuntimeException e)      {         // thrown in addition when period is 'null'         throw new NumberFormatException("For input time period: '" + period + "'");      }   }      /**    * Same like parseTimePeriod(), but guards for negative entries.    *     * @param period the stringfied time period    * @return the parsed time period as long    * @throws NumberFormatException    */   public static long parsePositiveTimePeriod(String period)   {      long retval = parseTimePeriod(period);      if (retval < 0)      {         throw new NumberFormatException("Negative input time period: '" + period + "'");      }      return retval;   } }