Skip to content

Commit 96fd1df

Browse files
committed
Log entry editor to use service provider level values
1 parent c0abdb0 commit 96fd1df

File tree

4 files changed

+50
-7
lines changed

4 files changed

+50
-7
lines changed

app/logbook/olog/client-es/src/main/java/org/phoebus/olog/es/api/OlogHttpClient.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import java.util.List;
5050
import java.util.Map;
5151
import java.util.ServiceLoader;
52+
import java.util.Set;
5253
import java.util.logging.Level;
5354
import java.util.logging.Logger;
5455

@@ -548,4 +549,22 @@ public LogTemplate saveTemplate(LogTemplate template) throws LogbookException {
548549
throw new LogbookException(e);
549550
}
550551
}
552+
553+
@Override
554+
public Collection<org.phoebus.logbook.Level> getLevels(){
555+
HttpRequest request = HttpRequest.newBuilder()
556+
.uri(URI.create(Preferences.olog_url + "/levels"))
557+
.GET()
558+
.build();
559+
560+
try {
561+
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
562+
return OlogObjectMappers.logEntryDeserializer.readValue(
563+
response.body(), new TypeReference<Set<org.phoebus.logbook.Level>>() {
564+
});
565+
} catch (Exception e) {
566+
LOGGER.log(Level.WARNING, "Unable to get templates from service", e);
567+
return Collections.emptySet();
568+
}
569+
}
551570
}

app/logbook/olog/ui/src/main/java/org/phoebus/logbook/olog/ui/write/LogEntryEditorController.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -341,16 +341,9 @@ public void initialize() {
341341
}
342342

343343
levelLabel.setText(LogbookUIPreferences.level_field_name);
344-
// Sites may wish to define a different meaning and name for the "level" field.
345-
String[] levelList = org.phoebus.olog.es.api.Preferences.levels;
346-
availableLevels.addAll(Arrays.asList(levelList));
347344
levelSelector.setItems(availableLevels);
348-
selectedLevelProperty.set(logEntry.getLevel() != null ? logEntry.getLevel() : availableLevels.get(0));
349-
350-
levelSelector.getSelectionModel().select(selectedLevelProperty.get());
351345
dateField.setText(TimestampFormats.DATE_FORMAT.format(Instant.now()));
352346

353-
354347
titleField.textProperty().bindBidirectional(titleProperty);
355348
titleProperty.addListener((changeListener, oldVal, newVal) ->
356349
{
@@ -830,6 +823,17 @@ private void getServerSideStaticData() {
830823
}
831824

832825
templatesProperty.setAll(logClient.getTemplates().stream().toList());
826+
827+
Collection<org.phoebus.logbook.Level> levels = logClient.getLevels();
828+
availableLevels.setAll(levels.stream().map(org.phoebus.logbook.Level::name).sorted().toList());
829+
Optional<org.phoebus.logbook.Level> optionalLevel = levels.stream().filter(org.phoebus.logbook.Level::defaultLevel).findFirst();
830+
String defaultLevel = null;
831+
if(optionalLevel.isPresent()){
832+
// One level value should be the default level
833+
defaultLevel = optionalLevel.get().name();
834+
}
835+
selectedLevelProperty.set(logEntry.getLevel() != null ? logEntry.getLevel() : defaultLevel);
836+
levelSelector.getSelectionModel().select(selectedLevelProperty.get());
833837
});
834838
}
835839

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/*
2+
* Copyright (C) 2025 European Spallation Source ERIC.
3+
*/
4+
5+
package org.phoebus.logbook;
6+
7+
/**
8+
* Encapsulates &quot;level&quot; data managed on the server side.
9+
* @param name The name, presented in UI and contained on a log entry
10+
* @param defaultLevel Indicates if the instantiated object is the
11+
* default level. Server will ensure only one single
12+
* level is maintained as the default level.
13+
*/
14+
public record Level(String name, boolean defaultLevel) {
15+
}

core/logbook/src/main/java/org/phoebus/logbook/LogClient.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.Collections;
77
import java.util.List;
88
import java.util.Map;
9+
import java.util.Set;
910

1011
/**
1112
* @author Eric Berryman taken from shroffk
@@ -529,4 +530,8 @@ default Collection<LogTemplate> getTemplates(){
529530
default LogTemplate saveTemplate(LogTemplate logTemplate) throws LogbookException{
530531
return null;
531532
}
533+
534+
default Collection<Level> getLevels(){
535+
return Collections.emptySet();
536+
}
532537
}

0 commit comments

Comments
 (0)