public List searchByClassName()

in jdtls.ext/com.microsoft.java.maven.plugin/src/main/java/com/microsoft/java/maven/ArtifactSearcher.java [211:258]


    public List<ArtifactResult> searchByClassName(String className)  {
        Map<String, ArtifactResult> r1 = mavenSearcher != null ?
                mavenSearcher.searchByClassName(className) : new HashMap<>();
        if (r1.size() < 5 && netSearcher != null) {
            final Map<String, ArtifactResult> r2 = netSearcher.searchByClassName(className);
            r2.putAll(r1); // r1 will override r2 if necessary
            r1 = r2;
        }
        final List<ArtifactResult> result = new ArrayList<>(r1.values());
        final List<ArtifactResult> azureResult = new ArrayList<>();
        for (final ArtifactResult r : result) {
            final String id = r.getGroupId() + ":" + r.getArtifactId();
            if (artifactUsageDict.containsKey(id)) {
                r.setUsage(artifactUsageDict.get(r.getGroupId() + ":" + r.getArtifactId()));
            } else {
                r.setUsage(0);
            }

            if (azureSet.contains(r.getArtifactId())) {
                azureResult.add(r);
            }
        }
        // filter
        final Iterator<ArtifactResult> it = result.iterator();
        while (it.hasNext()) {
            final ArtifactResult r = it.next();
            if (r.getKind() == ArtifactResult.FUZZY && r.getUsage() < fuzzyResultThreshold) {
                it.remove();
            }
        }

        Collections.sort(result, orderByRule); // Top-k instead?
        final int starNums = (int) Math.min(Math.round(result.size() / 5.0), 5);
        if (!azureResult.isEmpty()) {
            final ArtifactResult ar = Collections.min(azureResult, orderByRule);
            if (starNums > 1 && !result.subList(0, starNums).contains(ar)) {
                result.remove(ar);
                result.add(starNums - 1, ar);
            }
        }
        Collections.sort(result.subList(starNums, result.size()), new Comparator<ArtifactResult>() {
            @Override
            public int compare(ArtifactResult r1, ArtifactResult r2) {
                return r1.getClassName().toLowerCase().compareTo(r2.getClassName().toLowerCase());
            }
        });
        return result;
    }