=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/IdentifiableProperty.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/IdentifiableProperty.java 2015-02-16 08:37:44 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/IdentifiableProperty.java 2015-12-03 02:06:56 +0000 @@ -33,5 +33,5 @@ */ public enum IdentifiableProperty { - ID, UID, UUID, NAME, CODE + ID, UID, UUID, NAME, CODE, ATTRIBUTE } === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/common/IdSchemes.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/common/IdSchemes.java 2015-02-17 06:00:52 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/common/IdSchemes.java 2015-12-03 02:06:56 +0000 @@ -28,8 +28,10 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import com.google.common.base.MoreObjects; import org.hisp.dhis.common.IdentifiableObject; import org.hisp.dhis.common.IdentifiableProperty; +import org.springframework.util.StringUtils; /** * @author Morten Olav Hansen @@ -38,83 +40,137 @@ { private IdentifiableProperty idScheme; + private String idSchemeAttribute; + private IdentifiableProperty dataElementIdScheme = IdentifiableProperty.UID; + private String dataElementIdSchemeAttribute; + private IdentifiableProperty categoryOptionComboIdScheme = IdentifiableProperty.UID; + private String categoryOptionComboIdSchemeAttribute; + private IdentifiableProperty orgUnitIdScheme = IdentifiableProperty.UID; + private String orgUnitIdSchemeAttribute; + private IdentifiableProperty programIdScheme = IdentifiableProperty.UID; + private String programIdSchemeAttribute; + private IdentifiableProperty programStageIdScheme = IdentifiableProperty.UID; + private String programStageIdSchemeAttribute; + public IdSchemes() { } + public IdentifiableProperty getScheme( IdentifiableProperty identifiableProperty ) + { + return idScheme != null ? idScheme : identifiableProperty; + } + public IdentifiableProperty getIdScheme() { return idScheme; } - public IdentifiableProperty getIdentifiableProperty( IdentifiableProperty identifiableProperty ) + public void setIdScheme( String idScheme ) { - return idScheme != null ? idScheme : identifiableProperty; - } + if ( isAttribute( idScheme ) ) + { + this.idScheme = IdentifiableProperty.ATTRIBUTE; + this.idSchemeAttribute = idScheme.substring( 10 ); + return; + } - public void setIdScheme( IdentifiableProperty idScheme ) - { - this.idScheme = idScheme; + this.idScheme = IdentifiableProperty.valueOf( idScheme.toUpperCase() ); } public IdentifiableProperty getDataElementIdScheme() { - return getIdentifiableProperty( dataElementIdScheme ); + return getScheme( dataElementIdScheme ); } - public void setDataElementIdScheme( IdentifiableProperty dataElementIdScheme ) + public void setDataElementIdScheme( String idScheme ) { - this.dataElementIdScheme = dataElementIdScheme; + if ( isAttribute( idScheme ) ) + { + this.dataElementIdScheme = IdentifiableProperty.ATTRIBUTE; + this.dataElementIdSchemeAttribute = idScheme.substring( 10 ); + return; + } + + this.dataElementIdScheme = IdentifiableProperty.valueOf( idScheme.toUpperCase() ); } public IdentifiableProperty getCategoryOptionComboIdScheme() { - return getIdentifiableProperty( categoryOptionComboIdScheme ); + return getScheme( categoryOptionComboIdScheme ); } - public void setCategoryOptionComboIdScheme( IdentifiableProperty categoryOptionComboIdScheme ) + public void setCategoryOptionComboIdScheme( String idScheme ) { - this.categoryOptionComboIdScheme = categoryOptionComboIdScheme; + if ( isAttribute( idScheme ) ) + { + this.categoryOptionComboIdScheme = IdentifiableProperty.ATTRIBUTE; + this.categoryOptionComboIdSchemeAttribute = idScheme.substring( 10 ); + return; + } + + this.categoryOptionComboIdScheme = IdentifiableProperty.valueOf( idScheme.toUpperCase() ); } public IdentifiableProperty getOrgUnitIdScheme() { - return getIdentifiableProperty( orgUnitIdScheme ); + return getScheme( orgUnitIdScheme ); } - public void setOrgUnitIdScheme( IdentifiableProperty orgUnitIdScheme ) + public void setOrgUnitIdScheme( String idScheme ) { - this.orgUnitIdScheme = orgUnitIdScheme; + if ( isAttribute( idScheme ) ) + { + this.orgUnitIdScheme = IdentifiableProperty.ATTRIBUTE; + this.orgUnitIdSchemeAttribute = idScheme.substring( 10 ); + return; + } + + this.orgUnitIdScheme = IdentifiableProperty.valueOf( idScheme.toUpperCase() ); } public IdentifiableProperty getProgramIdScheme() { - return getIdentifiableProperty( programIdScheme ); + return getScheme( programIdScheme ); } - public void setProgramIdScheme( IdentifiableProperty programIdScheme ) + public void setProgramIdScheme( String idScheme ) { - this.programIdScheme = programIdScheme; + if ( isAttribute( idScheme ) ) + { + this.programIdScheme = IdentifiableProperty.ATTRIBUTE; + this.programIdSchemeAttribute = idScheme.substring( 10 ); + return; + } + + this.programIdScheme = IdentifiableProperty.valueOf( idScheme.toUpperCase() ); } public IdentifiableProperty getProgramStageIdScheme() { - return getIdentifiableProperty( programStageIdScheme ); + return getScheme( programStageIdScheme ); } - public void setProgramStageIdScheme( IdentifiableProperty programStageIdScheme ) + public void setProgramStageIdScheme( String idScheme ) { - this.programStageIdScheme = programStageIdScheme; + if ( isAttribute( idScheme ) ) + { + this.programStageIdScheme = IdentifiableProperty.ATTRIBUTE; + this.programStageIdSchemeAttribute = idScheme.substring( 10 ); + return; + } + + this.programStageIdScheme = IdentifiableProperty.valueOf( idScheme.toUpperCase() ); } public static String getValue( String uid, String code, IdentifiableProperty identifiableProperty ) @@ -123,6 +179,7 @@ return idScheme ? uid : code; } + public static String getValue( IdentifiableObject identifiableObject, IdentifiableProperty identifiableProperty ) { boolean idScheme = IdentifiableProperty.ID.equals( identifiableProperty ) || IdentifiableProperty.UID.equals( identifiableProperty ); @@ -142,4 +199,28 @@ return null; } + + public static boolean isAttribute( String str ) + { + return !StringUtils.isEmpty( str ) && str.toUpperCase().startsWith( "ATTRIBUTE:" ) && str.length() == 21; + } + + @Override + public String toString() + { + return MoreObjects.toStringHelper( this ) + .add( "idScheme", idScheme ) + .add( "idSchemeAttribute", idSchemeAttribute ) + .add( "dataElementIdScheme", dataElementIdScheme ) + .add( "dataElementIdSchemeAttribute", dataElementIdSchemeAttribute ) + .add( "categoryOptionComboIdScheme", categoryOptionComboIdScheme ) + .add( "categoryOptionComboIdSchemeAttribute", categoryOptionComboIdSchemeAttribute ) + .add( "orgUnitIdScheme", orgUnitIdScheme ) + .add( "orgUnitIdSchemeAttribute", orgUnitIdSchemeAttribute ) + .add( "programIdScheme", programIdScheme ) + .add( "programIdSchemeAttribute", programIdSchemeAttribute ) + .add( "programStageIdScheme", programStageIdScheme ) + .add( "programStageIdSchemeAttribute", programStageIdSchemeAttribute ) + .toString(); + } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/SystemController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/SystemController.java 2015-10-20 03:53:50 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/SystemController.java 2015-12-03 02:06:56 +0000 @@ -31,6 +31,7 @@ import org.hisp.dhis.common.CodeGenerator; import org.hisp.dhis.dataintegrity.DataIntegrityReport; import org.hisp.dhis.dataintegrity.FlattenedDataIntegrityReport; +import org.hisp.dhis.dxf2.common.IdSchemes; import org.hisp.dhis.dxf2.metadata.ImportSummary; import org.hisp.dhis.dxf2.render.RenderService; import org.hisp.dhis.node.exception.InvalidTypeException; @@ -201,6 +202,13 @@ return "pong"; } + @RequestMapping( value = "/scheme", method = RequestMethod.GET, produces = "text/plain" ) + public @ResponseBody String scheme( IdSchemes idSchemes ) + { + System.err.println( "id: " + idSchemes ); + return "pong"; + } + @RequestMapping( value = "/flags", method = RequestMethod.GET, produces = { "application/json" } ) public @ResponseBody List getFlags() { === modified file 'dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/datavalue/ExportDataValueAction.java' --- dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/datavalue/ExportDataValueAction.java 2015-10-08 13:50:01 +0000 +++ dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/datavalue/ExportDataValueAction.java 2015-12-03 02:06:56 +0000 @@ -1,6 +1,24 @@ package org.hisp.dhis.importexport.action.datavalue; +import com.opensymphony.xwork2.Action; +import org.apache.struts2.ServletActionContext; +import org.hisp.dhis.common.IdentifiableObjectUtils; +import org.hisp.dhis.common.IdentifiableProperty; +import org.hisp.dhis.dxf2.common.IdSchemes; +import org.hisp.dhis.dxf2.datavalueset.DataExportParams; +import org.hisp.dhis.dxf2.datavalueset.DataValueSetService; +import org.hisp.dhis.oust.manager.SelectionTreeManager; +import org.hisp.dhis.util.ContextUtils; +import org.springframework.beans.factory.annotation.Autowired; + +import javax.servlet.http.HttpServletResponse; +import java.io.OutputStreamWriter; +import java.util.HashSet; +import java.util.Set; + import static org.hisp.dhis.system.util.CodecUtils.filenameEncode; +import static org.hisp.dhis.system.util.DateUtils.getMediumDate; +import static org.hisp.dhis.util.ContextUtils.*; /* * Copyright (c) 2004-2015, University of Oslo @@ -30,30 +48,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import static org.hisp.dhis.system.util.DateUtils.getMediumDate; -import static org.hisp.dhis.util.ContextUtils.CONTENT_TYPE_CSV; -import static org.hisp.dhis.util.ContextUtils.CONTENT_TYPE_JSON; -import static org.hisp.dhis.util.ContextUtils.CONTENT_TYPE_XML; -import static org.hisp.dhis.util.ContextUtils.getZipOut; - -import java.io.OutputStreamWriter; -import java.util.HashSet; -import java.util.Set; - -import javax.servlet.http.HttpServletResponse; - -import org.apache.struts2.ServletActionContext; -import org.hisp.dhis.common.IdentifiableObjectUtils; -import org.hisp.dhis.common.IdentifiableProperty; -import org.hisp.dhis.dxf2.common.IdSchemes; -import org.hisp.dhis.dxf2.datavalueset.DataExportParams; -import org.hisp.dhis.dxf2.datavalueset.DataValueSetService; -import org.hisp.dhis.oust.manager.SelectionTreeManager; -import org.hisp.dhis.util.ContextUtils; -import org.springframework.beans.factory.annotation.Autowired; - -import com.opensymphony.xwork2.Action; - /** * @author Lars Helge Overland */ @@ -141,17 +135,17 @@ //TODO re-implement using Web API IdSchemes idSchemes = new IdSchemes(); - idSchemes.setDataElementIdScheme( dataElementIdScheme ); - idSchemes.setOrgUnitIdScheme( orgUnitIdScheme ); - idSchemes.setCategoryOptionComboIdScheme( categoryOptionComboIdScheme ); + idSchemes.setDataElementIdScheme( dataElementIdScheme.toString() ); + idSchemes.setOrgUnitIdScheme( orgUnitIdScheme.toString() ); + idSchemes.setCategoryOptionComboIdScheme( categoryOptionComboIdScheme.toString() ); Set orgUnits = new HashSet<>( IdentifiableObjectUtils.getUids( selectionTreeManager.getSelectedOrganisationUnits() ) ); HttpServletResponse response = ServletActionContext.getResponse(); - DataExportParams params = dataValueSetService.getFromUrl( selectedDataSets, null, + DataExportParams params = dataValueSetService.getFromUrl( selectedDataSets, null, getMediumDate( startDate ), getMediumDate( endDate ), orgUnits, true, null, null, idSchemes ); - + if ( FORMAT_CSV.equals( exportFormat ) ) { ContextUtils.configureResponse( response, CONTENT_TYPE_CSV, true, getFileName( EXTENSION_CSV_ZIP ), true );