Package com.ibm.icu.util

Examples of com.ibm.icu.util.TimeUnit


  public Object parseObject(final String source, final ParsePosition pos) {
    if (!isReady) {
      setup();
    }
    Number resultNumber = null;
    TimeUnit resultTimeUnit = null;
    int oldPos = pos.getIndex();
    int newPos = -1;
    int longestParseDistance = 0;
    String countOfLongestMatch = null;
    // we don't worry too much about speed on parsing, but this can be optimized later if needed.
View Full Code Here


      ICUResourceBundle resource = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
      ICUResourceBundle unitsRes = resource.getWithFallback(resourceKey);
      int size = unitsRes.getSize();
      for (int index = 0; index < size; ++index) {
        String timeUnitName = unitsRes.get(index).getKey();
        TimeUnit timeUnit = null;
        if (timeUnitName.equals("year")) {
          timeUnit = TimeUnit.YEAR;
        } else if (timeUnitName.equals("month")) {
          timeUnit = TimeUnit.MONTH;
        } else if (timeUnitName.equals("day")) {
          timeUnit = TimeUnit.DAY;
        } else if (timeUnitName.equals("hour")) {
          timeUnit = TimeUnit.HOUR;
        } else if (timeUnitName.equals("minute")) {
          timeUnit = TimeUnit.MINUTE;
        } else if (timeUnitName.equals("second")) {
          timeUnit = TimeUnit.SECOND;
        } else if (timeUnitName.equals("week")) {
          timeUnit = TimeUnit.WEEK;
        } else {
          continue;
        }
        ICUResourceBundle oneUnitRes = unitsRes.getWithFallback(timeUnitName);
        int count = oneUnitRes.getSize();
        Map<String, Object[]> countToPatterns = timeUnitToCountToPatterns.get(timeUnit);
        if (countToPatterns == null) {
          countToPatterns = new TreeMap<String, Object[]>();
          timeUnitToCountToPatterns.put(timeUnit, countToPatterns);
        }
        for (int pluralIndex = 0; pluralIndex < count; ++pluralIndex) {
          String pluralCount = oneUnitRes.get(pluralIndex).getKey();
          if (!pluralKeywords.contains(pluralCount))
            continue;
          String pattern = oneUnitRes.get(pluralIndex).getString();
          final MessageFormat messageFormat = new MessageFormat(pattern, locale);
          if (format != null) {
            messageFormat.setFormatByArgumentIndex(0, format);
          }
          // save both full name and abbreviated name in one table
          // is good space-wise, but it degrades performance,
          // since it needs to check whether the needed space
          // is already allocated or not.
          Object[] pair = countToPatterns.get(pluralCount);
          if (pair == null) {
            pair = new Object[2];
            countToPatterns.put(pluralCount, pair);
          }
          pair[style] = messageFormat;
        }
      }
    } catch (MissingResourceException e) {
    }

    // there should be patterns for each plural rule in each time unit.
    // For each time unit,
    //     for each plural rule, following is unit pattern fall-back rule:
    //         ( for example: "one" hour )
    //         look for its unit pattern in its locale tree.
    //         if pattern is not found in its own locale, such as de_DE,
    //         look for the pattern in its parent, such as de,
    //         keep looking till found or till root.
    //         if the pattern is not found in root either,
    //         fallback to plural count "other",
    //         look for the pattern of "other" in the locale tree:
    //         "de_DE" to "de" to "root".
    //         If not found, fall back to value of
    //         static variable DEFAULT_PATTERN_FOR_xxx, such as "{0} h".
    //
    // Following is consistency check to create pattern for each
    // plural rule in each time unit using above fall-back rule.
    //
    final TimeUnit[] timeUnits = TimeUnit.values();
    Set<String> keywords = pluralRules.getKeywords();
    for (int i = 0; i < timeUnits.length; ++i) {
      // for each time unit,
      // get all the patterns for each plural rule in this locale.
      final TimeUnit timeUnit = timeUnits[i];
      Map<String, Object[]> countToPatterns = timeUnitToCountToPatterns.get(timeUnit);
      if (countToPatterns == null) {
        countToPatterns = new TreeMap<String, Object[]>();
        timeUnitToCountToPatterns.put(timeUnit, countToPatterns);
      }
View Full Code Here

TOP

Related Classes of com.ibm.icu.util.TimeUnit

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.