Java 类org.joda.time.MutableDateTime.Property 实例源码

项目:TinyTravelTracker    文件:DateTimeFormatterBuilder.java   
@SuppressWarnings("unchecked")
public int parseInto(DateTimeParserBucket bucket, String text, int position) {
    Locale locale = bucket.getLocale();
    // handle languages which might have non ASCII A-Z or punctuation
    // bug 1788282
    Set<String> validValues = null;
    int maxLength = 0;
    synchronized (cParseCache) {
        Map<DateTimeFieldType, Object[]> innerMap = cParseCache.get(locale);
        if (innerMap == null) {
            innerMap = new HashMap<DateTimeFieldType, Object[]>();
            cParseCache.put(locale, innerMap);
        }
        Object[] array = innerMap.get(iFieldType);
        if (array == null) {
            validValues = new HashSet<String>(32);
            MutableDateTime dt = new MutableDateTime(0L, DateTimeZone.UTC);
            Property property = dt.property(iFieldType);
            int min = property.getMinimumValueOverall();
            int max = property.getMaximumValueOverall();
            if (max - min > 32) {  // protect against invalid fields
                return ~position;
            }
            maxLength = property.getMaximumTextLength(locale);
            for (int i = min; i <= max; i++) {
                property.set(i);
                validValues.add(property.getAsShortText(locale));
                validValues.add(property.getAsShortText(locale).toLowerCase(locale));
                validValues.add(property.getAsShortText(locale).toUpperCase(locale));
                validValues.add(property.getAsText(locale));
                validValues.add(property.getAsText(locale).toLowerCase(locale));
                validValues.add(property.getAsText(locale).toUpperCase(locale));
            }
            if ("en".equals(locale.getLanguage()) && iFieldType == DateTimeFieldType.era()) {
                // hack to support for parsing "BCE" and "CE" if the language is English
                validValues.add("BCE");
                validValues.add("bce");
                validValues.add("CE");
                validValues.add("ce");
                maxLength = 3;
            }
            array = new Object[] {validValues, Integer.valueOf(maxLength)};
            innerMap.put(iFieldType, array);
        } else {
            validValues = (Set<String>) array[0];
            maxLength = ((Integer) array[1]).intValue();
        }
    }
    // match the longest string first using our knowledge of the max length
    int limit = Math.min(text.length(), position + maxLength);
    for (int i = limit; i > position; i--) {
        String match = text.substring(position, i);
        if (validValues.contains(match)) {
            bucket.saveField(iFieldType, match, locale);
            return i;
        }
    }
    return ~position;
}
项目:astor    文件:DateTimeFormatterBuilder.java   
@SuppressWarnings("unchecked")
public int parseInto(DateTimeParserBucket bucket, String text, int position) {
    Locale locale = bucket.getLocale();
    // handle languages which might have non ASCII A-Z or punctuation
    // bug 1788282
    Set<String> validValues = null;
    int maxLength = 0;
    synchronized (cParseCache) {
        Map<DateTimeFieldType, Object[]> innerMap = cParseCache.get(locale);
        if (innerMap == null) {
            innerMap = new HashMap<DateTimeFieldType, Object[]>();
            cParseCache.put(locale, innerMap);
        }
        Object[] array = innerMap.get(iFieldType);
        if (array == null) {
            validValues = new HashSet<String>(32);
            MutableDateTime dt = new MutableDateTime(0L, DateTimeZone.UTC);
            Property property = dt.property(iFieldType);
            int min = property.getMinimumValueOverall();
            int max = property.getMaximumValueOverall();
            if (max - min > 32) {  // protect against invalid fields
                return ~position;
            }
            maxLength = property.getMaximumTextLength(locale);
            for (int i = min; i <= max; i++) {
                property.set(i);
                validValues.add(property.getAsShortText(locale));
                validValues.add(property.getAsShortText(locale).toLowerCase(locale));
                validValues.add(property.getAsShortText(locale).toUpperCase(locale));
                validValues.add(property.getAsText(locale));
                validValues.add(property.getAsText(locale).toLowerCase(locale));
                validValues.add(property.getAsText(locale).toUpperCase(locale));
            }
            if ("en".equals(locale.getLanguage()) && iFieldType == DateTimeFieldType.era()) {
                // hack to support for parsing "BCE" and "CE" if the language is English
                validValues.add("BCE");
                validValues.add("bce");
                validValues.add("CE");
                validValues.add("ce");
                maxLength = 3;
            }
            array = new Object[] {validValues, Integer.valueOf(maxLength)};
            innerMap.put(iFieldType, array);
        } else {
            validValues = (Set<String>) array[0];
            maxLength = ((Integer) array[1]).intValue();
        }
    }
    // match the longest string first using our knowledge of the max length
    int limit = Math.min(text.length(), position + maxLength);
    for (int i = limit; i > position; i--) {
        String match = text.substring(position, i);
        if (validValues.contains(match)) {
            bucket.saveField(iFieldType, match, locale);
            return i;
        }
    }
    return ~position;
}
项目:astor    文件:DateTimeFormatterBuilder.java   
@SuppressWarnings("unchecked")
public int parseInto(DateTimeParserBucket bucket, String text, int position) {
    Locale locale = bucket.getLocale();
    // handle languages which might have non ASCII A-Z or punctuation
    // bug 1788282
    Set<String> validValues = null;
    int maxLength = 0;
    synchronized (cParseCache) {
        Map<DateTimeFieldType, Object[]> innerMap = cParseCache.get(locale);
        if (innerMap == null) {
            innerMap = new HashMap<DateTimeFieldType, Object[]>();
            cParseCache.put(locale, innerMap);
        }
        Object[] array = innerMap.get(iFieldType);
        if (array == null) {
            validValues = new HashSet<String>(32);
            MutableDateTime dt = new MutableDateTime(0L, DateTimeZone.UTC);
            Property property = dt.property(iFieldType);
            int min = property.getMinimumValueOverall();
            int max = property.getMaximumValueOverall();
            if (max - min > 32) {  // protect against invalid fields
                return ~position;
            }
            maxLength = property.getMaximumTextLength(locale);
            for (int i = min; i <= max; i++) {
                property.set(i);
                validValues.add(property.getAsShortText(locale));
                validValues.add(property.getAsShortText(locale).toLowerCase(locale));
                validValues.add(property.getAsShortText(locale).toUpperCase(locale));
                validValues.add(property.getAsText(locale));
                validValues.add(property.getAsText(locale).toLowerCase(locale));
                validValues.add(property.getAsText(locale).toUpperCase(locale));
            }
            if ("en".equals(locale.getLanguage()) && iFieldType == DateTimeFieldType.era()) {
                // hack to support for parsing "BCE" and "CE" if the language is English
                validValues.add("BCE");
                validValues.add("bce");
                validValues.add("CE");
                validValues.add("ce");
                maxLength = 3;
            }
            array = new Object[] {validValues, Integer.valueOf(maxLength)};
            innerMap.put(iFieldType, array);
        } else {
            validValues = (Set<String>) array[0];
            maxLength = ((Integer) array[1]).intValue();
        }
    }
    // match the longest string first using our knowledge of the max length
    int limit = Math.min(text.length(), position + maxLength);
    for (int i = limit; i > position; i--) {
        String match = text.substring(position, i);
        if (validValues.contains(match)) {
            bucket.saveField(iFieldType, match, locale);
            return i;
        }
    }
    return ~position;
}
项目:idylfin    文件:DateTimeFormatterBuilder.java   
@SuppressWarnings("unchecked")
public int parseInto(DateTimeParserBucket bucket, String text, int position) {
    Locale locale = bucket.getLocale();
    // handle languages which might have non ASCII A-Z or punctuation
    // bug 1788282
    Set<String> validValues = null;
    int maxLength = 0;
    synchronized (cParseCache) {
        Map<DateTimeFieldType, Object[]> innerMap = cParseCache.get(locale);
        if (innerMap == null) {
            innerMap = new HashMap<DateTimeFieldType, Object[]>();
            cParseCache.put(locale, innerMap);
        }
        Object[] array = innerMap.get(iFieldType);
        if (array == null) {
            validValues = new HashSet<String>(32);
            MutableDateTime dt = new MutableDateTime(0L, DateTimeZone.UTC);
            Property property = dt.property(iFieldType);
            int min = property.getMinimumValueOverall();
            int max = property.getMaximumValueOverall();
            if (max - min > 32) {  // protect against invalid fields
                return ~position;
            }
            maxLength = property.getMaximumTextLength(locale);
            for (int i = min; i <= max; i++) {
                property.set(i);
                validValues.add(property.getAsShortText(locale));
                validValues.add(property.getAsShortText(locale).toLowerCase(locale));
                validValues.add(property.getAsShortText(locale).toUpperCase(locale));
                validValues.add(property.getAsText(locale));
                validValues.add(property.getAsText(locale).toLowerCase(locale));
                validValues.add(property.getAsText(locale).toUpperCase(locale));
            }
            if ("en".equals(locale.getLanguage()) && iFieldType == DateTimeFieldType.era()) {
                // hack to support for parsing "BCE" and "CE" if the language is English
                validValues.add("BCE");
                validValues.add("bce");
                validValues.add("CE");
                validValues.add("ce");
                maxLength = 3;
            }
            array = new Object[] {validValues, Integer.valueOf(maxLength)};
            innerMap.put(iFieldType, array);
        } else {
            validValues = (Set<String>) array[0];
            maxLength = ((Integer) array[1]).intValue();
        }
    }
    // match the longest string first using our knowledge of the max length
    int limit = Math.min(text.length(), position + maxLength);
    for (int i = limit; i > position; i--) {
        String match = text.substring(position, i);
        if (validValues.contains(match)) {
            bucket.saveField(iFieldType, match, locale);
            return i;
        }
    }
    return ~position;
}
项目:versemem-android    文件:DateTimeFormatterBuilder.java   
@SuppressWarnings("unchecked")
public int parseInto(DateTimeParserBucket bucket, String text, int position) {
    Locale locale = bucket.getLocale();
    // handle languages which might have non ASCII A-Z or punctuation
    // bug 1788282
    Set<String> validValues = null;
    int maxLength = 0;
    synchronized (cParseCache) {
        Map<DateTimeFieldType, Object[]> innerMap = cParseCache.get(locale);
        if (innerMap == null) {
            innerMap = new HashMap<DateTimeFieldType, Object[]>();
            cParseCache.put(locale, innerMap);
        }
        Object[] array = innerMap.get(iFieldType);
        if (array == null) {
            validValues = new HashSet<String>(32);
            MutableDateTime dt = new MutableDateTime(0L, DateTimeZone.UTC);
            Property property = dt.property(iFieldType);
            int min = property.getMinimumValueOverall();
            int max = property.getMaximumValueOverall();
            if (max - min > 32) {  // protect against invalid fields
                return ~position;
            }
            maxLength = property.getMaximumTextLength(locale);
            for (int i = min; i <= max; i++) {
                property.set(i);
                validValues.add(property.getAsShortText(locale));
                validValues.add(property.getAsShortText(locale).toLowerCase(locale));
                validValues.add(property.getAsShortText(locale).toUpperCase(locale));
                validValues.add(property.getAsText(locale));
                validValues.add(property.getAsText(locale).toLowerCase(locale));
                validValues.add(property.getAsText(locale).toUpperCase(locale));
            }
            if ("en".equals(locale.getLanguage()) && iFieldType == DateTimeFieldType.era()) {
                // hack to support for parsing "BCE" and "CE" if the language is English
                validValues.add("BCE");
                validValues.add("bce");
                validValues.add("CE");
                validValues.add("ce");
                maxLength = 3;
            }
            array = new Object[] {validValues, Integer.valueOf(maxLength)};
            innerMap.put(iFieldType, array);
        } else {
            validValues = (Set<String>) array[0];
            maxLength = ((Integer) array[1]).intValue();
        }
    }
    // match the longest string first using our knowledge of the max length
    int limit = Math.min(text.length(), position + maxLength);
    for (int i = limit; i > position; i--) {
        String match = text.substring(position, i);
        if (validValues.contains(match)) {
            bucket.saveField(iFieldType, match, locale);
            return i;
        }
    }
    return ~position;
}