BTB-03 Put fertig implementiert
diff --git a/src/main/java/org/eclipse/openk/elogbook/controller/BackendControllerUser.java b/src/main/java/org/eclipse/openk/elogbook/controller/BackendControllerUser.java
index d58407d..87e8c49 100644
--- a/src/main/java/org/eclipse/openk/elogbook/controller/BackendControllerUser.java
+++ b/src/main/java/org/eclipse/openk/elogbook/controller/BackendControllerUser.java
@@ -32,6 +32,7 @@
import javax.persistence.EntityManager;
import java.util.List;
+import java.util.Optional;
public class BackendControllerUser {
@@ -97,7 +98,24 @@
}
- public void storeUserSettings( String settingsToSave, String modUser ) throws BtbInternalServerError {
+ public String getUserSettings( String modUser ) throws BtbInternalServerError {
+ LOGGER.info("getUserSettings() is called");
+ EntityManager emOrg = EntityHelper.getEMF().createEntityManager();
+ try (AutoCloseEntityManager em = new AutoCloseEntityManager(emOrg)) {
+ TblUserSettingsDao dao = new TblUserSettingsDao(em);
+ try {
+ Optional<TblUserSettings> us = dao.getSettingsForUser(modUser, DEFAULT_SETTING_TYPE);
+ return us.isPresent() ? us.get().getValue() : "{}";
+ } catch (Exception e) {
+ LOGGER.error( "Error loading usersettings" );
+ throw( new BtbInternalServerError("Error loading usersettings"));
+ }
+ } finally {
+ LOGGER.info("getUserSettings() is finished");
+ }
+ }
+
+ public boolean storeUserSettings( String settingsToSave, String modUser ) throws BtbInternalServerError {
LOGGER.info("storeUserSettings() is called");
EntityManager emOrg = EntityHelper.getEMF().createEntityManager();
@@ -114,11 +132,11 @@
try {
dao.persistInTx(userSettingsToStore);
em.getTransaction().commit();
+ return true;
} catch (Exception e) {
LOGGER.error( "Error storing usersettings" );
throw( new BtbInternalServerError("Error storing usersettings"));
}
-
} finally {
LOGGER.info("storeUserSettings() is finished");
}
diff --git a/src/main/java/org/eclipse/openk/elogbook/controller/ControllerImplementations.java b/src/main/java/org/eclipse/openk/elogbook/controller/ControllerImplementations.java
index ced70b3..0a8b0ed 100644
--- a/src/main/java/org/eclipse/openk/elogbook/controller/ControllerImplementations.java
+++ b/src/main/java/org/eclipse/openk/elogbook/controller/ControllerImplementations.java
@@ -340,6 +340,7 @@
this.backendControllerUser = backendControllerUser;
}
+
/*
* (non-Javadoc)
*
@@ -347,12 +348,36 @@
*/
@Override
public Response invoke() throws BtbException {
- backendControllerUser.storeUserSettings( this.userSettingsJson, getModUser() );
+ backendControllerUser.storeUserSettings( this.userSettingsJson, getModUser() );
return ResponseBuilderWrapper.INSTANCE
.buildOKResponse(Globals.OK_STRING);
}
}
+ /**
+ * Get the settings for a given user
+ */
+ public static class GetUserSettings extends BackendInvokable {
+ private BackendControllerUser backendControllerUser;
+
+ public GetUserSettings(BackendControllerUser backendControllerUser) {
+ this.backendControllerUser = backendControllerUser;
+ }
+
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.openk.elogbook.controller.BaseWebService.Invokable#invoke()
+ */
+ @Override
+ public Response invoke() throws BtbException {
+ String resultString = backendControllerUser.getUserSettings( getModUser() );
+ return ResponseBuilderWrapper.INSTANCE
+ .buildOKResponse(resultString);
+ }
+ }
+
public static class GetHistoricalShiftChangeList extends BackendInvokable {
private String responsibilitySearchFilterJson;
diff --git a/src/main/java/org/eclipse/openk/elogbook/rest/BackendRestService.java b/src/main/java/org/eclipse/openk/elogbook/rest/BackendRestService.java
index 4c614bd..0be952a 100644
--- a/src/main/java/org/eclipse/openk/elogbook/rest/BackendRestService.java
+++ b/src/main/java/org/eclipse/openk/elogbook/rest/BackendRestService.java
@@ -197,6 +197,13 @@
notificationSearchFilter, new BackendControllerNotification()));
}
+ @GET
+ @Path("/user-settings")
+ @Produces("application/json")
+ public Response getUserSettings(@HeaderParam(value = Globals.KEYCLOAK_AUTH_TAG) String token ) {
+ return invoke(token, SecureType.NORMAL, new ControllerImplementations.GetUserSettings( new BackendControllerUser()));
+ }
+
@POST
@Path("/user-settings")
@Produces("application/json")
diff --git a/src/test/java/org/eclipse/openk/elogbook/controller/ControllerImplementationsTest.java b/src/test/java/org/eclipse/openk/elogbook/controller/ControllerImplementationsTest.java
index 7ba5958..0de13b8 100644
--- a/src/test/java/org/eclipse/openk/elogbook/controller/ControllerImplementationsTest.java
+++ b/src/test/java/org/eclipse/openk/elogbook/controller/ControllerImplementationsTest.java
@@ -41,7 +41,11 @@
import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.assertNotNull;
-import static org.easymock.EasyMock.*;
+import static org.easymock.EasyMock.anyInt;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.anyString;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
import static org.eclipse.openk.elogbook.controller.BackendControllerResponsibility.POST_RESPONSIBILITY_MODE.PLAN;
@@ -417,4 +421,20 @@
assertEquals(controllerImpl.invoke().getStatus(), HttpStatus.SC_OK);
}
+
+
+ @Test
+ public void testPostUserSettings() throws BtbException {
+ String userSettingText = "{}";
+
+ ControllerImplementations.PostUserSettings controllerImpl
+ = new ControllerImplementations.PostUserSettings(userSettingText, beMockBackendControllerUser);
+ controllerImpl.setModUser("EgalUser");
+ expect(beMockBackendControllerUser.storeUserSettings( anyString(), anyString())).andReturn(true);
+ PowerMock.replay(beMockBackendControllerUser);
+
+ assertEquals(controllerImpl.invoke().getStatus(), HttpStatus.SC_OK);
+ assertEquals(controllerImpl.getModUser(), "EgalUser");
+ }
+
}
diff --git a/src/test/java/org/eclipse/openk/elogbook/persistence/model/TblUserSettingsTest.java b/src/test/java/org/eclipse/openk/elogbook/persistence/model/TblUserSettingsTest.java
new file mode 100644
index 0000000..1d2a79c
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/elogbook/persistence/model/TblUserSettingsTest.java
@@ -0,0 +1,33 @@
+/**
+******************************************************************************
+* Copyright © 2017-2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+* http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+package org.eclipse.openk.elogbook.persistence.model;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class TblUserSettingsTest {
+
+ @Test
+ public void TestGettersSetters() {
+ TblUserSettings tblUserSettings = new TblUserSettings();
+ tblUserSettings.setId(1);
+ tblUserSettings.setValue("lari fari");
+ tblUserSettings.setUsername("Bruno Haferkamp");
+ tblUserSettings.setSettingType("Default");
+
+ assertEquals((long)tblUserSettings.getId(), 1);
+ assertEquals(tblUserSettings.getSettingType(), "Default");
+ assertEquals(tblUserSettings.getUsername(), "Bruno Haferkamp");
+ assertEquals(tblUserSettings.getValue(), "lari fari");
+ }
+}