package utils;

import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiElement;
import com.intellij.psi.xml.XmlTag;
import com.intellij.usages.ReadWriteAccessUsageInfo2UsageAdapter;
import com.intellij.usages.Usage;
import org.apache.http.util.TextUtils;

/**
 * Utils for resource count
 */
public class ResourceUsageCountUtils {

    /**
     * valid tag to count
     */
    public static boolean isTargetTagToCount(PsiElement tag) {
        if (tag == null || !(tag instanceof XmlTag) || TextUtils.isEmpty(((XmlTag)tag).getName())) {
            return false;
        }
        String name = ((XmlTag)tag).getName();
        return name.equals("array")
                || name.equals("attr")
                || name.equals("bool")
                || name.equals("color")
                || name.equals("declare-styleable")
                || name.equals("dimen")
                || name.equals("drawable")
                || name.equals("eat-comment")
                || name.equals("fraction")
                || name.equals("integer")
                || name.equals("integer-array")
                || name.equals("item")
                || name.equals("plurals")
                || name.equals("string")
                || name.equals("string-array")
                || name.equals("style");
    }

    /**
     * It's useless to count build folder
     */
    public static boolean isUsefulUsageToCount(Usage usage) {
        if (usage instanceof ReadWriteAccessUsageInfo2UsageAdapter) {
            VirtualFile virtualFile = ((ReadWriteAccessUsageInfo2UsageAdapter) usage).getFile();
            if (virtualFile != null) {
                if (!virtualFile.getPath().contains("/bin/") && !virtualFile.getPath().contains("/build/")) {
                    return true;
                }
            }
        }
        return false;
    }
}