private static void checkDuplicateNames()

in seam/src/main/java/com/intellij/seam/highlighting/jam/SeamDuplicateComponentsInspection.java [51:93]


  private static void checkDuplicateNames(final ProblemsHolder holder,
                                          final SeamJamComponent seamComponent,
                                          final String componentName,
                                          final PsiType type,
                                          final PsiElement identifyingPsiElement,
                                          final Set<SeamJamComponent> seamComponents,
                                          final  List<SeamComponents> models) {
    if (StringUtil.isEmptyOrSpaces(componentName) || identifyingPsiElement == null || type == null) return;

    Set<String> duplicatedInFiles = new HashSet<>();
    for (SeamJamComponent checkedComponent : seamComponents) {
      if (seamComponent.equals(checkedComponent) || isNotInstall(checkedComponent)) continue;
      if (isNameDuplicated(componentName, checkedComponent) && SeamCommonUtils.comparelInstalls(seamComponent, checkedComponent)) {

        final PsiFile containingFile = checkedComponent.getContainingFile();
        if (containingFile != null) {
          duplicatedInFiles.add(containingFile.getName());
        }
      }
    }

    for (SeamComponents model : models) {
      for (SeamDomComponent seamDomComponent : DomUtil.getDefinedChildrenOfType(model, SeamDomComponent.class)) {
        final PsiType psiType = seamDomComponent.getComponentType();
        if (componentName.equals(seamDomComponent.getComponentName()) && psiType != null && !type.isAssignableFrom(psiType) && SeamCommonUtils.comparelInstalls(seamComponent, seamDomComponent)) {
          final XmlElement xmlElement = seamDomComponent.getXmlElement();
          final PsiFile containingFile;
          if (xmlElement != null) {
            containingFile = xmlElement.getContainingFile();
            if (containingFile != null) {
              duplicatedInFiles.add(containingFile.getName());
              break;
            }
          }
        }
      }
    }

    if (duplicatedInFiles.size() > 0) {
      holder.registerProblem(identifyingPsiElement, SeamInspectionBundle.message("jam.duplicated.component.annotation", duplicatedInFiles,
                                                                                 duplicatedInFiles.size() > 1 ? "s:" : ""));
    }
  }