public void run(IProgressMonitor monitor) throws CoreException { Iterator outputs = work.keySet().iterator(); while (outputs.hasNext()) { IFile output = (IFile) outputs.next(); Buildlet buildlet = (Buildlet) work.get(output); System.out.println("CIMBuilder: building: " + output.getName()); buildlet.run(output, cleanup, monitor); } }
private void collect(IResource resource) throws CoreException { rebuild = rebuild || Info.isSchema(resource); for (int ix = 0; ix < buildlets.length; ix++) { Buildlet buildlet = buildlets[ix]; Iterator outputs = buildlet.getOutputs(resource).iterator(); while (outputs.hasNext()) { IFile output = (IFile) outputs.next(); if (work.remove(output) != null) System.out.println( "CIMBuilder: push down in build order: " + output.getName()); // push output down in the build order else System.out.println("CIMBuilder: adding to build: " + output.getName()); work.put(output, buildlet); collect(output); // not efficient since we might encounter an output many times } } }