package org.dcache.services.ssh2;
import org.apache.sshd.common.Factory;
import org.apache.sshd.server.Command;
import org.springframework.beans.factory.annotation.Required;
import java.io.File;
import diskCacheV111.admin.UserAdminShell;
import dmg.cells.nucleus.CellEndpoint;
import dmg.cells.nucleus.CellMessageSender;
import org.dcache.cells.CellStub;
import org.dcache.util.list.ListDirectoryHandler;
public class ShellFactory implements Factory<Command>, CellMessageSender
{
private CellEndpoint _endpoint;
private File _historyFile;
private int _historySize;
private boolean _useColor;
private CellStub _pnfsManager;
private CellStub _poolManager;
private CellStub _acm;
private String _prompt;
private ListDirectoryHandler _list;
@Required
public void setHistoryFile(File historyFile)
{
_historyFile = historyFile;
}
@Required
public void setHistorySize(int size) {
_historySize = size;
}
@Required
public void setUseColor(boolean useColor)
{
_useColor = useColor;
}
@Required
public void setPnfsManager(CellStub stub)
{
_pnfsManager = stub;
}
@Required
public void setPoolManager(CellStub stub)
{
_poolManager = stub;
}
@Required
public void setAcm(CellStub stub)
{
_acm = stub;
}
@Required
public void setPrompt(String prompt)
{
_prompt = prompt;
}
@Required
public void setListHandler(ListDirectoryHandler list)
{
_list = list;
}
@Override
public void setCellEndpoint(CellEndpoint endpoint)
{
_endpoint = endpoint;
}
@Override
public Command create()
{
return new ShellCommand(_historyFile, _historySize, _useColor, createShell());
}
private UserAdminShell createShell()
{
UserAdminShell shell = new UserAdminShell(_prompt);
shell.setCellEndpoint(_endpoint);
shell.setPnfsManager(_pnfsManager);
shell.setPoolManager(_poolManager);
shell.setAcm(_acm);
shell.setListHandler(_list);
return shell;
}
}