/*
 * AdminAnswerFiles.java
 *
 * Created on March 27, 2001, 11:16 AM
 */

package com.sns.tools.ant.taskdefs;

import org.apache.tools.ant.taskdefs.Taskdef;
import org.apache.tools.ant.Project;

/**
 * Initializes the AnswerFileManager, to increase caching efficiency.
 *
 * If only one task at a time uses the AnswerFileManager, and there are a
 * lot of calls in series to it, then it will constantly be flushing its
 * caches, which will cause a performance delay.  This class, when called in
 * some sort of init target, will alleviate this by keeping at least one
 * connection to the AnswerFileManager open.  Then, in a finalize target, issue
 * the release command with this task, and the caches are flushed.
 *
 *Usage:
 *<pre>
 *&lt;target name="init"&gt;
 *  &lt;admin-answerfiles start="true"/&gt;
 *&lt;/target&gt;
 *
 *&lt;target name="compile" depends="init"&gt;
 *  &lt;ask-user question="Enter destination dir:" property="dir"/&gt;
 *  &lt;javac srcdir="src" destdir="${dir}"/&gt;
 *&lt;/target&gt;
 *
 *&lt;target name="main" depends="compile, finalize"&gt;
 *  &lt;admin-answerfiles start="false"/&gt;
 *&lt;/target&gt;
 *</pre>
 *
 * @author  <a href="mailto:John.D.Casey@mail.sprint.com">John Casey</a>
 * @version 1.0
 */
public class AdminAnswerFiles extends Taskdef {
    private boolean start = true;
    
    public void setStart(boolean cmd){
        this.start = cmd;
    }
    
    public void execute(){
        if(start){ 
            if(!AnswerFileManager.isStarted()){
                AnswerFileManager.getInstance(project);
            }
        }
        else{
            if(AnswerFileManager.isStarted()){
                AnswerFileManager mgr = AnswerFileManager.getInstance(project);
                mgr.release(project);
            }
        }
    }
}
