package com.snowcattle.game.common.config;
import com.snowcattle.game.common.constant.CommonErrorLogInfo;
import com.snowcattle.game.common.util.ErrorsUtil;
import java.io.File;
/**
* {@link Config}的简单实现
*
*/
public abstract class ServerConfig implements Config {
/** 生产模式:0 调式模式:1 */
protected int debug = 0;
/** 配置文件是否加密*/
protected boolean encryptResource = false;
/** 系统的字符编码 */
protected String charset;
/** 系统配置的版本号 */
protected String version;
/** 系统配置的资源版本号 */
protected String resourceVersion;
/** 服务器ID 规则是:是 localHostId+serverIndexId,如1011,表示1区,1服的第一个服务器 */
protected String serverId;
/** 服务绑定的IP */
protected String bindIp;
/** 服务器监听的端口,多个商品以逗号","分隔 */
protected String ports;
/** 服务器的名称 */
protected String serverName;
/** 系统所使用的语言 */
protected String language;
/** 多语言资源所在的目录 */
protected String i18nDir;
/** 资源文件根目录 */
protected String baseResourceDir;
/** 脚本所在的目录 */
protected String scriptDir;
/** 脚本的头文件 */
protected String scriptHeaderName;
/** 物品编辑器自动生成的配置目录 */
protected String exportDataDir;
/** 数据库初始化类型: 0 Hibernate 1 Ibatis */
protected int dbInitType = 0;
/** 数据库配置文件路径 */
protected String dbConfigName;
/** 写死的,没在配置里 */
protected String gameId = "shoot";
// /** dirtyWorlds简版地址 */
// protected String dirtyWordsPartUrl = "http://down.51rs.cn/games-common/dirtywords/part.csv";
// /** dirtyWorlds完全版地址 */
// protected String dirtyWordsFullUrl = "http://down.51rs.cn/games-common/dirtywords/full.csv";
@Override
public boolean getIsDebug() {
return getDebug() == 1;
}
@Override
public String getVersion() {
return this.version;
}
public void setVersion(String version) {
this.version = version;
}
/**
* 取得资源文件的绝对路径
*
* @param path
* @return
*/
public String getResourceFullPath(String path) {
return this.baseResourceDir + File.separator + path;
}
public String getBaseResourceDir() {
return baseResourceDir;
}
public void setBaseResourceDir(String baseResourceDir) {
this.baseResourceDir = baseResourceDir;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public String getI18nDir() {
return i18nDir;
}
public void setI18nDir(String dir) {
i18nDir = dir;
}
public String getCharset() {
return charset;
}
public void setCharset(String charset) {
this.charset = charset;
}
/**
* @return the serverId
*/
public String getServerId() {
return serverId;
}
public int getServerIdInt() {
return Integer.parseInt(serverId);
}
/**
* @param serverId
* the serverId to set
*/
public void setServerId(String serverId) {
this.serverId = serverId;
}
public String getBindIp() {
return bindIp;
}
public void setBindIp(String bindIp) {
this.bindIp = bindIp;
}
public String getPorts() {
return ports;
}
public void setPorts(String ports) {
this.ports = ports;
}
public String getServerName() {
return serverName;
}
public void setServerName(String serverName) {
this.serverName = serverName;
}
public int getPort(){
String ports = getPorts();
String[] splitPorts = ports.split(",");
return Integer.parseInt(splitPorts[0]);
}
public void setDebug(int debug) {
this.debug = debug;
}
public int getDebug() {
return debug;
}
public String getScriptDir() {
return scriptDir;
}
public void setScriptDir(String scriptDir) {
this.scriptDir = scriptDir;
}
public int getDbInitType() {
return dbInitType;
}
public void setDbInitType(int dbInitType) {
this.dbInitType = dbInitType;
}
public String getDbConfigName() {
return dbConfigName;
}
public void setDbConfigName(String dbConfigName) {
this.dbConfigName = dbConfigName;
}
public void setExportDataDir(String exportDataDir) {
this.exportDataDir = exportDataDir;
}
public String getExportDataDir() {
return exportDataDir;
}
public void setScriptHeaderName(String scriptHeaderName) {
this.scriptHeaderName = scriptHeaderName;
}
public String getScriptHeaderName() {
return scriptHeaderName;
}
/**
* Log Server 配置
*
*
*/
public static class LogConfig {
/** Log Server地址 */
private String logServerIp;
/** Log Server端口 */
private int logServerPort;
public void setLogServerIp(String logServerIp) {
this.logServerIp = logServerIp;
}
public String getLogServerIp() {
return logServerIp;
}
public void setLogServerPort(int logServerPort) {
this.logServerPort = logServerPort;
}
public int getLogServerPort() {
return logServerPort;
}
}
@Override
public void validate() {
// if (serverType < 1) {
// throw new IllegalArgumentException(
// "The serverType must not be empty");
// }
if (this.ports == null || (ports = ports.trim()).length() == 0) {
throw new IllegalArgumentException(ErrorsUtil.error(
CommonErrorLogInfo.ARG_NOT_NULL_EXCEPT, "", "ports"));
}
// 版本号配置检查
if (this.getVersion() == null) {
throw new IllegalArgumentException("The version must not be null");
}
}
/**
* 获得脚本文件全目录
*
* @return
*/
public String getScriptDirFullPath() {
return this.getResourceFullPath(this.getScriptDir());
}
public void setResourceVersion(String resourceVersion) {
this.resourceVersion = resourceVersion;
}
public String getResourceVersion() {
return resourceVersion;
}
public boolean isEncryptResource() {
return encryptResource;
}
public void setEncryptResource(boolean encryptResource) {
this.encryptResource = encryptResource;
}
public String getGameId() {
return gameId;
}
public void setGameId(String gameId) {
this.gameId = gameId;
}
}