blob: dd5d0bf0667c5be2f0d5dcd832e786316d7bbb75 [file] [log] [blame]
/**
* <copyright>
*
* Copyright (c) 2009-2010 Thales Corporate Services S.A.S.
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-v2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Thales Corporate Services S.A.S - initial API and implementation
*
* </copyright>
*/
package org.eclipse.egf.core.helper;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.eclipse.core.resources.ICommand;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.egf.core.natures.EGFNatures;
/**
* Used to manage Natures and Builders.
*
* @author Thomas Guiu
*
*/
public class ProjectHelper {
public static void addNatures(IProjectDescription description, List<String> natures, IProgressMonitor monitor) {
Set<String> allNatures = new HashSet<String>();
allNatures.addAll(natures);
allNatures.addAll(Arrays.asList(description.getNatureIds()));
description.setNatureIds(allNatures.toArray(new String[allNatures.size()]));
}
private static int indexOf(List<ICommand> buildSpecs, String builder) {
for (ICommand cmd : buildSpecs) {
if (builder.equals(cmd.getBuilderName()))
return buildSpecs.indexOf(cmd);
}
return -1;
}
public static void addBuilders(IProjectDescription description, List<String> builders, IProgressMonitor monitor) {
final List<ICommand> buildSpecs = new ArrayList<ICommand>();
buildSpecs.addAll(Arrays.asList(description.getBuildSpec()));
for (String newBuilder : builders) {
int index = indexOf(buildSpecs, newBuilder);
if (index < 0) {
final ICommand newCommand = description.newCommand();
newCommand.setBuilderName(newBuilder);
buildSpecs.add(newCommand);
index = buildSpecs.size() - 1;
}
}
int index = indexOf(buildSpecs, EGFNatures.PATTERN_BUILDER_ID);
if (index > 0) {
Collections.swap(buildSpecs, index, 0);
}
description.setBuildSpec(buildSpecs.toArray(new ICommand[buildSpecs.size()]));
}
private ProjectHelper() {
}
}