/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package usda.weru.util;

import de.schlichtherle.io.File;
import javolution.context.Context;
import org.apache.log4j.Logger;
/**
 *
 * @author Joseph Levin <joelevin@weru.ksu.edu>
 */
public class RelativeFileContext extends Context{
    private static final Logger LOGGER = Logger.getLogger(RelativeFileContext.class);

    private File file;

    @Override
    protected void enterAction() {

    }

    @Override
    protected void exitAction() {
        
    }

    public static void enter(File relative){
        if(relative == null){
            LOGGER.error("A relative file context requires a file.");
            throw new IllegalStateException();
        }
        Context.enter(RelativeFileContext.class);
        getCurrent().setFile(relative);
    }

    public static void exit(){
        Context.exit(RelativeFileContext.class);
    }

    public static RelativeFileContext getCurrent(){
        for (Context ctx = Context.getCurrent(); ctx != null; ctx = ctx.getOuter()) {
            if (ctx instanceof RelativeFileContext){
                return (RelativeFileContext) ctx;
            }
        }
        return null;
    }

    private void setFile(File relative){
        file = relative;
    }

    public static File getFile(){
        RelativeFileContext current = getCurrent();
        return current != null ? current.file : null;
    }
   
}
