package org.safehaus.penrose.studio.server;
import org.safehaus.penrose.util.FileUtil;
import org.safehaus.penrose.client.PenroseClient;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.IProgressMonitor;
import java.io.File;
/**
* @author Endi Sukma Dewata
*/
public class Server {
public Logger log = Logger.getLogger(getClass());
protected ServerConfig serverConfig;
protected PenroseClient client;
protected File workDir;
boolean connected;
public Server(ServerConfig serverConfig) {
this.serverConfig = serverConfig;
}
public String getName() {
return serverConfig.getName();
}
public void connect(IProgressMonitor monitor) throws Exception {
try {
monitor.beginTask("Opening " + serverConfig.getName() + "...", IProgressMonitor.UNKNOWN);
log.debug("-------------------------------------------------------------------------------------");
log.debug("Opening "+ serverConfig.getName()+"...");
client = new PenroseClient(
serverConfig.getType(),
serverConfig.getHost(),
serverConfig.getPort(),
serverConfig.getUsername(),
serverConfig.getPassword()
);
client.connect();
File userHome = new File(System.getProperty("user.home"));
File homeDir = new File(userHome, ".penrose");
homeDir.mkdirs();
workDir = new File(homeDir, "Servers"+File.separator+ serverConfig.getName());
FileUtil.delete(workDir);
monitor.worked(1);
connected = true;
} finally {
monitor.done();
}
}
public void close() throws Exception {
log.debug("-------------------------------------------------------------------------------------");
log.debug("Closing "+ serverConfig.getName()+".");
connected = false;
client.close();
}
public boolean isConnected() {
return connected;
}
public ServerConfig getServerConfig() {
return serverConfig;
}
public void setServerConfig(ServerConfig serverConfig) {
this.serverConfig = serverConfig;
}
public PenroseClient getClient() {
return client;
}
public void setClient(PenroseClient client) {
this.client = client;
}
public File getWorkDir() {
return workDir;
}
public void setWorkDir(File workDir) {
this.workDir = workDir;
}
public void upload() throws Exception {
client.upload(workDir);
}
public void upload(String path) throws Exception {
log.debug("----------------------------------------------------------------------------------------------");
client.upload(workDir, path);
}
public void download(String path) throws Exception {
log.debug("----------------------------------------------------------------------------------------------");
client.download(workDir, path);
}
public void removeDirectory(String path) throws Exception {
client.removeDirectory(path);
}
public int hashCode() {
return serverConfig == null ? 0 : serverConfig.hashCode();
}
boolean equals(Object o1, Object o2) {
if (o1 == null && o2 == null) return true;
if (o1 != null) return o1.equals(o2);
return o2.equals(o1);
}
public boolean equals(Object object) {
if (this == object) return true;
if (object == null) return false;
if (object.getClass() != this.getClass()) return false;
Server ei = (Server)object;
if (!equals(serverConfig, ei.serverConfig)) return false;
return true;
}
}