package usda.weru.remoteDataAccess.csip;

import java.nio.file.Path;
import usda.weru.remoteDataAccess.RdaHierarchicalItem;
import usda.weru.remoteDataAccess.RdaInputController;
import usda.weru.remoteDataAccess.RdaInterface;
import usda.weru.remoteDataAccess.exceptions.RdaConnectException;

/**
 *
 * @author mhaas
 */
public abstract class CsipInputController extends RdaInputController {
    
    protected CsipInterface csipIf;
    
    protected boolean doCacheBackgroundLoad;
    
    protected boolean downloading;
    protected boolean filesChanged;
    protected boolean doCatalogOnly;
    
    public CsipInputController () {
        csipIf = null;
        
        doCacheBackgroundLoad = false;
        inputDataTree = null;
        
        downloading = false;
        filesChanged = false;
        doCatalogOnly = false;
    }
    
    public boolean isDownloading () {
        return downloading;
    }
    
    public void setDoCatalogOnly (boolean val) {
        doCatalogOnly = val;
    }
    
    public boolean getDoCatalogOnly () {
        return doCatalogOnly;
    }
    
    protected abstract CsipInterface getNewCsipInterface ();
    
    @Override
    public RdaInterface getInterface () {
        return csipIf;
    }
    
    @Override
    public RdaHierarchicalItem init (String name) throws RdaConnectException {
               
        if (inputDataTree == null) {
            RdaHierarchicalItem item = new CsipHierarchicalItem(interfaceName, this);
            init (item);
            inputDataTree = item;
        }
        return inputDataTree;
    }
    
    @Override
    protected RdaHierarchicalItem initializeData (RdaHierarchicalItem treeRoot) throws RdaConnectException {
        return treeRoot;
    }
    
    @Override
    public void controllerSetDestinationPath (Path destPath) {
        csipIf.interfaceSetDestinationPath(destPath);
    }
}
