代码
public class CMSVersion {
private CMSVersion() {
}
private static Logger log = LoggerFactory.getLogger(CMSVersion.class);
private static Root root = null;
static {
try {
JAXBContext jaxbContext = JAXBContext.newInstance(Root.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
root = (Root) jaxbUnmarshaller.unmarshal(Root.class
.getClassLoader().getResourceAsStream("cmsversion.xml"));
} catch (Exception e) {
log.error("通过jaxb解析xml为javaBean报错-------------------------" + e);
}
}
public static Map<String, String> getCMSVersion(String keyName,
String platformName, String versionNumber) {
log.debug("keyName-------------------------" + keyName);
log.debug("platformName-------------------------" + platformName);
log.debug("versionNumber-------------------------" + versionNumber);
try {
if (StringUtils.isNotEmpty(keyName)
&& StringUtils.isNotEmpty(platformName)
&& StringUtils.isNotEmpty(versionNumber)) {
if (null != root) {
// 1.获取key对象
KeyProms key = getKey(keyName);
log.debug("key-------------------------" + key);
if (null != key) {
// 2.获取平台对象
Platform platform = getPlatform(key, platformName);
log.debug("platform-------------------------"
+ platform);
if (null != platform) {
// 3.获取符合的版本
Version version = getVersion(platform,
versionNumber);
log.debug("version-------------------------"
+ version);
if (null != version) {
return getContent(version);
}
}
}
}
}
} catch (Exception e) {
log.error("返回该版本号下面的所有信息报错-------------------------" + e);
}
return null;
}
private static KeyProms getKey(String keyName) {
List<KeyProms> keyList = root.getKeyPromsList();
if (null != keyList && keyList.size() > 0) {
for (KeyProms key : keyList) {
if (keyName.equals(key.getName())) {
return key;
}
}
}
return null;
}
private static Platform getPlatform(KeyProms key, String platformName) {
List<Platform> platformList = key.getPlatform();
if (null != platformList && platformList.size() > 0) {
for (Platform platform : platformList) {
if (platformName.equals(platform.getName())) {
return platform;
}
}
}
return null;
}
private static Version getVersion(Platform platform, String versionNumber) {
List<Version> versionList = platform.getVersion();
if (null != versionList && versionList.size() > 0) {
int currentVersion = Integer.valueOf(versionNumber.split("\\.")[0]);
for (Version version : versionList) {
String versionNumberTemp = version.getVersionNumber();
if (StringUtils.isNotEmpty(versionNumberTemp)) {
String[] versionNumberArray = versionNumberTemp.substring(
1, versionNumberTemp.length() - 1).split("-");
String lowStr = versionNumberArray[0];
String highStr = versionNumberArray.length == 1 ? ""
: versionNumberArray[1];
int low = "".equals(lowStr) ? 0 : Integer.valueOf(lowStr
.split("\\.")[0]);
int high = "".equals(highStr) ? 0 : Integer.valueOf(highStr
.split("\\.")[0]);
// 版本以上
if (hi