Commit 699c2f9e LN

启动时自动更新资源(只新增不修改)

1 个父辈 8e430511
...@@ -9,14 +9,12 @@ import com.neotel.smfcore.core.language.service.nanager.ILanguageMsgManager; ...@@ -9,14 +9,12 @@ import com.neotel.smfcore.core.language.service.nanager.ILanguageMsgManager;
import com.neotel.smfcore.core.language.service.po.LanguageMsg; import com.neotel.smfcore.core.language.service.po.LanguageMsg;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.*; import java.io.*;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j @Slf4j
@Service @Service
...@@ -26,7 +24,19 @@ public class MessageService { ...@@ -26,7 +24,19 @@ public class MessageService {
ILanguageMsgManager languageMsgManager; ILanguageMsgManager languageMsgManager;
@Autowired @Autowired
DataCache dataCache; DataCache dataCache;
private static MyMessageSource messageSource;
public MessageService(MyMessageSource messageSource) {
this.messageSource = messageSource;
if(messageSource instanceof ResourceBundleMessageSource){
Map<String,String> map1=messageSource.getMessageMap(Locale.SIMPLIFIED_CHINESE);
Map<String,String> map2=messageSource.getMessageMap(Locale.US);
Map<String,String> map3=messageSource.getMessageMap(Locale.JAPAN);
Map<String,String> map4=messageSource.getMessageMap(new Locale("zh","TW"));
Map<String,String> map5=messageSource.getMessageMap(new Locale(""));
}
}
public Map<String,Map<String, LanguageMsg>> loadMsgMap() { public Map<String,Map<String, LanguageMsg>> loadMsgMap() {
Map<String,Map<String, LanguageMsg>> resourceMap=new HashMap<>(); Map<String,Map<String, LanguageMsg>> resourceMap=new HashMap<>();
...@@ -91,43 +101,34 @@ public class MessageService { ...@@ -91,43 +101,34 @@ public class MessageService {
} }
} }
} }
public void autoImportProperties() {
// String filePath = getResourcesPath();
String filePath = "D:\\resources";
File file = new File(filePath); //需要获取的文件的路径
if (file.exists() && file.isDirectory()) {
String[] fileNameLists = file.list(); //存储文件名的String数组
File[] filePathLists = file.listFiles(); //存储文件路径的String数组
Map<String, String> defaultLanMap = new HashMap<>();
public void autoImportResources() {
Map<String, Map<String, String>> lanMsgMap = new HashMap<>(); Map<String, Map<String, String>> lanMsgMap = new HashMap<>();
Map<String, String> defaultLanMap = new HashMap<>();
List<String> list = getAllLanList();
for (int i = 0; i < filePathLists.length; i++) { list.add("");
if (filePathLists[i].isFile()) { for (String lan :
list) {
String fileName = filePathLists[i].getName(); String[] array = lan.split("-");
if (fileName.endsWith(".properties")) { Locale locale = null;
if (array.length == 2) {
String lanType = fileName.replace("messages", "").replace(".properties", ""); locale = new Locale(array[0], array[1]);
if (ObjectUtil.isEmpty(lanType)) {
defaultLanMap = readPropertiesFile(filePathLists[i]);
log.info("MessageCache 从文件[" + fileName + "]中读取到" + defaultLanMap.size() + "]条默认资源");
} else { } else {
String lan = lanType.substring(1); locale = new Locale(lan);
lan = lan.replace('_', '-');
Map<String, String> map = readPropertiesFile(filePathLists[i]);
lanMsgMap.put(lan, map);
log.info("MessageCache 从文件[" + fileName + "]中读取到[" + defaultLanMap.size() + "]条[" + lan + "]资源");
}
} }
if (ObjectUtil.isEmpty(lan)) {
defaultLanMap = messageSource.getMessageMap(locale);
log.info("autoImportResources 读取到" + defaultLanMap.size() + "]条默认资源");
} else {
Map<String, String> map = messageSource.getMessageMap(locale);
lanMsgMap.put(lan, map);
log.info("autoImportResources 读取到[" + map.size() + "]条[" + lan + "]资源");
} }
} }
List<LanguageMsg> languageMsgs = new ArrayList<>(); List<LanguageMsg> languageMsgs = new ArrayList<>();
for (String code : for (String code :
defaultLanMap.keySet()) { defaultLanMap.keySet()) {
...@@ -143,10 +144,68 @@ public class MessageService { ...@@ -143,10 +144,68 @@ public class MessageService {
languageMsgs.add(msg); languageMsgs.add(msg);
} }
//只能新增不能修改 //只能新增不能修改
msgListUpload(".properties", languageMsgs,false); msgListUpload(".properties", languageMsgs, false);
// languageMsgManager.insertAll(languageMsgs); // languageMsgManager.insertAll(languageMsgs);
} }
}
// public void autoImportProperties() {
//
//// String filePath = getResourcesPath();
//
// String filePath = "D:\\resources";
//
// File file = new File(filePath); //需要获取的文件的路径
// if (file.exists() && file.isDirectory()) {
// String[] fileNameLists = file.list(); //存储文件名的String数组
// File[] filePathLists = file.listFiles(); //存储文件路径的String数组
//
// Map<String, String> defaultLanMap = new HashMap<>();
//
// Map<String, Map<String, String>> lanMsgMap = new HashMap<>();
//
// for (int i = 0; i < filePathLists.length; i++) {
// if (filePathLists[i].isFile()) {
//
// String fileName = filePathLists[i].getName();
// if (fileName.endsWith(".properties")) {
//
// String lanType = fileName.replace("messages", "").replace(".properties", "");
// if (ObjectUtil.isEmpty(lanType)) {
// defaultLanMap = readPropertiesFile(filePathLists[i]);
// log.info("MessageCache 从文件[" + fileName + "]中读取到" + defaultLanMap.size() + "]条默认资源");
// } else {
// String lan = lanType.substring(1);
// lan = lan.replace('_', '-');
// Map<String, String> map = readPropertiesFile(filePathLists[i]);
// lanMsgMap.put(lan, map);
// log.info("MessageCache 从文件[" + fileName + "]中读取到[" + defaultLanMap.size() + "]条[" + lan + "]资源");
// }
// }
//
// }
// }
//
// List<LanguageMsg> languageMsgs = new ArrayList<>();
// for (String code :
// defaultLanMap.keySet()) {
// String defMsg = defaultLanMap.get(code);
// LanguageMsg msg = new LanguageMsg(code, defMsg, "");
// for (String lan :
// lanMsgMap.keySet()) {
// if (lanMsgMap.get(lan).containsKey(code)) {
// String lanMsg = lanMsgMap.get(lan).get(code);
// msg.setContent(lan, lanMsg);
// }
// }
// languageMsgs.add(msg);
// }
// //只能新增不能修改
// msgListUpload(".properties", languageMsgs,false);
//// languageMsgManager.insertAll(languageMsgs);
// }
// }
......
...@@ -94,7 +94,7 @@ public class MessageUtils { ...@@ -94,7 +94,7 @@ public class MessageUtils {
//自动导入CSV内容,只新增不修改 //自动导入CSV内容,只新增不修改
messageService.autoImportCsvFile(); messageService.autoImportCsvFile();
//只新增不修改 //只新增不修改
messageService.autoImportProperties(); messageService.autoImportResources();
if (msgMap.size() > 0) { if (msgMap.size() > 0) {
return; return;
} }
......
package com.neotel.smfcore.core.language.util;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.stereotype.Service;
import java.util.*;
@Service
public class MyMessageSource extends ResourceBundleMessageSource {
private final String baseName="messages";
public Map<String,String> getMessageMap(Locale locale){
Map<String,String> messageMap=new HashMap<>();
ResourceBundle resourceBundle=getResourceBundle(baseName,locale );
if(resourceBundle!=null){
Set<String> keySet= resourceBundle.keySet();
for (String key :
keySet) {
String value= resourceBundle.getString(key);
if(!value.isEmpty()){
messageMap.put(key,value);
}
}
}
return messageMap;
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!