package org.codehaus.plexus.components.io.resources;
import org.codehaus.plexus.components.io.attributes.PlexusIoResourceAttributes;
import org.codehaus.plexus.components.io.functions.ContentSupplier;
import org.codehaus.plexus.components.io.functions.InputStreamTransformer;
import java.io.File;
import java.io.IOException;
import static org.codehaus.plexus.components.io.attributes.PlexusIoResourceAttributeUtils.getFileAttributes;
import static org.codehaus.plexus.components.io.resources.PlexusIoFileResource.getName;
/**
* @author Kristian Rosenvold
*/
public class ResourceFactory
{
public static PlexusIoResource createResource( File f )
throws IOException
{
return createResource( f, getName( f ), null, null, getFileAttributes( f ) );
}
public static PlexusIoResource createResource( File f, String name )
throws IOException
{
return createResource( f, name, null, null, getFileAttributes( f ) );
}
public static PlexusIoResource createResource( File f, String name, final ContentSupplier contentSupplier,
PlexusIoResourceAttributes attributes )
throws IOException
{
return createResource( f, name, contentSupplier, null, attributes );
}
public static PlexusIoResource createResource( File f, InputStreamTransformer inputStreamTransformer )
throws IOException
{
return createResource( f, getName( f ), null, inputStreamTransformer, getFileAttributes( f ) );
}
public static PlexusIoResource createResource( File f, String name, final ContentSupplier contentSupplier,
InputStreamTransformer inputStreamTransformer )
throws IOException
{
return createResource( f, name, contentSupplier, inputStreamTransformer, getFileAttributes( f ) );
}
public static PlexusIoResource createResource( File f, String name, final ContentSupplier contentSupplier,
InputStreamTransformer inputStreamTransformer,
PlexusIoResourceAttributes attributes )
throws IOException
{
boolean symbolicLink = attributes.isSymbolicLink();
return symbolicLink ? new PlexusIoSymlinkResource( f, name, attributes )
: new PlexusIoFileResource(f, name, attributes, contentSupplier, inputStreamTransformer);
}
}