/** * Fetches a conceptReferenceTerm by uuid * * @see DelegatingCrudResource#getByUniqueId(java.lang.String) */ @Override public ConceptReferenceTermMap getByUniqueId(String uuid) { return Context.getService(RestHelperService.class).getObjectByUuid(ConceptReferenceTermMap.class, uuid); }
/** * @see org.openmrs.module.webservices.rest.web.api.RestService#getResourceHandlers() * @should return list of delegating resource handlers including subclass handlers * @should return list with delegating resource with lower order value if two resources with the * same name are found for given name * @should fail if failed to get resource classes * @should fail if two resources with same name and order are found for a class */ @Override public List<DelegatingResourceHandler<?>> getResourceHandlers() throws APIException { initializeResources(); List<DelegatingResourceHandler<?>> resourceHandlers = new ArrayList<DelegatingResourceHandler<?>>(); for (Resource resource : resourcesBySupportedClasses.values()) { if (resource instanceof DelegatingResourceHandler) { resourceHandlers.add((DelegatingResourceHandler<?>) resource); } } List<DelegatingSubclassHandler> subclassHandlers = restHelperService.getRegisteredRegisteredSubclassHandlers(); for (DelegatingSubclassHandler subclassHandler : subclassHandlers) { resourceHandlers.add(subclassHandler); } return resourceHandlers; }
private void initializeSearchHandlers() { if (searchHandlersByIds != null) { return; } Map<CompositeSearchHandlerKeyValue, SearchHandler> tempSearchHandlersByIds = new HashMap<CompositeSearchHandlerKeyValue, SearchHandler>(); Map<CompositeSearchHandlerKeyValue, Set<SearchHandler>> tempSearchHandlersByParameters = new HashMap<CompositeSearchHandlerKeyValue, Set<SearchHandler>>(); Map<String, Set<SearchHandler>> tempSearchHandlersByResource = new HashMap<String, Set<SearchHandler>>(); List<SearchHandler> allSearchHandlers = restHelperService.getRegisteredSearchHandlers(); for (SearchHandler searchHandler : allSearchHandlers) { addSearchHandler(tempSearchHandlersByIds, tempSearchHandlersByParameters, tempSearchHandlersByResource, searchHandler); } this.allSearchHandlers = allSearchHandlers; searchHandlersByParameter = tempSearchHandlersByParameters; searchHandlersByIds = tempSearchHandlersByIds; searchHandlersByResource = tempSearchHandlersByResource; }
/** * @see org.openmrs.module.webservices.rest.web.resource.api.SearchHandler#search(org.openmrs.module.webservices.rest.web.RequestContext) */ @Override public PageableResult search(RequestContext context) throws ResponseException { String uuid = context.getParameter("term"); ConceptReferenceTerm conceptReferenceTerm = conceptService.getConceptReferenceTermByUuid(uuid); if (conceptReferenceTerm == null) { return new EmptySearchResult(); } else { List<ConceptMap> conceptMaps = new ArrayList<ConceptMap>(); conceptMaps.addAll(restHelperService.getObjectsByFields(ConceptMap.class, new Field("conceptReferenceTerm", conceptReferenceTerm))); List<Concept> concepts = new ArrayList<Concept>(); for (ConceptMap conceptMap : conceptMaps) { if (!conceptMap.getConcept().isRetired() || context.getIncludeAll()) { concepts.add(conceptMap.getConcept()); } } return new NeedsPaging<Concept>(concepts, context); } }
/** * @see org.openmrs.module.webservices.rest.web.resource.impl.DelegatingSubResource#doGetAll(java.lang.Object, * org.openmrs.module.webservices.rest.web.RequestContext) */ @Override public NeedsPaging<CohortMember1_8> doGetAll(Cohort parent, RequestContext context) throws ResponseException { List<CohortMember1_8> members = new ArrayList<CohortMember1_8>(); for (Patient cohortMember : Context.getService(RestHelperService.class).getPatients(parent.getMemberIds())) { members.add(new CohortMember1_8(cohortMember, parent)); } return new NeedsPaging<CohortMember1_8>(members, context); }
@Override public PageableResult search(RequestContext context) throws ResponseException { String identifier = context.getRequest().getParameter("identifier"); String searchType = context.getParameter("searchType"); if (StringUtils.isNotBlank(identifier)) { if ("start".equals(searchType)) { List<Patient> patients = restHelperService.findPatientsByIdentifierStartingWith(identifier, context.getIncludeAll()); if (patients != null && patients.size() > 0) { return new NeedsPaging<Patient>(patients, context); } } else { List<Patient> patients = Context.getPatientService().getPatients(null, identifier, null, true); if (patients != null && patients.size() > 0) { return new NeedsPaging<Patient>(patients, context); } } } return new EmptySearchResult(); }
termMaps.addAll(restHelperService.getObjectsByFields(ConceptReferenceTermMap.class, new Field("termA", term), conceptMapTypeField)); } else if (termB != null) { termMaps.addAll(restHelperService.getObjectsByFields(ConceptReferenceTermMap.class, new Field("termB", term), conceptMapTypeField)); } else if (to != null) { termMaps.addAll(restHelperService.getObjectsByFields(ConceptReferenceTermMap.class, new Field("termA", term), toConceptReferenceTermField)); } else { termMaps.addAll(restHelperService.getObjectsByFields(ConceptReferenceTermMap.class, new Field("termA", term), conceptMapTypeField)); termMaps.addAll(restHelperService.getObjectsByFields(ConceptReferenceTermMap.class, new Field("termB", term), conceptMapTypeField));
/** * @see org.openmrs.module.webservices.rest.web.resource.impl.BaseDelegatingResource#getByUniqueId(java.lang.String) */ @Override public ConceptMap getByUniqueId(String uniqueId) { return Context.getService(RestHelperService.class).getObjectByUuid(ConceptMap.class, uniqueId); }
/** * @verifies return search handler matching id set in given parameters * @see RestServiceImpl#getSearchHandler(String, Map) */ @Test public void getSearchHandler_shouldReturnSearchHandlerMatchingIdSetInGivenParameters() throws Exception { SearchHandler searchHandler = mock(SearchHandler.class); SearchConfig searchConfig = new SearchConfig("conceptByMapping", "v1/concept", "1.8.*", new SearchQuery.Builder( "Fuzzy search").withRequiredParameters("q").build()); when(searchHandler.getSearchConfig()).thenReturn(searchConfig); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler)); setCurrentOpenmrsVersion("1.8.10"); Map<String, String[]> parameters = new HashMap<String, String[]>(); parameters.put("s", new String[] { "conceptByMapping" }); assertThat(restService.getSearchHandler("v1/concept", parameters), is(searchHandler)); }
/** * @verifies return list of delegating resource handlers including subclass handlers * @see RestServiceImpl#getResourceHandlers() */ @Test public void getResourceHandlers_shouldReturnListOfDelegatingResourceHandlersIncludingSubclassHandlers() throws Exception { List<Class<? extends Resource>> resources = new ArrayList<Class<? extends Resource>>(); resources.add(AnimalResource_1_9.class); resources.add(AnimalResource_1_11.class); resources.add(CountryResource_1_9.class); CatSubclassHandler_1_9 catSubclassHandler_1_9 = mock(CatSubclassHandler_1_9.class); CatSubclassHandler_1_11 catSubclassHandler_1_11 = mock(CatSubclassHandler_1_11.class); when(restHelperService.getRegisteredRegisteredSubclassHandlers()).thenReturn( Arrays.<DelegatingSubclassHandler> asList(catSubclassHandler_1_9, catSubclassHandler_1_11)); when(openmrsClassScanner.getClasses(Resource.class, true)).thenReturn(resources); setCurrentOpenmrsVersion("1.9.10"); assertThat(restService.getResourceHandlers().size(), is(3)); List<DelegatingResourceHandler<?>> handlers = restService.getResourceHandlers(); assertThat(handlers, hasItem(catSubclassHandler_1_9)); assertThat(handlers, hasItem(catSubclassHandler_1_11)); for (DelegatingResourceHandler handler : handlers) { assertThat(handler, is(not(instanceOf(CountryResource_1_9.class)))); assertThat(handler, is(not(instanceOf(AnimalResource_1_11.class)))); } }
@Override public EncounterProvider getByUniqueId(String uniqueId) { return Context.getService(RestHelperService.class).getObjectByUuid(EncounterProvider.class, uniqueId); }
/** * @verifies return null if no search handler is found for given resource name * @see RestServiceImpl#getSearchHandler(String, Map) */ @Test public void getSearchHandler_shouldReturnNullIfNoSearchHandlerIsFoundForGivenResourceName() throws Exception { SearchHandler searchHandler1 = mock(SearchHandler.class); SearchConfig searchConfig1 = new SearchConfig("default", "v1/concept", "1.8.*", new SearchQuery.Builder( "description").withRequiredParameters("source").withOptionalParameters("code").build()); when(searchHandler1.getSearchConfig()).thenReturn(searchConfig1); setCurrentOpenmrsVersion("1.8.10"); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1)); RestUtil.disableContext(); //to avoid a Context call Map<String, String[]> parameters = new HashMap<String, String[]>(); parameters.put("source", new String[] { "some source" }); assertThat(restService.getSearchHandler("v1/order", parameters), is(nullValue())); }
/** * @see org.openmrs.module.webservices.rest.web.resource.impl.BaseDelegatingResourceTest#newObject() */ @Override public ConceptMap newObject() { return Context.getService(RestHelperService.class).getObjectByUuid(ConceptMap.class, getUuidProperty()); }
/** * @verifies return null if no search handler is found for current openmrs version * @see RestServiceImpl#getSearchHandler(String, Map) */ @Test public void getSearchHandler_shouldReturnNullIfNoSearchHandlerIsFoundForCurrentOpenmrsVersion() throws Exception { SearchHandler searchHandler1 = mock(SearchHandler.class); SearchConfig searchConfig1 = new SearchConfig("default", "v1/concept", "1.8.*", new SearchQuery.Builder( "description").withRequiredParameters("source").withOptionalParameters("code").build()); when(searchHandler1.getSearchConfig()).thenReturn(searchConfig1); setCurrentOpenmrsVersion("1.12.0"); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1)); RestUtil.disableContext(); //to avoid a Context call Map<String, String[]> parameters = new HashMap<String, String[]>(); parameters.put("source", new String[] { "some source" }); assertThat(restService.getSearchHandler("v1/concept", parameters), is(nullValue())); }
@Override public ConceptReferenceTermMap newObject() { return Context.getService(RestHelperService.class).getObjectByUuid(ConceptReferenceTermMap.class, getUuidProperty()); }
/** * @verifies return null if parameters do not contain a search handler id and no other non * special request parameters * @see RestServiceImpl#getSearchHandler(String, Map) */ @Test public void getSearchHandler_shouldReturnNullIfParametersDoNotContainASearchHandlerIdAndNoOtherNonSpecialRequestParameters() throws Exception { SearchHandler searchHandler1 = mock(SearchHandler.class); SearchConfig searchConfig = new SearchConfig("default", "v1/concept", "1.8.*", new SearchQuery.Builder("description").withOptionalParameters("code").build()); when(searchHandler1.getSearchConfig()).thenReturn(searchConfig); setCurrentOpenmrsVersion("1.8.10"); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1)); RestUtil.disableContext(); //to avoid a Context call Map<String, String[]> parameters = new HashMap<String, String[]>(); assertThat(restService.getSearchHandler("v1/concept", parameters), is(nullValue())); }
@Test public void shouldCreateConceptReferenceTermMap() throws Exception { String termA = RestTestConstants1_9.CONCEPT_REFERENCE_TERM_UUID; String termB = RestTestConstants1_9.CONCEPT_REFERENCE_TERM2_UUID; String json = "{\"termA\": \"" + termA + "\", " + "\"termB\": \"" + termB + "\", " + "\"conceptMapType\": \"" + RestTestConstants1_9.CONCEPT_MAP_TYPE_UUID + "\"}"; SimpleObject result = deserialize(handle(newPostRequest(getURI(), json))); String uuid = (String) result.get("uuid"); ConceptReferenceTermMap termMap = service.getObjectByUuid(ConceptReferenceTermMap.class, uuid); assertThat(termMap.getTermA().getUuid(), is(termA)); assertThat(termMap.getTermB().getUuid(), is(termB)); assertThat(termMap.getConceptMapType().getUuid(), is(RestTestConstants1_9.CONCEPT_MAP_TYPE_UUID)); }
/** * @verifies return null if no search handler is found for current openmrs version * @see RestServiceImpl#getSearchHandlers(String) */ @Test public void getSearchHandlers_shouldReturnNullIfNoSearchHandlerIsFoundForCurrentOpenmrsVersion() throws Exception { SearchHandler searchHandler1 = mock(SearchHandler.class); SearchConfig searchConfig1 = new SearchConfig("default", "v1/concept", "1.8.*", new SearchQuery.Builder( "description").withRequiredParameters("source").withOptionalParameters("code").build()); when(searchHandler1.getSearchConfig()).thenReturn(searchConfig1); setCurrentOpenmrsVersion("1.12.0"); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1)); RestUtil.disableContext(); //to avoid a Context call assertThat(restService.getSearchHandlers("v1/concept"), is(nullValue())); }
@Test public void shouldEditingConceptReferenceTerm() throws Exception { String json = "{\"termB\": \"" + RestTestConstants1_9.CONCEPT_REFERENCE_TERM2_UUID + "\"}"; handle(newPostRequest(getURI() + "/" + getUuid(), json)); ConceptReferenceTermMap termMap = service.getObjectByUuid(ConceptReferenceTermMap.class, getUuid()); assertThat(termMap.getTermB().getUuid(), is(RestTestConstants1_9.CONCEPT_REFERENCE_TERM2_UUID)); }
/** * @verifies initialize resources and search handlers * @see RestServiceImpl#initialize() */ @Test public void initialize_shouldInitializeResourcesAndSearchHandlers() throws Exception { List<Class<? extends Resource>> resources = new ArrayList<Class<? extends Resource>>(); resources.add(AnimalResource_1_9.class); when(openmrsClassScanner.getClasses(Resource.class, true)).thenReturn(resources); SearchHandler searchHandler1 = mock(SearchHandler.class); SearchConfig searchConfig1 = new SearchConfig("default", "v1/concept", "1.9.*", new SearchQuery.Builder( "Search for concepts").withRequiredParameters("source").withOptionalParameters("code").build()); when(searchHandler1.getSearchConfig()).thenReturn(searchConfig1); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1)); setCurrentOpenmrsVersion("1.9.10"); RestUtil.disableContext(); //to avoid a Context call restService.initialize(); assertThat(restService.getSearchHandlers("v1/concept").size(), is(1)); assertThat(restService.getSearchHandlers("v1/concept").iterator().next(), is(searchHandler1)); assertThat(restService.getResourceByName("v1/animal"), instanceOf(AnimalResource_1_9.class)); }