Example usage for org.eclipse.jdt.core JavaCore COMPUTE

List of usage examples for org.eclipse.jdt.core JavaCore COMPUTE

Introduction

In this page you can find the example usage for org.eclipse.jdt.core JavaCore COMPUTE.

Prototype

String COMPUTE

To view the source code for org.eclipse.jdt.core JavaCore COMPUTE.

Click Source Link

Document

Configurable option value: .

Usage

From source file:org.eclipse.jdt.internal.core.JavaModelManager.java

License:Open Source License

/**
 * Record the order in which to build the java projects (batch build). This order is based
 * on the projects classpath settings.//from   w  ww  .  j  ava 2  s.com
 */
protected void setBuildOrder(String[] javaBuildOrder) throws JavaModelException {

    // optional behaviour
    // possible value of index 0 is Compute
    if (!JavaCore.COMPUTE.equals(JavaCore.getOption(JavaCore.CORE_JAVA_BUILD_ORDER)))
        return; // cannot be customized at project level

    if (javaBuildOrder == null || javaBuildOrder.length <= 1)
        return;

    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    IWorkspaceDescription description = workspace.getDescription();
    String[] wksBuildOrder = description.getBuildOrder();

    String[] newOrder;
    if (wksBuildOrder == null) {
        newOrder = javaBuildOrder;
    } else {
        // remove projects which are already mentionned in java builder order
        int javaCount = javaBuildOrder.length;
        HashMap newSet = new HashMap(javaCount); // create a set for fast check
        for (int i = 0; i < javaCount; i++) {
            newSet.put(javaBuildOrder[i], javaBuildOrder[i]);
        }
        int removed = 0;
        int oldCount = wksBuildOrder.length;
        for (int i = 0; i < oldCount; i++) {
            if (newSet.containsKey(wksBuildOrder[i])) {
                wksBuildOrder[i] = null;
                removed++;
            }
        }
        // add Java ones first
        newOrder = new String[oldCount - removed + javaCount];
        System.arraycopy(javaBuildOrder, 0, newOrder, 0, javaCount); // java projects are built first

        // copy previous items in their respective order
        int index = javaCount;
        for (int i = 0; i < oldCount; i++) {
            if (wksBuildOrder[i] != null) {
                newOrder[index++] = wksBuildOrder[i];
            }
        }
    }
    // commit the new build order out
    description.setBuildOrder(newOrder);
    try {
        workspace.setDescription(description);
    } catch (CoreException e) {
        throw new JavaModelException(e);
    }
}