package com.cxy.redisclient.service;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.cxy.redisclient.domain.Server;
import com.cxy.redisclient.integration.ConfigFile;
import com.cxy.redisclient.integration.server.QueryDBAmount;
import com.cxy.redisclient.integration.server.QueryServerProperties;
public class ServerService {
public int add(String name, String host, String port, String password) {
try {
int id = Integer.parseInt(ConfigFile
.readMaxId(ConfigFile.SERVER_MAXID)) + 1;
ConfigFile.write(ConfigFile.NAME + id, name);
ConfigFile.write(ConfigFile.HOST + id, host);
ConfigFile.write(ConfigFile.PORT + id, port);
ConfigFile.write(ConfigFile.PASSWORD + id, password);
ConfigFile.write(ConfigFile.SERVER_MAXID, String.valueOf(id));
return id;
} catch (IOException e) {
throw new RuntimeException(e.getMessage());
}
}
public void delete(int id) {
try {
ConfigFile.delete(ConfigFile.NAME + id);
ConfigFile.delete(ConfigFile.HOST + id);
ConfigFile.delete(ConfigFile.PORT + id);
ConfigFile.delete(ConfigFile.PASSWORD + id);
} catch (IOException e) {
throw new RuntimeException(e.getMessage());
}
}
public void update(int id, String name) {
try {
ConfigFile.write(ConfigFile.NAME + id, name);
} catch (IOException e) {
throw new RuntimeException(e.getMessage());
}
}
public void update(int id, String host, String port, String password) {
try {
ConfigFile.write(ConfigFile.HOST + id, host);
ConfigFile.write(ConfigFile.PORT + id, port);
ConfigFile.write(ConfigFile.PASSWORD + id, password);
} catch (IOException e) {
throw new RuntimeException(e.getMessage());
}
}
public void update(int id, String name, String host, String port, String password) {
update(id, name);
update(id, host, port, password);
}
public Server listById(int id) {
try {
Server server = null;
if (ConfigFile.read(ConfigFile.NAME + id) != null)
server = new Server(id, ConfigFile.read(ConfigFile.NAME + id),
ConfigFile.read(ConfigFile.HOST + id),
ConfigFile.read(ConfigFile.PORT + id),
ConfigFile.read(ConfigFile.PASSWORD + id));
return server;
} catch (IOException e) {
throw new RuntimeException(e.getMessage());
}
}
public List<Server> listAll() {
try {
int amount = Integer.parseInt(ConfigFile
.readMaxId(ConfigFile.SERVER_MAXID));
List<Server> servers = new ArrayList<Server>();
for (int i = 1; i <= amount; i++) {
Server server = listById(i);
if (server != null)
servers.add(listById(i));
}
return servers;
} catch (IOException e) {
throw new RuntimeException(e.getMessage());
}
}
public int listDBs(int id) {
QueryDBAmount command = new QueryDBAmount(id);
command.execute();
return command.getDbAmount();
}
public int listDBs(Server server) throws IOException {
return listDBs(server.getId());
}
public Map<String, String[]> listInfo(int id) {
QueryServerProperties command = new QueryServerProperties(id);
command.execute();
return command.getServerInfo();
}
}