Skip to content

Commit

Permalink
Thiru | #1015 | Created an end point to fetch all form submissions.
Browse files Browse the repository at this point in the history
  • Loading branch information
thirunar committed Jun 16, 2014
1 parent f0f1c4b commit 97db65d
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,20 @@ public List<FormSubmission> findByServerVersion(long serverVersion) {
return db.queryView(createQuery("formSubmission_by_server_version").startKey(startKey).endKey(endKey).includeDocs(true), FormSubmission.class);
}

public List<FormSubmission> allFormSubmissions(long serverVersion, Integer batchSize) {
ComplexKey startKey = ComplexKey.of(serverVersion + 1);
ComplexKey endKey = ComplexKey.of(Long.MAX_VALUE);
ViewQuery query = createQuery("formSubmission_by_server_version")
.startKey(startKey)
.endKey(endKey)
.includeDocs(true);

if (batchSize != null) {
query.limit(batchSize);
}
return db.queryView(query, FormSubmission.class);
}

@View(
name = "formSubmission_by_anm_and_server_version",
map = "function(doc) { if (doc.type === 'FormSubmission') { emit([doc.anmId, doc.serverVersion], null); } }")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ public List<FormSubmission> getNewSubmissionsForANM(String anmIdentifier, Long v
return allFormSubmissions.findByANMIDAndServerVersion(anmIdentifier, version, batchSize);
}

public List<FormSubmission> getAllSubmissions(Long version, Integer batchSize) {
return allFormSubmissions.allFormSubmissions(version, batchSize);
}

public void submit(List<FormSubmissionDTO> formSubmissionsDTO) {
List<FormSubmission> formSubmissions = with(formSubmissionsDTO).convert(new Converter<FormSubmissionDTO, FormSubmission>() {
@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,26 @@ public void shouldFetchAllFormSubmissionsAfterServerVersion() throws Exception {
assertEquals(0, formSubmissions.findByServerVersion(thirdFormSubmission.serverVersion()).size());
}

@Test
public void shouldFetchAllFormSubmissions() throws Exception {
long baseTimeStamp = DateUtil.now().getMillis();

FormSubmission firstFormSubmission = new FormSubmission("anm id 1", "instance id 1", "form name 1", "entity id 1", 0L, "1", null, baseTimeStamp);
formSubmissions.add(firstFormSubmission);

FormSubmission secondFormSubmission = new FormSubmission("anm id 2", "instance id 2", "form name 1", "entity id 2", 1L, "1", null, baseTimeStamp + 1);
formSubmissions.add(secondFormSubmission);

FormSubmission thirdFormSubmission = new FormSubmission("anm id 3", "instance id 3", "form name 1", "entity id 3", 2L, "1", null, baseTimeStamp + 2);
formSubmissions.add(thirdFormSubmission);

assertEquals(asList(firstFormSubmission, secondFormSubmission, thirdFormSubmission), formSubmissions.allFormSubmissions(0, 3));
assertEquals(asList(firstFormSubmission, secondFormSubmission), formSubmissions.allFormSubmissions(0, 2));
assertEquals(asList(firstFormSubmission, secondFormSubmission, thirdFormSubmission), formSubmissions.allFormSubmissions(0, 3));
assertEquals(asList(secondFormSubmission, thirdFormSubmission), formSubmissions.allFormSubmissions(firstFormSubmission.serverVersion(), 3));

}

@Test
public void shouldFetchFormSubmissionsBasedOnANMIDTimeStampAndBatchSize() throws Exception {
long baseTimeStamp = DateUtil.now().getMillis();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,4 +92,16 @@ public void shouldFetchFormSubmissionsByGiven() throws Exception {

assertEquals(asList(firstFormSubmissionDTO, secondFormSubmissionDTO), formSubmissionDTOs);
}

@Test
public void shouldFetchAllFormSubmissions() throws Exception {
long baseTimeStamp = DateUtil.now().getMillis();
FormSubmission firstFormSubmission = new FormSubmission("anm id 1", "instance id 1", "form name 1", "entity id 1", baseTimeStamp, "1", null, 0L);
FormSubmission secondFormSubmission = new FormSubmission("anm id 2", "instance id 2", "form name 1", "entity id 2", baseTimeStamp + 1, "1", null, 1L);
when(allFormSubmissions.allFormSubmissions(0, 2)).thenReturn(asList(firstFormSubmission, secondFormSubmission));

List<FormSubmission> formSubmissions = formSubmissionService.getAllSubmissions(0L, 2);

assertEquals(asList(firstFormSubmission, secondFormSubmission), formSubmissions);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
import static org.springframework.web.bind.annotation.RequestMethod.POST;

@Controller
@RequestMapping(value = "/form-submissions")
public class FormSubmissionController {
private static Logger logger = LoggerFactory.getLogger(FormSubmissionController.class.toString());
private FormSubmissionService formSubmissionService;
Expand All @@ -39,7 +38,7 @@ public FormSubmissionController(FormSubmissionService formSubmissionService, Out
this.gateway = gateway;
}

@RequestMapping(method = GET)
@RequestMapping(method = GET, value = "/form-submissions")
@ResponseBody
private List<FormSubmissionDTO> getNewSubmissionsForANM(@RequestParam("anm-id") String anmIdentifier,
@RequestParam("timestamp") Long timeStamp,
Expand All @@ -55,7 +54,22 @@ public FormSubmissionDTO convert(FormSubmission submission) {
});
}

@RequestMapping(headers = {"Accept=application/json"}, method = POST)
@RequestMapping(method = GET, value="/all-form-submissions")
@ResponseBody
private List<FormSubmissionDTO> getAllFormSubmissions(@RequestParam("timestamp") Long timeStamp,
@RequestParam(value = "batch-size", required = false)
Integer batchSize) {
List<FormSubmission> allSubmissions = formSubmissionService
.getAllSubmissions(timeStamp, batchSize);
return with(allSubmissions).convert(new Converter<FormSubmission, FormSubmissionDTO>() {
@Override
public FormSubmissionDTO convert(FormSubmission submission) {
return FormSubmissionConverter.from(submission);
}
});
}

@RequestMapping(headers = {"Accept=application/json"}, method = POST, value = "/form-submissions")
public ResponseEntity<HttpStatus> submitForms(@RequestBody List<FormSubmissionDTO> formSubmissionsDTO) {
try {
if (formSubmissionsDTO.isEmpty()) {
Expand Down

0 comments on commit 97db65d

Please sign in to comment.