dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #19735
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 8738: Web api, impl generic query on name for all resources. E.g. api/dataElements/query/active returns...
------------------------------------------------------------
revno: 8738
committer: Lars Helge Øverland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Fri 2012-10-26 16:18:18 +0200
message:
Web api, impl generic query on name for all resources. E.g. api/dataElements/query/active returns all data elements which names contain active.
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/IdentifiableObjectManager.java
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/DefaultIdentifiableObjectManager.java
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AbstractCrudController.java
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== 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-06-06 13:31:45 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/IdentifiableObjectManager.java 2012-10-26 14:18:18 +0000
@@ -55,6 +55,8 @@
<T extends IdentifiableObject> Collection<T> getAllSorted( Class<T> clazz );
+ <T extends IdentifiableObject> Collection<T> getLikeName( Class<T> clazz, String name );
+
<T extends IdentifiableObject> Collection<T> getBetween( Class<T> clazz, int first, int max );
<T extends IdentifiableObject> Collection<T> getBetweenByName( Class<T> clazz, String name, int first, int max );
=== 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-10-26 12:49:31 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/DefaultIdentifiableObjectManager.java 2012-10-26 14:18:18 +0000
@@ -197,6 +197,20 @@
@Override
@SuppressWarnings( "unchecked" )
+ public <T extends IdentifiableObject> Collection<T> getLikeName( Class<T> clazz, String name )
+ {
+ GenericIdentifiableObjectStore<IdentifiableObject> store = getIdentifiableObjectStore( clazz );
+
+ if ( store == null )
+ {
+ return new ArrayList<T>();
+ }
+
+ return (Collection<T>) store.getLikeName( name );
+ }
+
+ @Override
+ @SuppressWarnings( "unchecked" )
public <T extends IdentifiableObject> Collection<T> getBetween( Class<T> clazz, int first, int max )
{
GenericIdentifiableObjectStore<IdentifiableObject> store = getIdentifiableObjectStore( clazz );
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AbstractCrudController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AbstractCrudController.java 2012-10-24 10:22:27 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AbstractCrudController.java 2012-10-26 14:18:18 +0000
@@ -88,6 +88,26 @@
return StringUtils.uncapitalize( getEntitySimpleName() ) + "List";
}
+ @RequestMapping( value = "/query/{query}", method = RequestMethod.GET )
+ public String query( @PathVariable String query, @RequestParam Map<String, String> parameters, Model model, HttpServletRequest request ) throws Exception
+ {
+ WebOptions options = new WebOptions( parameters );
+ WebMetaData metaData = new WebMetaData();
+ List<T> entityList = queryForEntityList( metaData, options, query );
+
+ ReflectionUtils.invokeSetterMethod( ExchangeClasses.getExportMap().get( getEntityClass() ), metaData, entityList );
+
+ if ( options.hasLinks() )
+ {
+ WebUtils.generateLinks( metaData );
+ }
+
+ model.addAttribute( "model", metaData );
+ model.addAttribute( "viewClass", options.getViewClass( "basic" ) );
+
+ return StringUtils.uncapitalize( getEntitySimpleName() ) + "List";
+ }
+
@RequestMapping( value = "/{uid}", method = RequestMethod.GET )
public String getObject( @PathVariable( "uid" ) String uid, @RequestParam Map<String, String> parameters,
Model model, HttpServletRequest request, HttpServletResponse response ) throws Exception
@@ -239,6 +259,27 @@
return entityList;
}
+ protected List<T> queryForEntityList( WebMetaData metaData, WebOptions options, String query )
+ {
+ List<T> entityList;
+
+ if ( options.hasPaging() )
+ {
+ int count = manager.getCount( getEntityClass() );
+
+ Pager pager = new Pager( options.getPage(), count );
+ metaData.setPager( pager );
+
+ entityList = new ArrayList<T>( manager.getBetweenByName( getEntityClass(), query, pager.getOffset(), pager.getPageSize() ) );
+ }
+ else
+ {
+ entityList = new ArrayList<T>( manager.getLikeName( getEntityClass(), query ) );
+ }
+
+ return entityList;
+ }
+
protected T getEntity( String uid )
{
return manager.get( getEntityClass(), uid );