Exemplo n.º 1
0
  /**
   * Collects all identifiers which are affected by the renaming of this component, grouped by the
   * file, which defines them.
   *
   * @param pm
   * @return
   * @throws CoreException
   * @throws MissingNatureException
   * @throws IOException
   */
  private Map<IFile, Collection<Identifier>> gatherAffectedIdentifiers(IProgressMonitor pm)
      throws CoreException, MissingNatureException, IOException {
    Map<IFile, Collection<Identifier>> files2Identifiers =
        new HashMap<IFile, Collection<Identifier>>();

    // Add Identifier of component definition
    declaringIdentifier = getIdentifierForPath(componentDefinition.getPath(), pm);
    List<Identifier> identifiers = new LinkedList<Identifier>();
    identifiers.add(declaringIdentifier);
    files2Identifiers.put(declaringFile, identifiers);

    // Add Identifiers of referencing elements
    Collection<IASTModelPath> paths = new LinkedList<IASTModelPath>();
    paths.add(componentDefinition.getPath());
    for (IFile file : getAllFiles()) {
      identifiers = getReferencingIdentifiersInFileForTargetPathsUseHoleRange(file, paths, pm);
      identifiers = throwAwayDifferentNames(identifiers, declaringIdentifier.getName());
      if (identifiers.size() > 0) {
        AstAnalyzerFactory factory = new AstAnalyzerFactory(identifiers.get(0));
        List<Identifier> toRename = new LinkedList<Identifier>();
        for (Identifier identifier : identifiers) {
          ComponentSelectionIdentifier selection =
              new ComponentSelectionIdentifier(identifier, factory);
          if (selection.isComponent()) {
            toRename.add(identifier);
          }
        }
        files2Identifiers.put(file, toRename);
      }
    }
    return files2Identifiers;
  }