All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.yiwowang.intellij.finding.base.util.Utils Maven / Gradle / Ivy

The newest version!
package com.yiwowang.intellij.finding.base.util;

import com.yiwowang.intellij.finding.base.bean.FindUsagesParams;
import com.yiwowang.intellij.finding.base.bean.RefResult;
import org.apache.commons.lang3.StringUtils;

import javax.swing.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Utils {
    private static final ExecutorService sExecutors = Executors.newCachedThreadPool();

    public static void executeThread(Runnable runnable) {
        sExecutors.submit(runnable);
    }

    public static  void executeThread(AsyncTask task) {
        sExecutors.submit(new Runnable() {
            @Override
            public void run() {
                T t = task.doInBackground();
                SwingUtilities.invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        task.doUi(t);
                    }
                });
            }
        });
    }

    public static boolean contains(String str, String searchStr, boolean ignoreCase) {
        String keywords = searchStr.trim();
        if (StringUtils.isEmpty(keywords)) {
            return false;
        }
        String[] array = keywords.split(" ");
        for (String word : array) {
            boolean match = ignoreCase && StringUtils.containsIgnoreCase(str, word)
                    || !ignoreCase && StringUtils.contains(str, word);
            if (!match) {
                return false;
            }
        }
        return true;
    }

    public static Map> resultToMap(List data) {
        Map> map = new HashMap<>();
        for (RefResult result : data) {
            List classList = map.get(result.clazz.component.name);
            if (classList == null) {
                classList = new ArrayList<>();
                map.put(result.clazz.component.name, classList);
            }
            classList.add(result.clazz.name);
        }
        return map;
    }

    public static Map mergeResult(FindUsagesParams params, Map> map) {
        Map data = new HashMap<>();
        switch (params.searchType) {
            case FindUsagesParams.TYPE_CLASS:
                data.put("search_type", "class");
                break;
            case FindUsagesParams.TYPE_METHOD:
                data.put("search_type", "method");
                data.put("search_method", params.methodParamType);
                break;
            case FindUsagesParams.TYPE_FIELD:
                data.put("search_type", "field");
                data.put("search_field", params.fieldName);
                break;
            case FindUsagesParams.TYPE_CONSTANTS:
                data.put("search_type", "constant");
                data.put("search_constant", params.constant);
                break;
            case FindUsagesParams.TYPE_PACKAGE:
                data.put("search_type", "package");
                data.put("search_package", params.packageName);
                break;
        }
        if (params != null && !StringUtils.isEmpty(params.className)) {
            data.put("search_class", params.className);
        }

        data.put("ref", map);
        return data;
    }

    public interface DoWork {
        void run(Object params, List newList);
    }

    public interface AsyncTask {
        T doInBackground();

        void doUi(T data);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy