package eu.geclipse.core.jobs;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IResource;
import eu.geclipse.core.model.ICreatorSourceMatcher;
import eu.geclipse.core.model.IGridContainer;
import eu.geclipse.core.model.IGridElement;
import eu.geclipse.core.model.impl.AbstractGridElementCreator;
import eu.geclipse.core.reporting.ProblemException;
/**
* Creator for container, which has links to remote files (e.g. Output Files folder)
*/
public class RemoteFilesContainerCreator extends AbstractGridElementCreator
implements ICreatorSourceMatcher
{
public boolean canCreate( final Object source ) {
boolean canCreate = false;
if( source instanceof IFolder ) {
IFolder folder = ( IFolder )source;
// Can create only for folders with name "Output files", which parent is job
if( folder.getName().equalsIgnoreCase( GridJob.FOLDERNAME_OUTPUT_FILES )
|| folder.getName().equalsIgnoreCase( GridJob.FOLDERNAME_INPUT_FILES ) ) {
IContainer parent = folder.getParent();
if( parent instanceof IFolder ) {
if( parent.getName().endsWith( GridJob.JOBFILE_EXTENSION ) ) {
// TODO mariusz now this creator have to be registered for all midlewares independly
// but, when bug #248403 Attribute "default" in extension point eu.geclipse.core.gridElementCreator is ignored
// is resolved, we will able to register it for all in/out folders, which has not specialised creator (like GliteSandboxFilesCreator)
canCreate = true;
}
}
}
}
return canCreate;
}
public IGridElement create( final IGridContainer parent ) throws ProblemException {
return new RemoteFilesContainer( ( IResource )getSource() );
}
}