/******************************************************************************* * Copyright (c) 2007, 2008 Intel Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Intel Corporation - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.managedbuilder.internal.core; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import org.eclipse.cdt.managedbuilder.core.IBuildObject; import org.eclipse.cdt.managedbuilder.core.IConfiguration; import org.eclipse.cdt.managedbuilder.core.IResourceInfo; import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager; import org.eclipse.core.runtime.IConfigurationElement; public class ConverterInfo { private IBuildObject fFromObject; private IBuildObject fConvertedFromObject; private IBuildObject fToObject; private boolean fIsConversionPerformed; private IResourceInfo fRcInfo; public ConverterInfo(IResourceInfo rcInfo, IBuildObject fromObject, IBuildObject toObject, IConfigurationElement el){ fFromObject = fromObject; fToObject = toObject; fRcInfo = rcInfo; } public IBuildObject getFromObject(){ return fFromObject; } public IBuildObject getToObject(){ return fToObject; } public IBuildObject getConvertedFromObject(){ if(!fIsConversionPerformed){ ManagedProject mProj = getManagedProject(); IConfiguration[] cfgs = mProj.getConfigurations(); fConvertedFromObject = ManagedBuildManager.convert(fFromObject, fToObject.getId(), true); IConfiguration[] updatedCfgs = mProj.getConfigurations(); Set<IConfiguration> oldSet = new HashSet<IConfiguration>(Arrays.asList(cfgs)); Set<IConfiguration> updatedSet = new HashSet<IConfiguration>(Arrays.asList(updatedCfgs)); Set<IConfiguration> oldSetCopy = new HashSet<IConfiguration>(oldSet); oldSet.removeAll(updatedSet); updatedSet.removeAll(oldSetCopy); if(updatedSet.size() != 0) for(IConfiguration cfg : updatedSet) mProj.removeConfiguration(cfg.getId()); if(oldSet.size() != 0) for(IConfiguration cfg : oldSet) mProj.applyConfiguration((Configuration)cfg); fIsConversionPerformed = true; } return fConvertedFromObject; } private ManagedProject getManagedProject(){ if(fRcInfo != null) return (ManagedProject)fRcInfo.getParent().getManagedProject(); return null; } }