repos init.

This commit is contained in:
2024-05-15 17:52:24 +08:00
commit 478bebe66b
50 changed files with 3475 additions and 0 deletions

View File

@@ -0,0 +1,127 @@
package com.serliunx.ddns.config;
import com.serliunx.ddns.support.Assert;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* 配置信息的抽象实现, 定义公共逻辑
* @author SerLiunx
* @since 1.0
*/
public abstract class AbstractConfiguration implements Configuration {
private static final Logger log = LoggerFactory.getLogger(AbstractConfiguration.class);
protected final Map<String, String> valueMap = new LinkedHashMap<>(16);
private final Lock loadLock = new ReentrantLock();
public AbstractConfiguration() {}
@Override
public Integer getInteger(String key) {
Assert.notNull(key);
String v = valueMap.get(key);
return v == null ? null : Integer.valueOf(v);
}
@Override
public Integer getInteger(String key, Integer defaultValue) {
Assert.notNull(key, defaultValue);
Integer v = getInteger(key);
return v == null ? defaultValue : v;
}
@Override
public Long getLong(String key) {
Assert.notNull(key);
String v = valueMap.get(key);
return v == null ? null : Long.valueOf(v);
}
@Override
public Long getLong(String key, Long defaultValue) {
Assert.notNull(key, defaultValue);
Long v = getLong(key);
return v == null ? defaultValue : v;
}
@Override
public String getString(String key) {
Assert.notNull(key);
return valueMap.get(key);
}
@Override
public String getString(String key, String defaultValue) {
Assert.notNull(key, defaultValue);
String v = getString(key);
return v == null ? defaultValue : v;
}
@Override
public Boolean getBoolean(String key) {
Assert.notNull(key);
return Boolean.valueOf(valueMap.get(key));
}
@Override
public Boolean getBoolean(String key, Boolean defaultValue) {
Assert.notNull(key, defaultValue);
String value = valueMap.get(key);
return value == null ? defaultValue : Boolean.valueOf(value);
}
@Override
public void refresh() {
// 刷新配置信息
refresh0();
final Boolean needPrint = getBoolean(ConfigurationKeys.KEY_CFG_LOG_ONSTART);
if(needPrint)
printDetails();
}
@Override
public <T extends Enum<?>> Enum<?> getEnum(Class<T> clazz, String key) {
return null;
}
/**
* 载入配置信息请加锁
*/
protected void load(){
try {
loadLock.lock();
// 清空原有的配置信息
valueMap.clear();
load0();
}finally {
loadLock.unlock();
}
}
/**
* 打印配置信息
*/
protected void printDetails(){
log.info("=====配置信息=====");
valueMap.forEach((k, v) -> {
log.info("{} = {}", k, v);
});
log.info("=================");
}
/**
* 具体的刷新逻辑
*/
protected abstract void refresh0();
/**
* 载入逻辑
*/
protected abstract void load0();
}