ttomcat-1778514358873.zip-extract/_dependencies/maven/com.h2database_h2-2.2.220/org/h2/value/CompareModeIcu4J.java

Path
ttomcat-1778514358873.zip-extract/_dependencies/maven/com.h2database_h2-2.2.220/org/h2/value/CompareModeIcu4J.java
Status
scanned
Type
file
Name
CompareModeIcu4J.java
Extension
.java
Programming language
Java
Mime type
text/x-java
File type
Java source, ASCII text
Tag

      
    
Rootfs path

      
    
Size
3513 (3.4 KB)
MD5
eac6e07bb0281de5d077cd433ecf28aa
SHA1
0c734d87601ce999b0306950d83aa1410b693eb1
SHA256
839860b57f8ed5872fa26d5def5fba3f5e936a0e4e471432bcd2819e47115ef3
SHA512

      
    
SHA1_git
3ff904ae45977725a0476aca14b813f23750109a
Is binary

      
    
Is text
True
Is archive

      
    
Is media

      
    
Is legal

      
    
Is manifest

      
    
Is readme

      
    
Is top level

      
    
Is key file

      
    
CompareModeIcu4J.java | 3.4 KB |

/* * Copyright 2004-2023 H2 Group. Multiple-Licensed under the MPL 2.0, * and the EPL 1.0 (https://h2database.com/html/license.html). * Initial Developer: H2 Group */ package org.h2.value; import java.lang.reflect.Method; import java.text.Collator; import java.util.Comparator; import java.util.Locale; import org.h2.message.DbException; import org.h2.util.JdbcUtils; import org.h2.util.StringUtils; /** * An implementation of CompareMode that uses the ICU4J Collator. */ public class CompareModeIcu4J extends CompareMode { private final Comparator<String> collator; private volatile CompareModeIcu4J caseInsensitive; protected CompareModeIcu4J(String name, int strength) { super(name, strength); collator = getIcu4jCollator(name, strength); } @Override public int compareString(String a, String b, boolean ignoreCase) { if (ignoreCase && getStrength() > Collator.SECONDARY) { CompareModeIcu4J i = caseInsensitive; if (i == null) { caseInsensitive = i = new CompareModeIcu4J(getName(), Collator.SECONDARY); } return i.compareString(a, b, false); } return collator.compare(a, b); } @Override public boolean equalsChars(String a, int ai, String b, int bi, boolean ignoreCase) { return compareString(a.substring(ai, ai + 1), b.substring(bi, bi + 1), ignoreCase) == 0; } @SuppressWarnings("unchecked") private static Comparator<String> getIcu4jCollator(String name, int strength) { try { Comparator<String> result = null; Class<?> collatorClass = JdbcUtils.loadUserClass( "com.ibm.icu.text.Collator"); Method getInstanceMethod = collatorClass.getMethod( "getInstance", Locale.class); int length = name.length(); if (length == 2) { Locale locale = new Locale(StringUtils.toLowerEnglish(name), ""); if (compareLocaleNames(locale, name)) { result = (Comparator<String>) getInstanceMethod.invoke(null, locale); } } else if (length == 5) { // LL_CC (language_country) int idx = name.indexOf('_'); if (idx >= 0) { String language = StringUtils.toLowerEnglish(name.substring(0, idx)); String country = name.substring(idx + 1); Locale locale = new Locale(language, country); if (compareLocaleNames(locale, name)) { result = (Comparator<String>) getInstanceMethod.invoke(null, locale); } } } if (result == null) { for (Locale locale : (Locale[]) collatorClass.getMethod( "getAvailableLocales").invoke(null)) { if (compareLocaleNames(locale, name)) { result = (Comparator<String>) getInstanceMethod.invoke(null, locale); break; } } } if (result == null) { throw DbException.getInvalidValueException("collator", name); } collatorClass.getMethod("setStrength", int.class).invoke(result, strength); return result; } catch (Exception e) { throw DbException.convert(e); } } }
Detected license expression

      
    
Detected license expression (SPDX)

      
    
Percentage of license text
3.63
Copyrights
- end_line: 2
  copyright: Copyright 2004-2023 H2 Group. Multiple-Licensed
  start_line: 2
Holders
- holder: H2 Group. Multiple-Licensed
  end_line: 2
  start_line: 2
Authors

      
    
License expression License clue details
(mpl-2.0 OR epl-1.0) AND proprietary-license {'score': 20.37, 'matcher': '3-seq', 'end_line': 3, 'rule_url': 'https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/mpl-2.0_or_epl-1.0_and_proprietary-license_2.RULE', 'from_file': None, 'start_line': 2, 'matched_text': ' * Copyright 2004-2023 H2 Group. Multiple-Licensed under the MPL 2.0,\n * and the EPL 1.0 (https://h2database.com/html/license.html).', 'match_coverage': 20.37, 'matched_length': 11, 'rule_relevance': 100, 'rule_identifier': 'mpl-2.0_or_epl-1.0_and_proprietary-license_2.RULE', 'license_expression': '(mpl-2.0 OR epl-1.0) AND proprietary-license', 'license_expression_spdx': '(MPL-2.0 OR EPL-1.0) AND LicenseRef-scancode-proprietary-license'}
URL Start line End line
https://h2database.com/html/license.html 3 3
Package URL License Primary language
pkg:osgi/com.h2database.source@2.2.220