Skip to content

Commit 109204b

Browse files
committed
fix: unable-to-change-status-to-complete-if-observations-contain-french-characters
1 parent 5aebb0b commit 109204b

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

backend/src/main/java/com/park/utmstack/service/impl/UtmAlertServiceImpl.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.park.utmstack.service.elasticsearch.ElasticsearchService;
2222
import com.park.utmstack.service.elasticsearch.SearchUtil;
2323
import com.park.utmstack.service.soc_ai.SocAIService;
24+
import com.park.utmstack.util.UnicodeReplacer;
2425
import com.park.utmstack.util.enums.AlertStatus;
2526
import com.park.utmstack.util.events.RulesEvaluationEndEvent;
2627
import com.park.utmstack.util.exceptions.DashboardOverviewException;
@@ -187,6 +188,8 @@ public void updateStatus(List<String> alertIds, int status, String statusObserva
187188
String script = String.format(ruleScript, status,
188189
AlertStatus.getByCode(status).getName(), StringEscapeUtils.escapeJava(statusObservation));
189190

191+
script = UnicodeReplacer.replaceUnicode(script);
192+
190193
elasticsearchService.updateByQuery(SearchUtil.toQuery(filters),
191194
Constants.SYS_INDEX_PATTERN.get(SystemIndexPattern.ALERTS), script);
192195
} catch (Exception e) {
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.park.utmstack.util;
2+
3+
import java.util.regex.Matcher;
4+
import java.util.regex.Pattern;
5+
6+
public class UnicodeReplacer {
7+
// Pattern to detect Unicode sequences like \u00E9
8+
private static final Pattern UNICODE_PATTERN = Pattern.compile("\\\\u([0-9A-Fa-f]{4})");
9+
10+
/**
11+
* Method to replace Unicode sequences with their corresponding characters.
12+
*
13+
* @param input The text containing Unicode sequences.
14+
* @return The text with Unicode sequences replaced by their actual characters.
15+
*/
16+
public static String replaceUnicode(String input) {
17+
Matcher matcher = UNICODE_PATTERN.matcher(input);
18+
StringBuffer result = new StringBuffer();
19+
20+
while (matcher.find()) {
21+
// Converts the Unicode sequence to its equivalent character
22+
String unicode = matcher.group(1);
23+
char character = (char) Integer.parseInt(unicode, 16);
24+
matcher.appendReplacement(result, String.valueOf(character));
25+
}
26+
27+
matcher.appendTail(result);
28+
return result.toString();
29+
}
30+
31+
}
32+

0 commit comments

Comments
 (0)