=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/NameableObjectUtils.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/NameableObjectUtils.java 2014-07-13 13:53:40 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/NameableObjectUtils.java 2014-07-21 14:26:12 +0000 @@ -31,7 +31,9 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @author Lars Helge Overland @@ -133,4 +135,25 @@ return objects; } + + /** + * Returns a mapping between the uid and the nameable objects. + * + * @param objects the nameable objects. + * @return mapping between the uid and the nameable objects. + */ + public static Map getUidObjectMap( Collection objects ) + { + Map map = new HashMap(); + + if ( objects != null ) + { + for ( NameableObject object : objects ) + { + map.put( object.getUid(), object ); + } + } + + return map; + } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/DataSetController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/DataSetController.java 2014-07-21 14:01:10 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/DataSetController.java 2014-07-21 14:26:12 +0000 @@ -28,6 +28,22 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletResponse; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; + +import org.hisp.dhis.common.NameableObjectUtils; import org.hisp.dhis.common.view.ExportView; import org.hisp.dhis.dataentryform.DataEntryForm; import org.hisp.dhis.dataentryform.DataEntryFormService; @@ -62,20 +78,6 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletResponse; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.stream.StreamResult; -import javax.xml.transform.stream.StreamSource; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - /** * @author Morten Olav Hansen */ @@ -171,7 +173,7 @@ @PathVariable( "uid" ) String uid, @RequestParam( value = "ou", required = false ) String orgUnit, @RequestParam( value = "pe", required = false ) String period, - HttpServletResponse response ) throws IOException + @RequestParam( required = false ) boolean metaData, HttpServletResponse response ) throws IOException { List dataSets = getEntity( uid ); @@ -191,7 +193,7 @@ Period pe = PeriodType.getPeriodFromIsoString( period ); - Form form = getForm( dataSets, ou, pe ); + Form form = getForm( dataSets, ou, pe, metaData ); JacksonUtils.toJson( response.getOutputStream(), form ); } @@ -201,7 +203,7 @@ @PathVariable( "uid" ) String uid, @RequestParam( value = "ou", required = false ) String orgUnit, @RequestParam( value = "pe", required = false ) String period, - HttpServletResponse response ) throws IOException + @RequestParam( required = false ) boolean metaData, HttpServletResponse response ) throws IOException { List dataSets = getEntity( uid ); @@ -221,16 +223,18 @@ Period pe = PeriodType.getPeriodFromIsoString( period ); - Form form = getForm( dataSets, ou, pe ); + Form form = getForm( dataSets, ou, pe, metaData ); JacksonUtils.toXml( response.getOutputStream(), form ); } - private Form getForm( List dataSets, OrganisationUnit ou, Period pe ) + private Form getForm( List dataSets, OrganisationUnit ou, Period pe, boolean metaData ) { - i18nService.internationalise( dataSets.get( 0 ) ); - i18nService.internationalise( dataSets.get( 0 ).getDataElements() ); - i18nService.internationalise( dataSets.get( 0 ).getSections() ); + DataSet dataSet = dataSets.get( 0 ); + + i18nService.internationalise( dataSet ); + i18nService.internationalise( dataSet.getDataElements() ); + i18nService.internationalise( dataSet.getSections() ); Form form = FormUtils.fromDataSet( dataSets.get( 0 ) ); @@ -243,6 +247,11 @@ FormUtils.fillWithDataValues( form, dataValues ); } + if ( metaData ) + { + form.getMetaData().putAll( NameableObjectUtils.getUidObjectMap( dataSet.getDataElements() ) ); + } + return form; } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/webdomain/form/Form.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/webdomain/form/Form.java 2014-07-09 01:44:58 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/webdomain/form/Form.java 2014-07-21 14:26:12 +0000 @@ -29,10 +29,14 @@ */ import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; + +import org.hisp.dhis.common.BaseNameableObject; import org.hisp.dhis.common.DxfNamespaces; +import org.hisp.dhis.common.NameableObject; import java.util.ArrayList; import java.util.HashMap; @@ -52,6 +56,8 @@ private List groups = new ArrayList(); private Map options = new HashMap(); + + private Map metaData = new HashMap(); public Form() { @@ -106,6 +112,20 @@ this.options = options; } + @JsonProperty + @JsonSerialize( contentAs = BaseNameableObject.class ) + @JacksonXmlElementWrapper( localName = "metaData", namespace = DxfNamespaces.DXF_2_0 ) + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) + public Map getMetaData() + { + return metaData; + } + + public void setMetaData( Map metaData ) + { + this.metaData = metaData; + } + @Override public String toString() {