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");
+ 	}
+}