package com.seventh7.mybatis.util; import com.google.common.base.Function; import com.google.common.collect.Collections2; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiFile; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.xml.XmlFile; import com.intellij.psi.xml.XmlTag; import com.intellij.util.xml.DomElement; import com.intellij.util.xml.DomFileElement; import com.intellij.util.xml.DomService; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.List; public final class DomUtils { private DomUtils() { throw new UnsupportedOperationException(); } @NotNull @NonNls public static <T extends DomElement> Collection<T> findDomElements(@NotNull Project project, Class<T> clazz) { GlobalSearchScope scope = GlobalSearchScope.allScope(project); List<DomFileElement<T>> elements = DomService.getInstance().getFileElements(clazz, project, scope); return Collections2.transform(elements, new Function<DomFileElement<T>, T>() { @Override public T apply(DomFileElement<T> input) { return input.getRootElement(); } }); } public static boolean isMybatisFile(@Nullable PsiFile file) { if (!isXmlFile(file)) { return false; } XmlTag rootTag = ((XmlFile) file).getRootTag(); return null != rootTag && rootTag.getName().equals("mapper"); } public static boolean isMybatisConfigurationFile(@NotNull PsiFile file) { if (!isXmlFile(file)) { return false; } XmlTag rootTag = ((XmlFile) file).getRootTag(); return null != rootTag && rootTag.getName().equals("configuration"); } public static boolean isBeansFile(@NotNull PsiFile file) { if (!isXmlFile(file)) { return false; } XmlTag rootTag = ((XmlFile) file).getRootTag(); return null != rootTag && rootTag.getName().equals("beans"); } static boolean isXmlFile(@NotNull PsiFile file) { return file instanceof XmlFile; } }