package org.jboss.windup.graph;

import java.nio.file.Path;

/**
 * Responsible for creating new {@link GraphContext} instances.
 * 
 * @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
 */
public interface GraphContextFactory
{
    String DEFAULT_GRAPH_SUBDIRECTORY = "graph";

    /**
     * Create a new {@link GraphContext} using the given {@link Path} as a file storage location. The {@link Path} will
     * be created if it does not already exist. (<b>**WARNING**: This will potentially delete all data in the given
     * directory.</b>)
     */
    GraphContext create(Path dir);

    /**
     * Create a new {@link GraphContext} using a temporary file storage location.
     */
    GraphContext create();
    
    /**
     * Loads a {@link GraphContext} using the given {@link Path} as a file storage location. 
     */
    GraphContext load(Path dir);

}
