diff --git a/src/main/java/org/kpmp/stateManager/State.java b/src/main/java/org/kpmp/stateManager/State.java index 91c61eb..b2abd49 100644 --- a/src/main/java/org/kpmp/stateManager/State.java +++ b/src/main/java/org/kpmp/stateManager/State.java @@ -40,9 +40,13 @@ public void setState(String state) { this.state = state; } - public String getLargeUploadChecked() { return largeUploadChecked; } + public String getLargeUploadChecked() { + return largeUploadChecked; + } - public void setLargeUploadChecked(String largeUploadChecked) { this.largeUploadChecked = largeUploadChecked; } + public void setLargeUploadChecked(String largeUploadChecked) { + this.largeUploadChecked = largeUploadChecked; + } public String getPackageId() { return packageId; diff --git a/src/main/java/org/kpmp/stateManager/StateController.java b/src/main/java/org/kpmp/stateManager/StateController.java index cc0adc1..5b5bd39 100644 --- a/src/main/java/org/kpmp/stateManager/StateController.java +++ b/src/main/java/org/kpmp/stateManager/StateController.java @@ -54,6 +54,12 @@ public StateController(StateService stateService) { return stateService.getAllCurrentStates(); } + @RequestMapping(value = "/v1/state/stateDisplayMap", method = RequestMethod.GET) + public @ResponseBody List getStateDisplays(HttpServletRequest request) { + log.info("URI: " + request.getRequestURI() + " | MSG: Retrieving state map"); + return stateService.getAllStateDisplays(); + } + @RequestMapping(value = "/v1/state/events/{afterTime}", method = RequestMethod.GET) public @ResponseBody DeferredResult> getStateEvents(@PathVariable("afterTime") String afterTime, HttpServletRequest request) { diff --git a/src/main/java/org/kpmp/stateManager/StateDisplay.java b/src/main/java/org/kpmp/stateManager/StateDisplay.java new file mode 100644 index 0000000..8a9dccc --- /dev/null +++ b/src/main/java/org/kpmp/stateManager/StateDisplay.java @@ -0,0 +1,37 @@ +package org.kpmp.stateManager; + +import org.bson.Document; +import org.springframework.data.annotation.Id; + +@org.springframework.data.mongodb.core.mapping.Document(collection = "stateDisplay") +public class StateDisplay { + + @Id + private String id; + private String state; + private Document apps; + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Document getApps() { + return apps; + } + + public void setApps(Document apps) { + this.apps = apps; + } +} diff --git a/src/main/java/org/kpmp/stateManager/StateDisplayRepository.java b/src/main/java/org/kpmp/stateManager/StateDisplayRepository.java new file mode 100644 index 0000000..6a1fdd8 --- /dev/null +++ b/src/main/java/org/kpmp/stateManager/StateDisplayRepository.java @@ -0,0 +1,11 @@ +package org.kpmp.stateManager; + +import java.util.List; + +import org.springframework.data.mongodb.repository.MongoRepository; + +public interface StateDisplayRepository extends MongoRepository { + + public List findAll(); + +} diff --git a/src/main/java/org/kpmp/stateManager/StateService.java b/src/main/java/org/kpmp/stateManager/StateService.java index 4d70230..11b1693 100644 --- a/src/main/java/org/kpmp/stateManager/StateService.java +++ b/src/main/java/org/kpmp/stateManager/StateService.java @@ -19,11 +19,14 @@ public class StateService { @Value("${package.state.upload.succeeded}") private String uploadSucceededState; private NotificationHandler notificationHandler; + private StateDisplayRepository stateDisplayRepo; @Autowired - public StateService(CustomStateRepository stateRepository, NotificationHandler notificationHandler) { + public StateService(CustomStateRepository stateRepository, NotificationHandler notificationHandler, + StateDisplayRepository stateDisplayRepo) { this.stateRepository = stateRepository; this.notificationHandler = notificationHandler; + this.stateDisplayRepo = stateDisplayRepo; } @CacheEvict(value = "states", allEntries = true) @@ -70,4 +73,8 @@ public List getAllCurrentStates() { return states; } + public List getAllStateDisplays() { + return stateDisplayRepo.findAll(); + } + } diff --git a/src/test/java/org/kpmp/stateManager/StateControllerTest.java b/src/test/java/org/kpmp/stateManager/StateControllerTest.java index 2692967..f4f7f5e 100644 --- a/src/test/java/org/kpmp/stateManager/StateControllerTest.java +++ b/src/test/java/org/kpmp/stateManager/StateControllerTest.java @@ -67,4 +67,12 @@ public void testGetStates() throws Exception { verify(stateService).getAllCurrentStates(); } + @Test + public void testGetStateDisplays() throws Exception { + List stateDisplays = Arrays.asList(mock(StateDisplay.class)); + when(stateService.getAllStateDisplays()).thenReturn(stateDisplays); + + assertEquals(stateDisplays, controller.getStateDisplays(mock(HttpServletRequest.class))); + } + } diff --git a/src/test/java/org/kpmp/stateManager/StateDisplayTest.java b/src/test/java/org/kpmp/stateManager/StateDisplayTest.java new file mode 100644 index 0000000..9e487cd --- /dev/null +++ b/src/test/java/org/kpmp/stateManager/StateDisplayTest.java @@ -0,0 +1,47 @@ +package org.kpmp.stateManager; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.mock; + +import org.bson.Document; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.mockito.MockitoAnnotations; + +public class StateDisplayTest { + + private StateDisplay stateDisplay; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + stateDisplay = new StateDisplay(); + } + + @After + public void tearDown() throws Exception { + stateDisplay = null; + } + + @Test + public void testSetState() { + stateDisplay.setState("state"); + assertEquals("state", stateDisplay.getState()); + } + + @Test + public void testSetId() { + stateDisplay.setId("displayId"); + assertEquals("displayId", stateDisplay.getId()); + } + + @Test + public void testSetApps() throws Exception { + Document apps = mock(Document.class); + stateDisplay.setApps(apps); + + assertEquals(apps, stateDisplay.getApps()); + } + +} diff --git a/src/test/java/org/kpmp/stateManager/StateServiceTest.java b/src/test/java/org/kpmp/stateManager/StateServiceTest.java index e3eb13f..0925eac 100644 --- a/src/test/java/org/kpmp/stateManager/StateServiceTest.java +++ b/src/test/java/org/kpmp/stateManager/StateServiceTest.java @@ -25,11 +25,13 @@ public class StateServiceTest { private StateService service; @Mock private NotificationHandler notificationHandler; + @Mock + private StateDisplayRepository stateDisplayRepo; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); - service = new StateService(stateRepository, notificationHandler); + service = new StateService(stateRepository, notificationHandler, stateDisplayRepo); ReflectionTestUtils.setField(service, "uploadFailedState", "UPLOAD_FAILED"); ReflectionTestUtils.setField(service, "uploadSucceededState", "UPLOAD_SUCCEEDED"); } @@ -137,4 +139,12 @@ public void testIsPackageFailedFalse() throws Exception { when(stateRepository.findPackageByIdAndByState("1234", "UPLOAD_FAILED")).thenReturn(null); assertEquals(false, service.isPackageFailed("1234")); } + + @Test + public void testGetStateDisplays() throws Exception { + List stateDisplays = Arrays.asList(mock(StateDisplay.class)); + when(stateDisplayRepo.findAll()).thenReturn(stateDisplays); + + assertEquals(stateDisplays, service.getAllStateDisplays()); + } }