=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/IdentifiableObjectManager.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/IdentifiableObjectManager.java 2012-04-13 14:11:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/IdentifiableObjectManager.java 2012-05-13 16:59:37 +0000 @@ -47,6 +47,8 @@ T getByCode( Class clazz, String code ); T getByName( Class clazz, String name ); + + T search( Class clazz, String query ); Collection getAll( Class clazz ); === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/DefaultIdentifiableObjectManager.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/DefaultIdentifiableObjectManager.java 2012-04-23 11:13:41 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/DefaultIdentifiableObjectManager.java 2012-05-13 16:59:37 +0000 @@ -168,6 +168,24 @@ } @Override + public T search( Class clazz, String query ) + { + T object = get( clazz, query ); + + if ( object == null ) + { + object = getByCode( clazz, query ); + } + + if ( object == null ) + { + object = getByName( clazz, query ); + } + + return object; + } + + @Override @SuppressWarnings( "unchecked" ) public Collection getAll( Class clazz ) { === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/organisationunit/OrganisationUnitController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/organisationunit/OrganisationUnitController.java 2012-03-27 18:07:36 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/organisationunit/OrganisationUnitController.java 2012-05-13 16:59:37 +0000 @@ -4,6 +4,7 @@ import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.ObjectPersister; import org.hisp.dhis.api.utils.WebLinkPopulator; +import org.hisp.dhis.common.IdentifiableObjectManager; import org.hisp.dhis.common.Pager; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.organisationunit.OrganisationUnitService; @@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseStatus; import javax.servlet.http.HttpServletRequest; @@ -39,6 +41,9 @@ @Autowired private ObjectPersister objectPersister; + + @Autowired + private IdentifiableObjectManager identifiableObjectManager; //------------------------------------------------------------------------------------------------------- // GET @@ -93,6 +98,22 @@ return "organisationUnit"; } + + @RequestMapping( value = "/search/{query}", method = RequestMethod.GET ) + public String searchOrganisationUnit( @PathVariable String query, IdentifiableObjectParams params, Model model, HttpServletRequest request ) + { + OrganisationUnit organisationUnit = identifiableObjectManager.search( OrganisationUnit.class, query ); + + if ( params.hasLinks() ) + { + new WebLinkPopulator( request ).addLinks( organisationUnit ); + } + + model.addAttribute( "model", organisationUnit ); + model.addAttribute( "view", "detailed" ); + + return "organisationUnit"; + } //------------------------------------------------------------------------------------------------------- // POST