
com.googlecode.openbox.server.AbstractServerGroup Maven / Gradle / Ivy
package com.googlecode.openbox.server;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
public abstract class AbstractServerGroup implements ServerGroup {
private Map serverGroup;
public AbstractServerGroup() {
this.serverGroup = new HashMap();
}
@Override
public void addServer(Server server) {
serverGroup.put(server.getIp(), server);
}
@Override
public void addServers(ServerGroup serverGroup) {
Server[] servers = serverGroup.listServers();
for (Server server : servers) {
addServer(server);
}
}
@Override
public int getNum() {
return serverGroup.size();
}
@Override
public boolean isEmpty() {
return serverGroup.isEmpty();
}
@Override
public Server getServer(String host) {
return serverGroup.get(host);
}
@Override
public void removeServer(String host) {
serverGroup.remove(host);
}
@Override
public void clearAll() {
serverGroup.clear();
}
@Override
public Server[] listServers() {
return serverGroup.values().toArray(new Server[0]);
}
@Override
public String[] listServerHosts() {
Server[] servers = listServers();
int num = servers.length;
String[] serverHosts = new String[num];
for (int i = 0; i < num; i++) {
serverHosts[i] = servers[i].getIp();
}
return serverHosts;
}
@Override
public Map executeShell(final String shell) {
return visit(new ServerAction() {
@Override
public String access(Server server) {
return server.getSshClient().executeShell(System.out, shell);
}
});
}
@Override
public Map executeCommands(final String commands) {
return visit(new ServerAction() {
@Override
public String[] access(Server server) {
return server.getSshClient().executeCommand(System.out, commands);
}
});
}
@Override
public Map executeSingleCommandGetResponse(final String command) {
return visit(new ServerAction() {
@Override
public String access(Server server) {
return server.getSshClient().executeSingleCommand(System.out, command);
}
});
}
@Override
public void visit(final ServerHandler serverHandler) {
visit(new ServerAction() {
@Override
public Void access(Server server) {
serverHandler.execute(server);
return null;
}
});
}
protected Collection getAllServers() {
return serverGroup.values();
}
protected void precheckServerGroup() {
if (getAllServers().size() <= 0) {
throw new RuntimeException(
"execute shell failed as server group is empty , can't found any server in it");
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy