=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/DefaultMetadataExportService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/DefaultMetadataExportService.java 2016-01-27 07:34:02 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/DefaultMetadataExportService.java 2016-01-27 09:06:30 +0000 @@ -31,6 +31,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hisp.dhis.common.IdentifiableObject; +import org.hisp.dhis.fieldfilter.FieldFilterService; +import org.hisp.dhis.node.NodeUtils; +import org.hisp.dhis.node.types.RootNode; +import org.hisp.dhis.node.types.SimpleNode; import org.hisp.dhis.query.Query; import org.hisp.dhis.query.QueryService; import org.hisp.dhis.schema.Schema; @@ -60,6 +64,9 @@ private QueryService queryService; @Autowired + private FieldFilterService fieldFilterService; + + @Autowired private CurrentUserService currentUserService; @Override @@ -82,7 +89,7 @@ { Query query; - if ( params.hasQuery( klass ) ) + if ( params.getQuery( klass ) != null ) { query = params.getQuery( klass ); } @@ -108,6 +115,22 @@ } @Override + public RootNode getMetadataAsNode( MetadataExportParams params ) + { + RootNode rootNode = NodeUtils.createMetadata(); + rootNode.addChild( new SimpleNode( "date", new Date(), true ) ); + + Map, List> metadata = getMetadata( params ); + + for ( Class klass : metadata.keySet() ) + { + rootNode.addChild( fieldFilterService.filter( klass, metadata.get( klass ), params.getFields( klass ) ) ); + } + + return rootNode; + } + + @Override public void validate( MetadataExportParams params ) throws MetadataExportException { === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/MetadataExportParams.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/MetadataExportParams.java 2016-01-27 03:17:41 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/MetadataExportParams.java 2016-01-27 09:06:30 +0000 @@ -28,11 +28,13 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import com.google.common.collect.Lists; import org.hisp.dhis.common.IdentifiableObject; import org.hisp.dhis.query.Query; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -45,6 +47,10 @@ private Map, Query> queries = new HashMap<>(); + private Map, List> fields = new HashMap<>(); + + private static final List defaultFields = Lists.newArrayList( ":owner" ); + public MetadataExportParams() { } @@ -80,13 +86,25 @@ return this; } - public boolean hasQuery( Class klass ) - { - return queries.containsKey( klass ); - } - public Query getQuery( Class klass ) { - return queries.containsKey( klass ) ? queries.get( klass ) : null; + return queries.get( klass ); + } + + public MetadataExportParams addFields( Class klass, List classFields ) + { + if ( !fields.containsKey( klass ) ) + { + fields.put( klass, classFields ); + } + + fields.get( klass ).addAll( classFields ); + return this; + } + + public List getFields( Class klass ) + { + List strings = fields.get( klass ); + return strings != null ? strings : defaultFields; } } === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/MetadataExportService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/MetadataExportService.java 2016-01-27 07:18:12 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/MetadataExportService.java 2016-01-27 09:06:30 +0000 @@ -29,6 +29,7 @@ */ import org.hisp.dhis.common.IdentifiableObject; +import org.hisp.dhis.node.types.RootNode; import java.util.List; import java.util.Map; @@ -40,6 +41,8 @@ { Map, List> getMetadata( MetadataExportParams params ); + RootNode getMetadataAsNode( MetadataExportParams params ); + void validate( MetadataExportParams params ) throws MetadataExportException; MetadataExportParams getParamsFromMap( Map parameters ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/metadata/MetadataExportController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/metadata/MetadataExportController.java 2016-01-27 07:18:12 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/metadata/MetadataExportController.java 2016-01-27 09:06:30 +0000 @@ -28,17 +28,9 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import com.google.common.collect.Lists; -import org.hisp.dhis.common.IdentifiableObject; import org.hisp.dhis.dxf2.metadata2.MetadataExportParams; import org.hisp.dhis.dxf2.metadata2.MetadataExportService; -import org.hisp.dhis.fieldfilter.DefaultFieldFilterService; -import org.hisp.dhis.node.NodeUtils; -import org.hisp.dhis.node.types.CollectionNode; import org.hisp.dhis.node.types.RootNode; -import org.hisp.dhis.node.types.SimpleNode; -import org.hisp.dhis.schema.Schema; -import org.hisp.dhis.schema.SchemaService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @@ -46,8 +38,6 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; -import java.util.Date; -import java.util.List; import java.util.Map; /** @@ -60,29 +50,10 @@ @Autowired private MetadataExportService metadataExportService; - @Autowired - private SchemaService schemaService; - - @Autowired - private DefaultFieldFilterService fieldFilterService; - @RequestMapping( value = "", method = RequestMethod.GET ) public @ResponseBody RootNode getMetadata( @RequestParam Map rpParameters ) { - RootNode rootNode = NodeUtils.createMetadata(); - rootNode.addChild( new SimpleNode( "date", new Date(), true ) ); - MetadataExportParams params = metadataExportService.getParamsFromMap( rpParameters ); - - Map, List> metadata = metadataExportService.getMetadata( params ); - - for ( Class klass : metadata.keySet() ) - { - Schema schema = schemaService.getDynamicSchema( klass ); - CollectionNode collectionNode = fieldFilterService.filter( klass, metadata.get( klass ), Lists.newArrayList( ":owner" ) ); - rootNode.addChild( collectionNode ); - } - - return rootNode; + return metadataExportService.getMetadataAsNode( params ); } }