aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/org/onap/portalng/preferences/services/PreferencesService.java
diff options
context:
space:
mode:
authorFiete Ostkamp <Fiete.Ostkamp@telekom.de>2023-08-16 07:15:07 +0000
committerFiete Ostkamp <Fiete.Ostkamp@telekom.de>2023-08-16 08:19:43 +0000
commit7c0e2f563a18dfe7c8f6c2ad66d01775c9468f37 (patch)
tree93ec77e83d0eb035c26a7f4e3017a7ee9f2e4f91 /app/src/main/java/org/onap/portalng/preferences/services/PreferencesService.java
parent6ae8df1305d1374af3b5ffe8ecb4c5ce3e17260d (diff)
Consistently use the preferences name in the preferences code base
- rename package name from org.onap.portal.prefs to org.onap.portalng.preferences - replace all other occurences of portal-prefs with preferences Other: - remove Sonarqube plugin Issue-ID: PORTALNG-39 Signed-off-by: Fiete Ostkamp <Fiete.Ostkamp@telekom.de> Change-Id: Iced79a26460d988c5b22eb5fcac86d350528a1a2
Diffstat (limited to 'app/src/main/java/org/onap/portalng/preferences/services/PreferencesService.java')
-rw-r--r--app/src/main/java/org/onap/portalng/preferences/services/PreferencesService.java80
1 files changed, 80 insertions, 0 deletions
diff --git a/app/src/main/java/org/onap/portalng/preferences/services/PreferencesService.java b/app/src/main/java/org/onap/portalng/preferences/services/PreferencesService.java
new file mode 100644
index 0000000..4e7dfb3
--- /dev/null
+++ b/app/src/main/java/org/onap/portalng/preferences/services/PreferencesService.java
@@ -0,0 +1,80 @@
+/*
+ *
+ * Copyright (c) 2022. Deutsche Telekom AG
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ *
+ */
+
+package org.onap.portalng.preferences.services;
+
+import org.onap.portalng.preferences.entities.PreferencesDto;
+import org.onap.portalng.preferences.exception.ProblemException;
+import org.onap.portalng.preferences.openapi.model.Preferences;
+import org.onap.portalng.preferences.repository.PreferencesRepository;
+import org.onap.portalng.preferences.util.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import reactor.core.publisher.Mono;
+
+@Service
+public class PreferencesService {
+
+ @Autowired
+ private PreferencesRepository repository;
+
+ public Mono<Preferences> getPreferences(String userId){
+ return repository
+ .findById(userId)
+ .switchIfEmpty(defaultPreferences())
+ .map(this::toPreferences);
+ }
+
+ public Mono<Preferences> savePreferences( String xRequestId, String userId, Preferences preferences){
+
+ var preferencesDto = new PreferencesDto();
+ preferencesDto.setUserId(userId);
+ preferencesDto.setProperties(preferences.getProperties());
+
+ return repository
+ .save(preferencesDto)
+ .map(this::toPreferences)
+ .onErrorResume(ProblemException.class, ex -> {
+ Logger.errorLog(xRequestId,"user prefrences", userId, "preferences" );
+ return Mono.error(ex);
+ });
+
+ }
+
+ private Preferences toPreferences(PreferencesDto preferencesDto) {
+ var preferences = new Preferences();
+ preferences.setProperties(preferencesDto.getProperties());
+ return preferences;
+ }
+
+ /**
+ * Get a Preferences object that is initialised with an empty string.
+ * This is a) for convenience to not handle 404 on the consuming side and
+ * b) for security reasons
+ * @return PreferencesDto
+ */
+ private Mono<PreferencesDto> defaultPreferences() {
+ var preferencesDto = new PreferencesDto();
+ preferencesDto.setProperties("");
+ return Mono.just(preferencesDto);
+ }
+}