[jboss-cvs] jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/internal ...

Marshall Culpepper mculpepper at jboss.com
Thu Feb 15 17:49:53 EST 2007


  User: mculpepper
  Date: 07/02/15 17:49:53

  Modified:    core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/internal 
                        PackagesModel.java
  Log:
  added 2 new convenience methods (for use internally) that retrieve top level packages from a specific node, and the entire object tree(pathway) to that node from each top level package. this allows us to construct the full path to each reference and update it accordingly at build time
  
  Revision  Changes    Path
  1.17      +82 -2     jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/internal/PackagesModel.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: PackagesModel.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/internal/PackagesModel.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -b -r1.16 -r1.17
  --- PackagesModel.java	14 Feb 2007 17:53:00 -0000	1.16
  +++ PackagesModel.java	15 Feb 2007 22:49:53 -0000	1.17
  @@ -41,10 +41,8 @@
   import org.eclipse.core.runtime.IPath;
   import org.eclipse.core.runtime.IProgressMonitor;
   import org.eclipse.core.runtime.NullProgressMonitor;
  -import org.eclipse.core.runtime.Path;
   import org.jboss.ide.eclipse.core.util.ProjectUtil;
   import org.jboss.ide.eclipse.packages.core.ExtensionManager;
  -import org.jboss.ide.eclipse.packages.core.PackagesCorePlugin;
   import org.jboss.ide.eclipse.packages.core.Trace;
   import org.jboss.ide.eclipse.packages.core.model.IPackage;
   import org.jboss.ide.eclipse.packages.core.model.IPackageFileSet;
  @@ -94,6 +92,88 @@
   		return _instance;
   	}
   	
  +	protected Hashtable getTopLevelPackageAndPathway (IPackageNode node)
  +	{
  +		ArrayList parents = new ArrayList();
  +		IPackageNode tmp = node.getParent(), top = tmp;
  +		
  +		while (tmp != null)
  +		{
  +			top = tmp;
  +			parents.add(0, top);
  +			
  +			tmp = tmp.getParent();
  +		}
  +		
  +		IPackage topLevelPackage = null;
  +		
  +		if (top instanceof IPackage)
  +			topLevelPackage = (IPackage)top;
  +		
  +		Hashtable pkgAndPath = new Hashtable();
  +		
  +		if (topLevelPackage != null)
  +			pkgAndPath.put(topLevelPackage, parents);
  +		
  +		return pkgAndPath;
  +	}
  +	
  +	/**
  +	 * This will return a hashtable of top-level packages and their corresponding
  +	 * pathways from the passed-in node. This is used for determining all the pathway possibilities
  +	 * for a single package node.
  +	 *
  +	 */
  +	protected Hashtable getTopLevelPackagesAndPathways (IPackageNode node)
  +	{
  +		Hashtable pkgsAndPaths = new Hashtable();
  +		
  +		IPackage originalSource = PackagesCore.getTopLevelPackage(node);
  +		ArrayList parents = new ArrayList();
  +		
  +		IPackageNode parent = node.getParent();
  +		while (parent != null)
  +		{
  +			parents.add(0, parent);
  +			
  +			parent = parent.getParent();
  +		}
  +		pkgsAndPaths.put(originalSource, parents);
  +		
  +		parents = new ArrayList();
  +		
  +		IPackageNode tmp = node.getParent(), top = tmp;
  +		while (tmp != null)
  +		{
  +			top = tmp;
  +			if (top.getNodeType() == IPackageNode.TYPE_PACKAGE)
  +			{
  +				IPackage pkg = (IPackage) top;
  +				IPackageReference refs[] = pkg.getReferences();
  +				for (int i = 0; i < refs.length; i++)
  +				{
  +					Hashtable pkgAndPath = getTopLevelPackageAndPathway(refs[i]);
  +					Iterator iter = pkgAndPath.keySet().iterator();
  +					if (iter.hasNext())
  +					{
  +						IPackage topLevelPackage = (IPackage) iter.next();
  +						ArrayList pathway = (ArrayList) pkgAndPath.get(topLevelPackage);
  +						ArrayList fullPathway = new ArrayList(parents);
  +						fullPathway.addAll(pathway);
  +						fullPathway.add(refs[i]);
  +						
  +						pkgsAndPaths.put(topLevelPackage, fullPathway);
  +					}
  +				}
  +			} else {
  +				parents.add(0, top);
  +			}
  +			tmp = tmp.getParent();
  +		}
  +		
  +		return pkgsAndPaths;
  +	}
  +	
   	public void registerProject(IProject project, IProgressMonitor monitor)
   	{
   		if (projectBeingRegistered == null)
  
  
  



More information about the jboss-cvs-commits mailing list