blob: d661fc02cdf49d097851a7d8c13cde8db1719a94 [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2010 Oracle
* 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:
* Konstantin Komissarchik - initial implementation and ongoing maintenance
******************************************************************************/
package org.eclipse.jst.common.project.facet.core.internal;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jst.common.project.facet.core.ClasspathHelper;
import org.eclipse.wst.common.project.facet.core.FacetedProjectFrameworkException;
import org.eclipse.wst.common.project.facet.core.IDelegate;
/**
* @author <a href="mailto:konstantin.komissarchik@oracle.com">Konstantin Komissarchik</a>
*/
public abstract class JavaFacetDelegate
implements IDelegate
{
protected static final class RelevantFiles
{
public final IFile dotProjectFile;
public final IFile dotClasspathFile;
public final IFile jdtCorePrefsFile;
public final IFile jstFacetCorePrefsFile;
public RelevantFiles( final IProject project )
{
this.dotProjectFile = project.getFile( IProjectDescription.DESCRIPTION_FILE_NAME );
this.dotClasspathFile = project.getFile( JavaFacetUtil.FILE_CLASSPATH );
this.jdtCorePrefsFile = project.getFile( JavaFacetUtil.FILE_JDT_CORE_PREFS );
this.jstFacetCorePrefsFile = project.getFile( ClasspathHelper.LEGACY_METADATA_FILE_NAME );
}
}
protected static void validateEdit( final IProject project )
throws CoreException
{
validateEdit( new RelevantFiles( project ) );
}
protected static void validateEdit( final RelevantFiles files )
throws CoreException
{
final List<IFile> list = new ArrayList<IFile>();
list.add( files.dotProjectFile );
if( files.dotClasspathFile.exists() )
{
list.add( files.dotClasspathFile );
}
if( files.jdtCorePrefsFile.exists() )
{
list.add( files.jdtCorePrefsFile );
}
if( files.jstFacetCorePrefsFile.exists() )
{
list.add( files.jstFacetCorePrefsFile );
}
final IWorkspace ws = ResourcesPlugin.getWorkspace();
final IStatus validateEditStatus
= ws.validateEdit( list.toArray( new IFile[ list.size() ] ), IWorkspace.VALIDATE_PROMPT );
if( validateEditStatus.getSeverity() == IStatus.ERROR )
{
final FacetedProjectFrameworkException e
= new FacetedProjectFrameworkException( validateEditStatus );
e.setExpected( true );
throw e;
}
}
}