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

Robert Stryker rob.stryker at jboss.com
Fri Apr 20 05:38:14 EDT 2007


  User: rawb    
  Date: 07/04/20 05:38:14

  Added:       core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model  
                        ArchivesCore.java
  Removed:     core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model  
                        PackagesCore.java
  Log:
  Global and project-specific view and builder preferences implemented
  
  Revision  Changes    Path
  1.1      date: 2007/04/20 09:38:14;  author: rawb;  state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchivesCore.java
  
  Index: ArchivesCore.java
  ===================================================================
  package org.jboss.ide.eclipse.archives.core.model;
  
  import java.util.ArrayList;
  import java.util.Arrays;
  
  import org.apache.tools.ant.DirectoryScanner;
  import org.eclipse.core.resources.IProject;
  import org.eclipse.core.resources.ResourcesPlugin;
  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.archives.core.ExtensionManager;
  import org.jboss.ide.eclipse.archives.core.build.ArchiveBuildDelegate;
  import org.jboss.ide.eclipse.archives.core.build.ModelChangeListener;
  import org.jboss.ide.eclipse.archives.core.model.internal.ArchivesModel;
  import org.jboss.ide.eclipse.archives.core.model.types.IArchiveType;
  
  public class ArchivesCore {
  	private static ArchivesCore instance;
  	public static ArchivesCore getInstance() {
  		if( instance == null ) 
  			instance = new ArchivesCore();
  		return instance;
  	}
  	
  	private ArrayList buildListeners;
  	private ArrayList modelListeners;
  	public ArchivesCore() {
  		buildListeners = new ArrayList();
  		modelListeners = new ArrayList();
  		addModelListener(new ModelChangeListener());
  	}
  	
  	public void addBuildListener(IArchiveBuildListener listener) {
  		if( !buildListeners.contains(listener)) 
  			buildListeners.add(listener);
  	}
  	public void removeBuildListener(IArchiveBuildListener listener) {
  		if( buildListeners.contains(listener)) 
  			buildListeners.remove(listener);
  	}
  	public IArchiveBuildListener[] getBuildListeners() {
  		return (IArchiveBuildListener[]) buildListeners.toArray(new IArchiveBuildListener[buildListeners.size()]);
  	}
  	
  	public void addModelListener(IArchiveModelListener listener) {
  		if( !modelListeners.contains(listener)) 
  			modelListeners.add(listener);
  	}
  	public void removeModelListener(IArchiveModelListener listener) {
  		if( modelListeners.contains(listener)) 
  			modelListeners.remove(listener);
  	}
  	public IArchiveModelListener[] getModelListeners() {
  		return (IArchiveModelListener[]) modelListeners.toArray(new IArchiveModelListener[modelListeners.size()]);
  	}
  	
  	
  	
  	/**
  	 * Builds all of a project's packages. Note that this does not call any builders before or after the package builder (i.e. the JDT builder).
  	 * If you are looking to run all the builders on a project use project.build()
  	 * @param project The project to build
  	 * @param buildType FULL_BUILD, INCREMENTAL_BUILD, CLEAN_BUILD, etc
  	 * @param monitor A progress monitor
  	 */
  	public static void buildProject (IProject project, IProgressMonitor monitor) {
  		if (monitor == null) monitor = new NullProgressMonitor();
  		new ArchiveBuildDelegate().fullProjectBuild(project);
  	}
  	
  	/**
  	 * Build the passed-in package.
  	 * @param pkg The package to build
  	 */
  	public static void buildArchive (IArchive pkg, IProgressMonitor monitor) {
  		if (monitor == null) monitor = new NullProgressMonitor();
  		new ArchiveBuildDelegate().fullArchiveBuild(pkg);
  	}
  
  	public static IArchive[] getAllProjectPackages(IProgressMonitor monitor) {
  		IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
  		ArrayList results = new ArrayList();
  		for( int i = 0; i < projects.length; i++ ) {
  			if( projects[i].isAccessible()) {
  				results.addAll(Arrays.asList(getProjectPackages(projects[i], monitor, true)));
  			}
  		}
  		return (IArchive[]) results.toArray(new IArchive[results.size()]);
  	}
  	
  	public static IArchive[] getProjectPackages (IProject project, IProgressMonitor monitor, boolean forceInit) {
  		if (monitor == null) monitor = new NullProgressMonitor();
  		
  		monitor.beginTask("Fetching packages for \"" + project.getName() + "\"...", 2);
  		IArchive[] packages = ArchivesModel.instance().getProjectArchives(project);
  		monitor.worked(1);
  		
  		if (packages == null) {
  			if (forceInit && packageFileExists(project)) {
  				ArchivesModel.instance().registerProject(project, monitor);
  				packages = ArchivesModel.instance().getProjectArchives(project);
  			}
  			
  			if (packages == null) return new IArchive[0];
  		}
  
  		monitor.worked(1);
  		monitor.done();
  		return packages;
  	}
  
  	public static boolean packageFileExists (IProject project) {
  		return project.getFile(ArchivesModel.PROJECT_PACKAGES_FILE).exists();
  	}
  	
  	public static boolean projectRegistered(IProject project) {
  		return ArchivesModel.instance().getRoot(project) == null ? false : true;
  	}
  
  	
  	/**
  	 * Visit all of the top-level packages in the passed in project with the passed in node visitor
  	 * @param project The project whose packages to visit
  	 * @param visitor The visitor
  	 */
  	public static void visitProjectArchives (IProject project, IArchiveNodeVisitor visitor) {
  		if (packageFileExists(project)) {
  			IArchive packages[] = getProjectPackages(project, null, false);
  			if( packages == null ) return;
  			for (int i = 0; i < packages.length; i++) {
  				boolean keepGoing = packages[i].accept(visitor);
  				if (!keepGoing) break;
  			}
  		}
  	}
  
  	
  	public static IArchiveType getPackageType (String packageType) {
  		return ExtensionManager.getArchiveType(packageType);
  	}
  
  	public static IPath[] findMatchingPaths(IPath root, String includes, String excludes) {
  		DirectoryScanner scanner  = 
  			DirectoryScannerFactory.createDirectoryScanner(root, includes, excludes, true);
  		String[] files = scanner.getIncludedFiles();
  		IPath[] paths = new IPath[files.length];
  		for( int i = 0; i < files.length; i++ ) {
  			paths[i] = new Path(files[i]);
  		}
  		return paths;
  	}
  }
  
  
  



More information about the jboss-cvs-commits mailing list