All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.adrninistrator.javacg.conf.JavaCGConfigureWrapper Maven / Gradle / Ivy
package com.adrninistrator.javacg.conf;
import com.adrninistrator.javacg.common.enums.JavaCGConfigKeyEnum;
import com.adrninistrator.javacg.common.enums.JavaCGOtherConfigFileUseListEnum;
import com.adrninistrator.javacg.common.enums.JavaCGOtherConfigFileUseSetEnum;
import com.adrninistrator.javacg.exceptions.JavaCGError;
import com.adrninistrator.javacg.util.JavaCGFileUtil;
import com.adrninistrator.javacg.util.JavaCGUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
/**
* @author adrninistrator
* @date 2022/11/7
* @description: 配置参数包装类
*/
public class JavaCGConfigureWrapper {
private static final Logger logger = LoggerFactory.getLogger(JavaCGConfigureWrapper.class);
/*
主要配置文件中的参数
key 参数名
value 参数值
*/
private final Map configMap = new HashMap<>();
/*
其他配置文件中的参数
key 配置文件名称
value 配置文件对应的参数Set
*/
private final Map> otherConfigSetMap = new HashMap<>();
/*
其他配置文件中的参数
key 配置文件名称
value 配置文件对应的参数List
*/
private final Map> otherConfigListMap = new HashMap<>();
/**
* 默认构造函数,忽略配置文件中的参数
*/
public JavaCGConfigureWrapper() {
this(true);
}
/**
* @param useDefaultEmptyConfigFlag true: 使用默认的空参数(忽略配置文件中的参数) false: 使用配置文件中的参数
*/
public JavaCGConfigureWrapper(boolean useDefaultEmptyConfigFlag) {
if (useDefaultEmptyConfigFlag) {
// 使用默认的空参数(忽略配置文件中的参数)
useDefaultEmptyConfig();
}
}
/**
* 使用默认的空参数(忽略配置文件中的参数)
* 在设置参数之前执行,避免jar包或项目中的配置文件有值时对生成结果产生干扰
*/
public void useDefaultEmptyConfig() {
for (JavaCGConfigKeyEnum javaCGConfigKeyEnum : JavaCGConfigKeyEnum.values()) {
configMap.put(javaCGConfigKeyEnum.getKey(), "");
}
for (JavaCGOtherConfigFileUseSetEnum javaCGOtherConfigFileUseSetEnum : JavaCGOtherConfigFileUseSetEnum.values()) {
otherConfigSetMap.put(javaCGOtherConfigFileUseSetEnum.getFileName(), Collections.emptySet());
}
for (JavaCGOtherConfigFileUseListEnum javaCGOtherConfigFileUseListEnum : JavaCGOtherConfigFileUseListEnum.values()) {
otherConfigListMap.put(javaCGOtherConfigFileUseListEnum.getFileName(), Collections.emptyList());
}
}
/**
* 设置配置文件中的参数
*
* @param javaCGConfigKeyEnum
* @param value
*/
public void setConfig(JavaCGConfigKeyEnum javaCGConfigKeyEnum, String value) {
if (value == null) {
return;
}
configMap.put(javaCGConfigKeyEnum.getKey(), value);
}
/**
* 设置其他配置文件中的参数
*
* @param javaCGOtherConfigFileUseSetEnum
* @param data
*/
public void setOtherConfigSet(JavaCGOtherConfigFileUseSetEnum javaCGOtherConfigFileUseSetEnum, String... data) {
setOtherConfigSet(javaCGOtherConfigFileUseSetEnum, JavaCGUtil.genSetFromArray(data));
}
/**
* 设置其他配置文件中的参数
*
* @param javaCGOtherConfigFileUseSetEnum
* @param configSet
*/
public void setOtherConfigSet(JavaCGOtherConfigFileUseSetEnum javaCGOtherConfigFileUseSetEnum, Set configSet) {
if (configSet == null) {
throw new JavaCGError("不允许传入null,只能传入内容为空的Set");
}
otherConfigSetMap.put(javaCGOtherConfigFileUseSetEnum.getFileName(), configSet);
}
/**
* 设置其他配置文件中的参数
*
* @param javaCGOtherConfigFileUseListEnum
* @param data
*/
public void setOtherConfigList(JavaCGOtherConfigFileUseListEnum javaCGOtherConfigFileUseListEnum, String... data) {
setOtherConfigList(javaCGOtherConfigFileUseListEnum, JavaCGUtil.genListFromArray(data));
}
/**
* 设置其他配置文件中的参数
*
* @param javaCGOtherConfigFileUseListEnum
* @param configList
*/
public void setOtherConfigList(JavaCGOtherConfigFileUseListEnum javaCGOtherConfigFileUseListEnum, List configList) {
if (configList == null) {
throw new JavaCGError("不允许传入null,只能传入内容为空的List");
}
otherConfigListMap.put(javaCGOtherConfigFileUseListEnum.getFileName(), configList);
}
/**
* 设置需要处理所有的类
*/
public void setPackageUseAll() {
setOtherConfigSet(JavaCGOtherConfigFileUseSetEnum.OCFUSE_PACKAGES, new HashSet<>());
}
/**
* 获取配置文件中的参数,或通过代码添加的参数
*
* @param properties
* @param javaCGConfigKeyEnum
* @return
*/
public String getConfig(Properties properties, JavaCGConfigKeyEnum javaCGConfigKeyEnum, boolean printLog) {
String key = javaCGConfigKeyEnum.getKey();
// 优先获取通过代码添加的参数
String value = configMap.get(key);
if (value != null) {
if (printLog) {
logger.info("使用通过代码添加的参数 [{}] {}", key, value);
}
return value;
}
if (properties == null) {
return null;
}
// 获取配置文件中的参数
value = properties.getProperty(key);
if (printLog) {
logger.info("使用配置文件中的参数 [{}] {}", key, value);
}
return value;
}
/**
* 获取其他配置文件中的参数,或通过代码添加的参数
*
* @param javaCGOtherConfigFileUseSetEnum
* @return
*/
public Set getOtherConfigSet(JavaCGOtherConfigFileUseSetEnum javaCGOtherConfigFileUseSetEnum, boolean printLog) {
String configFileName = javaCGOtherConfigFileUseSetEnum.getFileName();
// 优先获取通过代码添加的参数
Set configSet = otherConfigSetMap.get(configFileName);
if (configSet != null) {
if (printLog) {
logger.info("使用通过代码添加的参数 [{}]\n{}", configFileName, StringUtils.join(new ArrayList<>(configSet), " "));
}
return configSet;
}
// 获取其他配置文件中的参数
configSet = JavaCGFileUtil.readFile2Set(JavaCGConfManager.getInputRootPath() + configFileName);
if (printLog) {
logger.info("使用配置文件中的参数 [{}]\n{}", configFileName, StringUtils.join(new ArrayList<>(configSet), " "));
}
return configSet;
}
/**
* 获取其他配置文件中的参数,或通过代码添加的参数
*
* @param javaCGOtherConfigFileUseListEnum
* @return
*/
public List getOtherConfigList(JavaCGOtherConfigFileUseListEnum javaCGOtherConfigFileUseListEnum, boolean printLog) {
String configFileName = javaCGOtherConfigFileUseListEnum.getFileName();
// 优先获取通过代码添加的参数
List configList = otherConfigListMap.get(configFileName);
if (configList != null) {
if (printLog) {
logger.info("使用通过代码添加的参数 [{}]\n{}", configFileName, StringUtils.join(configList, " "));
}
return configList;
}
// 获取其他配置文件中的参数
configList = JavaCGFileUtil.readFile2List(JavaCGConfManager.getInputRootPath() + configFileName);
if (printLog) {
logger.info("使用配置文件中的参数 [{}]\n{}", configFileName, StringUtils.join(configList, " "));
}
return configList;
}
}