Package mmrnmhrm.core.search

Source Code of mmrnmhrm.core.search.ImportPathVisitor

package mmrnmhrm.core.search;

import melnorme.lang.ide.core.utils.EclipseUtils;
import mmrnmhrm.core.DeeCore;

import org.dsource.ddt.ide.core.DeeNature;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.dltk.core.DLTKCore;
import org.eclipse.dltk.core.IBuildpathEntry;
import org.eclipse.dltk.core.IProjectFragment;
import org.eclipse.dltk.core.IScriptProject;
import org.eclipse.dltk.core.ModelException;

public class ImportPathVisitor {
 
  protected static boolean isAccessible(IScriptProject scriptProject) {
    return DeeNature.isAccessible(scriptProject.getProject(), false);
  }
 
  protected void iteratonFullImportPath(IScriptProject deeProject) throws ModelException {
    if(!isAccessible(deeProject))
      return;
   
    for (IProjectFragment srcFolder : deeProject.getProjectFragments()) {
      boolean stop = visitSourceContainer(srcFolder);
      if(stop) {
        return;
      }
    }
   
    IBuildpathEntry[] resolvedBuildpath = deeProject.getResolvedBuildpath(true);
    for (IBuildpathEntry bpEntry : resolvedBuildpath) {
      if(bpEntry.getEntryKind() == IBuildpathEntry.BPE_PROJECT) {
        IPath path = bpEntry.getPath();
        if(path.segmentCount() != 1) {
          DeeCore.logError("Invalid path in project BP entry: " + path);
          continue;
        }
        String projectName = path.segment(0);
        IScriptProject depProject = getDeeScriptProject(projectName);
        if(depProject == null) {
          continue;
        }
        IProjectFragment[] projectFragments = depProject.getProjectFragments();
        for (IProjectFragment projectFragment : projectFragments) {
          if(projectFragment.isExternal()) {
            continue;
          }
         
          boolean stop = visitSourceContainer(projectFragment);
          if(stop) {
            return;
          }
        }
      }
    }
  }
 
  @SuppressWarnings("unused")
  protected boolean visitSourceContainer(IProjectFragment srcContainer) throws ModelException {
    return false;
  }
 
  protected IScriptProject getDeeScriptProject(String projectName) {
    IProject project = EclipseUtils.getWorkspaceRoot().getProject(projectName);
    try {
      if(DeeNature.isAccessible(project)) {
        return DLTKCore.create(project);
      }
    } catch (CoreException e) {
    }
    return null;
  }
 
}
TOP

Related Classes of mmrnmhrm.core.search.ImportPathVisitor

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.