GNM-1193 Webservice getCalender erstellt
GNM-1197 Unittests
diff --git a/src/main/java/org/eclipse/openk/api/Calender.java b/src/main/java/org/eclipse/openk/api/Calender.java
new file mode 100644
index 0000000..9225e67
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/Calender.java
@@ -0,0 +1,68 @@
+/**
+ ******************************************************************************
+ * Copyright © 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.api;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Date;
+
+public class Calender {
+
+    @JsonProperty
+    private Integer gridMeasureId;
+
+    @JsonProperty
+    private String gridMeasureTitle;
+
+    @JsonProperty
+    private Integer gridMeasureStatusId;
+
+    @JsonProperty
+    private Integer singleGridMeasureId;
+
+    @JsonProperty
+    private String singleGridMeasureTitle;
+
+    @JsonProperty
+    private Date plannedStarttimSinglemeasure;
+
+    @JsonProperty
+    private Date plannedEndtimeSinglemeasure;
+
+
+    public Integer getGridMeasureId() { return gridMeasureId; }
+
+    public void setGridMeasureId(Integer gridMeasureId) { this.gridMeasureId = gridMeasureId; }
+
+    public Integer getSingleGridMeasureId() { return singleGridMeasureId; }
+
+    public void setSingleGridMeasureId(Integer singleGridMeasureId) { this.singleGridMeasureId = singleGridMeasureId; }
+
+    public String getGridMeasureTitle() { return gridMeasureTitle; }
+
+    public void setGridMeasureTitle(String gridMeasureTitle) { this.gridMeasureTitle = gridMeasureTitle; }
+
+    public Integer getGridMeasureStatusId() { return gridMeasureStatusId; }
+
+    public void setGridMeasureStatusId(Integer gridMeasureStatusId) { this.gridMeasureStatusId = gridMeasureStatusId; }
+
+    public String getSingleGridMeasureTitle() { return singleGridMeasureTitle; }
+
+    public void setSingleGridMeasureTitle(String singleGridMeasureTitle) { this.singleGridMeasureTitle = singleGridMeasureTitle; }
+
+    public Date getPlannedStarttimSinglemeasure() { return plannedStarttimSinglemeasure; }
+
+    public void setPlannedStarttimSinglemeasure(Date plannedStarttimSinglemeasure) { this.plannedStarttimSinglemeasure = plannedStarttimSinglemeasure; }
+
+    public Date getPlannedEndtimeSinglemeasure() { return plannedEndtimeSinglemeasure; }
+
+    public void setPlannedEndtimeSinglemeasure(Date plannedEndtimeSinglemeasure) { this.plannedEndtimeSinglemeasure = plannedEndtimeSinglemeasure; }
+}
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 db422f9..05f10fe 100644
--- a/src/main/java/org/eclipse/openk/core/controller/GridMeasureBackendController.java
+++ b/src/main/java/org/eclipse/openk/core/controller/GridMeasureBackendController.java
@@ -14,14 +14,7 @@
 import org.apache.commons.codec.binary.Base64;
 import org.apache.log4j.Logger;
 import org.eclipse.jetty.http.HttpStatus;
-import org.eclipse.openk.api.BackendSettings;
-import org.eclipse.openk.api.Document;
-import org.eclipse.openk.api.FilterObject;
-import org.eclipse.openk.api.GridMeasure;
-import org.eclipse.openk.api.HGridMeasure;
-import org.eclipse.openk.api.Lock;
-import org.eclipse.openk.api.RoleAccessDefinitionApi;
-import org.eclipse.openk.api.VersionInfo;
+import org.eclipse.openk.api.*;
 import org.eclipse.openk.common.mapper.GridMeasureMapper;
 import org.eclipse.openk.common.mapper.generic.GenericApiToDbMapper;
 import org.eclipse.openk.common.util.DateUtils;
@@ -793,6 +786,41 @@
         return new ArrayList<>(networkControlsUniqueSet);
     }
 
+    public List<Calender> getCalender() {
+
+        List<TblGridMeasure> mList;
+        List<TblSingleGridmeasure> sgmList;
+        List<Calender> calenderList = new ArrayList<>();
+
+        try (AutoCloseEntityManager em = createEm()) {
+            TblGridMeasureDao gmDao = createTblGridMeasureDao(em);
+            TblSingleGridmeasureDao sgmDao = createTblSingleGridmeasureDao(em);
+            mList = gmDao.getGridMeasuresExcludingStatusInTx(PlgmProcessState.CLOSED.getStatusValue(), PlgmProcessState.CANCELED.getStatusValue());
+
+            for (TblGridMeasure m : mList) {
+                sgmList = sgmDao.getSingleGridmeasuresByGmIdInTx(m.getId());
+
+                for (TblSingleGridmeasure sgm : sgmList) {
+
+                    Calender calenderItem = new Calender();
+
+                    calenderItem.setGridMeasureId(m.getId());
+                    calenderItem.setGridMeasureTitle(m.getTitle());
+                    calenderItem.setGridMeasureStatusId(m.getFkRefGmStatus());
+                    calenderItem.setSingleGridMeasureId(sgm.getId());
+                    calenderItem.setSingleGridMeasureTitle(sgm.getTitle());
+                    calenderItem.setPlannedStarttimSinglemeasure(sgm.getPlannedStarttimeSinglemeasure());
+                    calenderItem.setPlannedEndtimeSinglemeasure(sgm.getPlannedEndtimeSinglemeasure());
+
+                    calenderList.add(calenderItem);
+                }
+            }
+        }
+        return calenderList;
+    }
+
+
+
     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/db/dao/TblGridMeasureDao.java b/src/main/java/org/eclipse/openk/db/dao/TblGridMeasureDao.java
index e01adcd..dba9c14 100644
--- a/src/main/java/org/eclipse/openk/db/dao/TblGridMeasureDao.java
+++ b/src/main/java/org/eclipse/openk/db/dao/TblGridMeasureDao.java
@@ -22,8 +22,6 @@
 
 public class TblGridMeasureDao extends GenericDaoJpa<TblGridMeasure, Integer>{
     public static final String FK_REF_GM_STATUS = "fkRefGmStatus";
-    //public static final String MODIFIER_NAME = "modUser";
-    //public static final String CREATOR_NAME = "createUser";
 
     public TblGridMeasureDao() {
         super();
@@ -144,7 +142,6 @@
 
     public List<TblGridMeasure> getGridMeasuresByUserNameExcludingStatus(String username, Integer statusId1, Integer statusId2) {
         try {
-            //String selectString = "from TblGridMeasure t WHERE t.fkRefGmStatus NOT IN (:fkRefGmStatus1, :fkRefGmStatus2)";
             String selectString = "from TblGridMeasure t where t.id IN (select distinct t.id from TblGridMeasure t INNER JOIN HTblGridMeasure h ON t.id = h.id WHERE h.hUser = :UserName) AND t.fkRefGmStatus NOT IN (:fkRefGmStatus1, :fkRefGmStatus2)";
             Query q = getEM().createQuery(selectString);
             q.setParameter("UserName", username);
diff --git a/src/main/java/org/eclipse/openk/resources/PlannedGridMeasuresResource.java b/src/main/java/org/eclipse/openk/resources/PlannedGridMeasuresResource.java
index 4b12506..33bc97b 100644
--- a/src/main/java/org/eclipse/openk/resources/PlannedGridMeasuresResource.java
+++ b/src/main/java/org/eclipse/openk/resources/PlannedGridMeasuresResource.java
@@ -138,6 +138,19 @@
                 .getGridMeasureById(Integer.parseInt(id)));
     }
 
+    @ApiOperation(value = "Get Calender", notes = "This service gets single gridmeasures for the calender view")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = GridMeasure.class,reference = "#/definitions/Calender") } )
+    @GET
+    @Path("/getCalender")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getCalender(@ApiParam(name ="Authorization", value ="JWT Token", required =true)
+                                    @HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new GridMeasureBackendController()
+                .getCalender());
+    }
+
 
     @ApiOperation(value = "Get Current Reminders", notes = "This service retrieves a list of Gridmeasure-Ids")
     @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = GridMeasure.class,reference = "#/definitions/GridMeasure") } )
diff --git a/src/test/java/org/eclipse/openk/api/CalenderTest.java b/src/test/java/org/eclipse/openk/api/CalenderTest.java
new file mode 100644
index 0000000..53831e8
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/api/CalenderTest.java
@@ -0,0 +1,121 @@
+/**
+ ******************************************************************************
+ * Copyright © 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.api;
+
+import static org.junit.Assert.assertEquals;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import java.util.Date;
+
+import org.junit.Test;
+
+public class CalenderTest {
+
+    @Test
+    public void testGetGridMeasureId()throws IOException {
+        Calender calender = new Calender();
+        calender.setGridMeasureId(5);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(calender);
+
+        Calender calender2 = om.readValue(jsonString, Calender.class);
+
+        assertEquals(calender.getGridMeasureId(), calender2.getGridMeasureId());
+    }
+
+    @Test
+    public void testGetGridMeasureTitle()throws IOException {
+        Calender calender = new Calender();
+        calender.setGridMeasureTitle("Test 5");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(calender);
+
+        Calender calender2 = om.readValue(jsonString, Calender.class);
+
+        assertEquals(calender.getGridMeasureTitle(), calender2.getGridMeasureTitle());
+    }
+
+    @Test
+    public void testGetGridMeasureStatusId()throws IOException {
+        Calender calender = new Calender();
+        calender.setGridMeasureStatusId(3);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(calender);
+
+        Calender calender2 = om.readValue(jsonString, Calender.class);
+
+        assertEquals(calender.getGridMeasureStatusId(), calender2.getGridMeasureStatusId());
+    }
+
+    @Test
+    public void testGetSingleGridMeasureId()throws IOException {
+        Calender calender = new Calender();
+        calender.setSingleGridMeasureId(2);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(calender);
+
+        Calender calender2 = om.readValue(jsonString, Calender.class);
+
+        assertEquals(calender.getSingleGridMeasureId(), calender2.getSingleGridMeasureId());
+    }
+
+    @Test
+    public void testGetSingleGridMeasureTitle()throws IOException {
+        Calender calender = new Calender();
+        calender.setSingleGridMeasureTitle("Test Single 2");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(calender);
+
+        Calender calender2 = om.readValue(jsonString, Calender.class);
+
+        assertEquals(calender.getSingleGridMeasureTitle(), calender2.getSingleGridMeasureTitle());
+    }
+
+    @Test
+    public void testGetPlannedStarttimSinglemeasure()throws IOException {
+        Calender calender = new Calender();
+
+        java.util.Date plannedStarttimeSinglemeasure = new Date(System.currentTimeMillis());
+        calender.setPlannedStarttimSinglemeasure(plannedStarttimeSinglemeasure);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(calender);
+
+        Calender calender2 = om.readValue(jsonString, Calender.class);
+
+        assertEquals(calender.getPlannedStarttimSinglemeasure(), calender2.getPlannedStarttimSinglemeasure());
+    }
+
+    @Test
+    public void testGetPlannedEndtimeSinglemeasure()throws IOException {
+        Calender calender = new Calender();
+
+        java.util.Date plannedEndtimeSinglemeasure = new Date(System.currentTimeMillis());
+        calender.setPlannedEndtimeSinglemeasure(plannedEndtimeSinglemeasure);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(calender);
+
+        Calender calender2 = om.readValue(jsonString, Calender.class);
+
+        assertEquals(calender.getPlannedEndtimeSinglemeasure(), calender2.getPlannedEndtimeSinglemeasure());
+    }
+
+
+}
+
diff --git a/src/test/java/org/eclipse/openk/core/controller/GridMeasureBackendControllerTest.java b/src/test/java/org/eclipse/openk/core/controller/GridMeasureBackendControllerTest.java
index eb0337b..1f2217d 100644
--- a/src/test/java/org/eclipse/openk/core/controller/GridMeasureBackendControllerTest.java
+++ b/src/test/java/org/eclipse/openk/core/controller/GridMeasureBackendControllerTest.java
@@ -380,7 +380,7 @@
         TblSingleGridmeasureDao dao = EasyMock.createMock(TblSingleGridmeasureDao.class);
         expect( dao.findByIdInTx(anyObject(), anyInt())).andReturn(mList.get(0)).anyTimes();
         expect( dao.findById(anyObject(), anyInt())).andReturn(mList.get(0)).anyTimes();
-        expect( dao.getSingleGridmeasuresByGmIdInTx(1)).andReturn(mList).anyTimes();
+        expect( dao.getSingleGridmeasuresByGmIdInTx(anyInt())).andReturn(mList).anyTimes();
         expect( dao.getSingleGridmeasuresInTx()).andReturn(mList).anyTimes();
         replay( dao );
         verify( dao );
@@ -1246,4 +1246,22 @@
         be.tblSingleGridmeasureDao = daoMock;
         assertEquals( be.getResponsiblesOnSiteFromSingleGridmeasures().size(), 3 );
     }
+
+
+    @Test
+    public void testGetCalender() {
+
+        TestableGridMeasureBackendController be = new TestableGridMeasureBackendController();
+
+        TblGridMeasureDao mockedGmDao = createTblGridMeasureDao();
+        be.tblGridMeasureDao = mockedGmDao;
+
+        TblSingleGridmeasureDao mockedSgmDao = createTblSingleGridmeasureDao();
+        be.tblSingleGridmeasureDao = mockedSgmDao;
+
+        assertEquals( be.getCalender().size(),5);
+
+    }
+
+
 }
diff --git a/src/test/java/org/eclipse/openk/resources/PlannedGridMeasuresResourcesTest.java b/src/test/java/org/eclipse/openk/resources/PlannedGridMeasuresResourcesTest.java
index d7b1877..4579c6c 100644
--- a/src/test/java/org/eclipse/openk/resources/PlannedGridMeasuresResourcesTest.java
+++ b/src/test/java/org/eclipse/openk/resources/PlannedGridMeasuresResourcesTest.java
@@ -183,4 +183,12 @@
         assertNotNull( r );
     }
 
+    @Test
+    public void testGetCalender()  {
+        Response r = new PlannedGridMeasuresResource().getCalender("LET_ME_IN");
+        assertNotNull( r );
+    }
+
+
+
 }