Package org.eclipse.php.internal.core.search

Source Code of org.eclipse.php.internal.core.search.PHPCallProcessor$Requestor

/*******************************************************************************
* Copyright (c) 2014 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     Dawid PakuĊ‚a - initial API and implementation
*******************************************************************************/
package org.eclipse.php.internal.core.search;

import java.util.HashMap;
import java.util.Map;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.dltk.ast.references.SimpleReference;
import org.eclipse.dltk.core.ICallProcessor;
import org.eclipse.dltk.core.IModelElement;
import org.eclipse.dltk.core.search.*;
import org.eclipse.php.internal.core.Logger;

public class PHPCallProcessor implements ICallProcessor {
  private final static String EMPTY_STRING = ""; //$NON-NLS-1$
  private SearchEngine engine = new SearchEngine();

  private class Requestor extends SearchRequestor {

    public Map<Object, Object> result = new HashMap<Object, Object>();
    private IModelElement search;

    public Requestor(IModelElement member) {
      this.search = member;
    }

    @Override
    public void acceptSearchMatch(SearchMatch match) throws CoreException {
      if ((match.getAccuracy() != SearchMatch.A_ACCURATE)) {
        return;
      }

      if (match.isInsideDocComment()) {
        return;
      }

      if (match.getElement() != null
          && match.getElement() instanceof IModelElement) {
        IModelElement member = (IModelElement) match.getElement();

        SimpleReference ref = new SimpleReference(match.getOffset(),
            match.getOffset() + match.getLength(), EMPTY_STRING);
        result.put(ref, member);
      }
    }
  }

  @Override
  public Map process(IModelElement parent, IModelElement member,
      IDLTKSearchScope scope, IProgressMonitor monitor) {

    SearchPattern pattern = SearchPattern.createPattern(member,
        IDLTKSearchConstants.REFERENCES, SearchPattern.R_EXACT_MATCH
            | SearchPattern.R_ERASURE_MATCH,
        scope.getLanguageToolkit());
    Requestor req = new Requestor(member);
    try {
      engine.search(pattern, new SearchParticipant[] { SearchEngine
          .getDefaultSearchParticipant() }, scope, req, monitor);
    } catch (CoreException e) {
      Logger.logException(e);
    }

    return req.result;
  }

}
TOP

Related Classes of org.eclipse.php.internal.core.search.PHPCallProcessor$Requestor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.