Merge branch 'DEVELOP_BE' of ssh://172.18.22.160:29418/oK/PlannedGridMeasures/mics-backend into DEVELOP_BE
diff --git a/src/main/java/org/eclipse/openk/core/controller/GridMeasureBackendController.java b/src/main/java/org/eclipse/openk/core/controller/GridMeasureBackendController.java
index cfdd4da..ea1cfec 100644
--- a/src/main/java/org/eclipse/openk/core/controller/GridMeasureBackendController.java
+++ b/src/main/java/org/eclipse/openk/core/controller/GridMeasureBackendController.java
@@ -693,6 +693,21 @@
         }
     }
 
+    public List<String> getResponsiblesOnSiteFromGridmeasures(){
+
+        List<String> responsiblesOnSiteList = new ArrayList<>();
+        Set<String> responsiblesOnSiteUniqueSet = new HashSet<>();
+
+        try (AutoCloseEntityManager em = createEm()) {
+            TblGridMeasureDao gmDao = createTblGridMeasureDao(em);
+            responsiblesOnSiteList = gmDao.getResponsiblesOnSite();
+        }
+
+        responsiblesOnSiteUniqueSet.addAll(responsiblesOnSiteList);
+        responsiblesOnSiteUniqueSet.remove(null);
+        return new ArrayList<>(responsiblesOnSiteUniqueSet);
+    }
+
     protected TblSingleGridmeasureDao createTblSingleGridmeasureDao(EntityManager em) { return new TblSingleGridmeasureDao(em); }
 
     protected TblGridMeasureDao createTblGridMeasureDao(EntityManager em) { return new TblGridMeasureDao(em); }
diff --git a/src/main/java/org/eclipse/openk/core/controller/MasterDataBackendController.java b/src/main/java/org/eclipse/openk/core/controller/MasterDataBackendController.java
index 40f4f90..5dd96d6 100644
--- a/src/main/java/org/eclipse/openk/core/controller/MasterDataBackendController.java
+++ b/src/main/java/org/eclipse/openk/core/controller/MasterDataBackendController.java
@@ -126,13 +126,27 @@
         return vmList;
     }
 
-    public List<BranchLevel> getBranchLevels()  {
+//    public List<BranchLevel> getBranchLevels()  {
+////        List<BranchLevel> vmList = new java.util.ArrayList<>();
+////
+////        try (AutoCloseEntityManager em = createEm()) {
+////            RefBranchLevelDao blDao = createRefBranchLevelDao(em);
+////
+////            List<RefBranchLevel>mList = blDao.getBranchLevelsInTx();
+////            GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+////            mList.forEach(m -> vmList.add(mapper.mapToViewModel(BranchLevel.class, m) ) );
+////        }
+////
+////        return vmList;
+////    }
+
+    public List<BranchLevel> getBranchLevelsByBranch(int id)  {
         List<BranchLevel> vmList = new java.util.ArrayList<>();
 
         try (AutoCloseEntityManager em = createEm()) {
             RefBranchLevelDao blDao = createRefBranchLevelDao(em);
 
-            List<RefBranchLevel>mList = blDao.getBranchLevelsInTx();
+            List<RefBranchLevel>mList = blDao.getBranchLevelsByBranchId(id);
             GenericApiToDbMapper mapper = new GenericApiToDbMapper();
             mList.forEach(m -> vmList.add(mapper.mapToViewModel(BranchLevel.class, m) ) );
         }
diff --git a/src/main/java/org/eclipse/openk/db/dao/RefBranchLevelDao.java b/src/main/java/org/eclipse/openk/db/dao/RefBranchLevelDao.java
index e2140ed..bb53751 100644
--- a/src/main/java/org/eclipse/openk/db/dao/RefBranchLevelDao.java
+++ b/src/main/java/org/eclipse/openk/db/dao/RefBranchLevelDao.java
@@ -26,10 +26,22 @@
         super(em);
     }
 
-    public List<RefBranchLevel> getBranchLevelsInTx() {
+//    public List<RefBranchLevel> getBranchLevelsInTx() {
+//        try {
+//            String selectString = "from RefBranchLevel t";
+//            Query q = getEM().createQuery(selectString);
+//            return (List<RefBranchLevel>) q.getResultList();
+//        } catch (Exception t) {
+//            LOGGER.error(t.getMessage());
+//            return null; // NOSONAR We decide to use null logic
+//        }
+//    }
+
+    public List<RefBranchLevel> getBranchLevelsByBranchId(int id) {
         try {
-            String selectString = "from RefBranchLevel t";
+            String selectString = "from RefBranchLevel t where t.fkRefBranch = :Id";
             Query q = getEM().createQuery(selectString);
+            q.setParameter("Id", id);
             return (List<RefBranchLevel>) q.getResultList();
         } catch (Exception t) {
             LOGGER.error(t.getMessage());
diff --git a/src/main/java/org/eclipse/openk/db/dao/TblGridMeasureDao.java b/src/main/java/org/eclipse/openk/db/dao/TblGridMeasureDao.java
index 182a450..5acb3c9 100644
--- a/src/main/java/org/eclipse/openk/db/dao/TblGridMeasureDao.java
+++ b/src/main/java/org/eclipse/openk/db/dao/TblGridMeasureDao.java
@@ -16,6 +16,7 @@
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
+import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -157,4 +158,18 @@
         }
     }
 
+    public List<String> getResponsiblesOnSite() {
+        List<String> retList = new ArrayList<>();
+        try {
+            String selectString = "select t.responsibleOnSiteName from TblGridMeasure t";
+            Query q = getEM().createQuery(selectString);
+
+            return (List<String>)q.getResultList();
+
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+        }
+        return retList;
+    }
+
 }
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/resources/MasterDataResource.java b/src/main/java/org/eclipse/openk/resources/MasterDataResource.java
index 280ec3d..5a8ef12 100644
--- a/src/main/java/org/eclipse/openk/resources/MasterDataResource.java
+++ b/src/main/java/org/eclipse/openk/resources/MasterDataResource.java
@@ -62,15 +62,29 @@
                 .getBranches());
     }
 
-    @ApiOperation(value = "BranchLevels", notes = "This service gets all BranchLevels from the Database")
-    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = BranchLevel.class,reference = "#/definitions/BranchLevels") } )
+//    @ApiOperation(value = "BranchLevels", notes = "This service gets all BranchLevels from the Database")
+//    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = BranchLevel.class,reference = "#/definitions/BranchLevels") } )
+//    @GET
+//    @Path("/getBranchLevels")
+//    @Produces(MediaType.APPLICATION_JSON)
+//    @Timed
+//    public Response getBranchLevels(@ApiParam(name ="Authorization", value ="JWT Token", required =true)@HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+//        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new MasterDataBackendController()
+//                .getBranchLevels());
+//    }
+
+    @ApiOperation(value = "BranchLevels", notes = "This service gets all BranchLevels for a certain branch from the Database")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = BranchLevel.class,reference = "#/definitions/BranchLevel") } )
     @GET
-    @Path("/getBranchLevels")
+    @Path("/getBranchLevelsByBranch/{branchId}")
     @Produces(MediaType.APPLICATION_JSON)
     @Timed
-    public Response getBranchLevels(@ApiParam(name ="Authorization", value ="JWT Token", required =true)@HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+    public Response getBranchLevelsByBranch(@ApiParam(name ="Authorization", value ="JWT Token", required =true)
+                                   @HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt,
+                                   @ApiParam(name ="id", value ="id", required =true)
+                                   @PathParam("branchId") String branchId) {
         return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new MasterDataBackendController()
-                .getBranchLevels());
+                .getBranchLevelsByBranch(Integer.parseInt(branchId)));
     }
 
     @ApiOperation(value = "GmStatus", notes = "This service gets all possible Status from the Database")
diff --git a/src/main/java/org/eclipse/openk/resources/PlannedGridMeasuresResource.java b/src/main/java/org/eclipse/openk/resources/PlannedGridMeasuresResource.java
index 0e79f53..8bcc3eb 100644
--- a/src/main/java/org/eclipse/openk/resources/PlannedGridMeasuresResource.java
+++ b/src/main/java/org/eclipse/openk/resources/PlannedGridMeasuresResource.java
@@ -138,6 +138,8 @@
                 .getGridMeasureById(Integer.parseInt(id)));
     }
 
+
+
     /*@ApiOperation(value = "Get grid measure by user", notes = "This service retrieves all grid measures with the current user as creator or modifier from the database")
     @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = GridMeasure.class,reference = "#/definitions/GridMeasure") } )
     @GET
@@ -373,6 +375,19 @@
                 .setGridConfig(isSkipForApproval, isEndAfterApproved, isSkipRequesting, isEndAfterReleased, isSkipInWork));
     }
 
+
+    @ApiOperation(value = "Gets all responsibles on-site from gridmeasures", notes = "This service retrieves all responsibles on-site from gridmeasures in the database")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = String.class,reference = "#/definitions/GridMeasure.responsibleOnSiteName") } )
+    @GET
+    @Path("/getResponsiblesOnSiteFromGridmeasures")
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getResponsiblesOnSiteFromGridmeasures(@ApiParam(name ="Authorization", value ="JWT Token", required =true)@HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new GridMeasureBackendController()
+                .getResponsiblesOnSiteFromGridmeasures());
+    }
+
+
     private Response responseFromException(Exception e) {
         int errcode;
         String retJson;
diff --git a/src/test/java/org/eclipse/openk/core/controller/MasterDataBackendControllerTest.java b/src/test/java/org/eclipse/openk/core/controller/MasterDataBackendControllerTest.java
index 26f79b9..237044e 100644
--- a/src/test/java/org/eclipse/openk/core/controller/MasterDataBackendControllerTest.java
+++ b/src/test/java/org/eclipse/openk/core/controller/MasterDataBackendControllerTest.java
@@ -13,12 +13,7 @@
 
 import static junit.framework.TestCase.assertEquals;
 import static junit.framework.TestCase.assertTrue;
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.anyString;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
+import static org.easymock.EasyMock.*;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -247,7 +242,7 @@
         mList.add(refBranchLevel3);
 
         RefBranchLevelDao dao = EasyMock.createMock(RefBranchLevelDao.class);
-        expect( dao.getBranchLevelsInTx() ).andReturn(mList).anyTimes();
+        expect( dao.getBranchLevelsByBranchId(anyInt()) ).andReturn(mList).anyTimes();
         replay( dao );
         verify( dao );
         return dao;
@@ -396,13 +391,13 @@
     }
 
     @Test
-    public void testGetBranchLevels() throws Exception {
+    public void testGetBranchLevelsByBranch() throws Exception {
         RefBranchLevelDao dao = createRefBranchLevelDao(); //MockDao
         MasterDataBackendControllerTest.TestableMasterDataBackendController tbc = new MasterDataBackendControllerTest.TestableMasterDataBackendController();
         tbc.branchLevelDao = dao; //MockDao
 
-        List<BranchLevel> retList = tbc.getBranchLevels(); //Aufruf Methode der Testklasse
-        List<RefBranchLevel> orgList = dao.getBranchLevelsInTx(); //Mock Models
+        List<BranchLevel> retList = tbc.getBranchLevelsByBranch(3); //Aufruf Methode der Testklasse
+        List<RefBranchLevel> orgList = dao.getBranchLevelsByBranchId(3); //Mock Models
         assertEquals(orgList.size(), retList.size());
         assertEquals(orgList.get(2).getId(), retList.get(2).getId());
         assertEquals(orgList.get(1).getDescription(), retList.get(1).getDescription());
diff --git a/src/test/java/org/eclipse/openk/resources/MasterDataResourceTest.java b/src/test/java/org/eclipse/openk/resources/MasterDataResourceTest.java
index 4c0c03d..02a5d8e 100644
--- a/src/test/java/org/eclipse/openk/resources/MasterDataResourceTest.java
+++ b/src/test/java/org/eclipse/openk/resources/MasterDataResourceTest.java
@@ -56,7 +56,7 @@
     }
     @Test
     public void testGetBranchLevels() {
-        Response r = new MasterDataResource().getBranchLevels("LET_ME_IN");
+        Response r = new MasterDataResource().getBranchLevelsByBranch("LET_ME_IN", "1");
         assertNotNull( r );
     }