Skip to content

Commit ac37778

Browse files
authored
Merge pull request #2409 from ControlSystemStudio/alarm_logging_service
Alarm logging service
2 parents 5040433 + 86fb4ab commit ac37778

File tree

4 files changed

+53
-31
lines changed

4 files changed

+53
-31
lines changed

app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogSearchJob.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@
2222
import java.util.List;
2323
import java.util.function.BiConsumer;
2424
import java.util.function.Consumer;
25+
import java.util.logging.Level;
2526
import java.util.stream.Collectors;
2627

28+
import static org.phoebus.applications.alarm.logging.ui.AlarmLogTableApp.logger;
2729
/**
2830
* A Job to search for alarm messages logged by the alarm logging service
2931
* @author Kunal Shroff
@@ -78,10 +80,17 @@ public void run(JobMonitor monitor) {
7880
map.putIfAbsent("size", Arrays.asList(String.valueOf(size)));
7981

8082
try {
81-
List<AlarmLogTableItem> result = objectMapper.readValue(client.path("/search/alarm")
83+
84+
long start = System.currentTimeMillis();
85+
String resultStr = client.path("/search/alarm")
8286
.queryParams(map)
83-
.accept(MediaType.APPLICATION_JSON).get(String.class), new TypeReference<List<AlarmLogTableItem>>() {
87+
.accept(MediaType.APPLICATION_JSON).get(String.class);
88+
89+
logger.log(Level.FINE,"String response = " + (System.currentTimeMillis() - start));
90+
start = System.currentTimeMillis();
91+
List<AlarmLogTableItem> result = objectMapper.readValue(resultStr, new TypeReference<List<AlarmLogTableItem>>() {
8492
});
93+
logger.log(Level.FINE,"Object mapper response = " + (System.currentTimeMillis() - start));
8594
alarmMessageHandler.accept(result);
8695
} catch (JsonProcessingException e) {
8796
errorHandler.accept("Failed to search for alarm logs ", e);

app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogTableController.java

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,7 @@ public ObservableValue<String> call(CellDataFeatures<AlarmLogTableItem, String>
307307
tableView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
308308

309309
searchParameters.put(Keys.PV, this.searchString);
310+
searchParameters.put(Keys.ROOT, "*");
310311
searchParameters.put(Keys.MESSAGE, "*");
311312
searchParameters.put(Keys.SEVERITY, "*");
312313
searchParameters.put(Keys.CURRENTSEVERITY, "*");
@@ -318,14 +319,17 @@ public ObservableValue<String> call(CellDataFeatures<AlarmLogTableItem, String>
318319
searchParameters.put(Keys.ENDTIME, TimeParser.format(java.time.Duration.ZERO));
319320
advancedSearchViewController.setSearchParameters(searchParameters);
320321

321-
query.setText(searchParameters.entrySet().stream().sorted(Map.Entry.comparingByKey()).map((e) -> {
322-
return e.getKey().getName().trim() + "=" + e.getValue().trim();
323-
}).collect(Collectors.joining("&")));
322+
query.setText(
323+
searchParameters.entrySet().stream()
324+
.sorted(Map.Entry.comparingByKey())
325+
.map((e) -> e.getKey().getName().trim() + "=" + e.getValue().trim())
326+
.collect(Collectors.joining("&")));
324327

325-
searchParameters.addListener((MapChangeListener<Keys, String>) change -> query.setText(searchParameters.entrySet().stream()
326-
.sorted(Entry.comparingByKey())
327-
.map((e) -> e.getKey().getName().trim() + "=" + e.getValue().trim())
328-
.collect(Collectors.joining("&"))));
328+
searchParameters.addListener(
329+
(MapChangeListener<Keys, String>) change -> query.setText(searchParameters.entrySet().stream()
330+
.sorted(Entry.comparingByKey())
331+
.map((e) -> e.getKey().getName().trim() + "=" + e.getValue().trim())
332+
.collect(Collectors.joining("&"))));
329333

330334
query.setOnKeyPressed(keyEvent -> {
331335
if (keyEvent.getCode() == KeyCode.ENTER) {
@@ -384,6 +388,7 @@ public void setIsNodeTable(Boolean isNodeTable) {
384388
} else {
385389
searchParameters.put(Keys.PV, "*");
386390
}
391+
searchParameters.put(Keys.ROOT, "*");
387392
searchParameters.put(Keys.MESSAGE, "*");
388393
searchParameters.put(Keys.SEVERITY, "*");
389394
searchParameters.put(Keys.CURRENTSEVERITY, "*");
@@ -479,16 +484,21 @@ public void resize() {
479484
}
480485
}
481486

487+
Map<String, Keys> lookup = Arrays.stream(Keys.values()).collect(Collectors.toMap(Keys::getName, k -> {
488+
return k;
489+
}));
490+
482491
@FXML
483492
void updateQuery() {
484-
Arrays.asList(query.getText().split("&")).forEach(s -> {
493+
List<String> searchTerms = Arrays.asList(query.getText().split("&"));
494+
searchTerms.stream().forEach(s -> {
485495
String key = s.split("=")[0];
486-
for (Map.Entry<Keys, String> entry : searchParameters.entrySet()) {
487-
if (entry.getKey().getName().equals(key)) {
488-
searchParameters.put(entry.getKey(), s.split("=")[1]);
489-
}
496+
String value = s.split("=")[1];
497+
if(lookup.containsKey(key)) {
498+
searchParameters.put(lookup.get(key), value);
490499
}
491500
});
501+
492502
}
493503

494504
@FXML

app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogTableQueryUtil.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ public class AlarmLogTableQueryUtil {
55
// Ordered search keys
66
public enum Keys {
77
PV("pv"),
8+
ROOT("root"),
89
SEVERITY("severity"),
910
MESSAGE("message"),
1011
CURRENTSEVERITY("current_severity"),

services/alarm-logger/src/main/java/org/phoebus/alarm/logging/rest/AlarmLogSearchUtil.java

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -139,23 +139,25 @@ public static List<AlarmLogMessage> search(ElasticsearchClient client,
139139
configSet = true;
140140
break;
141141
case ROOT:
142-
boolQuery.must(
143-
Query.of(b -> b.bool(s -> s.should(
144-
Query.of(q -> q
145-
.wildcard(WildcardQuery.of(w -> w
146-
.field("config").value("state:/" + parameter.getValue().strip() + "*")
147-
)
148-
)
149-
),
150-
Query.of(q -> q
151-
.wildcard(WildcardQuery.of(w -> w
152-
.field("config").value("config:/" + parameter.getValue().strip() + "*")
153-
)
154-
)
155-
)
156-
)))
157-
);
158-
configSet = true;
142+
if (!parameter.getValue().equalsIgnoreCase("*")) {
143+
boolQuery.must(
144+
Query.of(b -> b.bool(s -> s.should(
145+
Query.of(q -> q
146+
.wildcard(WildcardQuery.of(w -> w
147+
.field("config").value("state:/" + parameter.getValue().strip() + "*")
148+
)
149+
)
150+
),
151+
Query.of(q -> q
152+
.wildcard(WildcardQuery.of(w -> w
153+
.field("config").value("config:/" + parameter.getValue().strip() + "*")
154+
)
155+
)
156+
)
157+
)))
158+
);
159+
configSet = true;
160+
}
159161
break;
160162
case SEVERITY:
161163
if (!parameter.getValue().equalsIgnoreCase("*"))

0 commit comments

Comments
 (0)