<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">package usda.weru.util;

import de.schlichtherle.truezip.file.TFile;
import javolution.context.Context;
import org.apache.log4j.Logger;

/**
 *
 * @author Joseph Levin &lt;joelevin@weru.ksu.edu&gt;
 */
public class RelativeFileContext extends Context {

    private static final long serialVersionUID = 1L;

    private static final Logger LOGGER = Logger.getLogger(RelativeFileContext.class);

    private TFile file;

    /**
     *
     */
    @Override
    protected void enterAction() {

    }

    /**
     *
     */
    @Override
    protected void exitAction() {

    }

    /**
     *
     * @param relative
     */
    public static void enter(TFile 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);
    }

    /**
     *
     * @return
     */
    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(TFile relative) {
        file = relative;
    }

    /**
     *
     * @return
     */
    public static TFile getFile() {
        RelativeFileContext current = getCurrent();
        return current != null ? current.file : null;
    }

}
</pre></body></html>