dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #22845
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 11118: made Dimensions listed on /api/resources page, made resource links work properly, and also genera...
------------------------------------------------------------
revno: 11118
committer: Morten Olav Hansen <mortenoh@xxxxxxxxx>
branch nick: dhis2
timestamp: Fri 2013-05-31 11:06:10 +0700
message:
made Dimensions listed on /api/resources page, made resource links work properly, and also generate links if ?links parameter is is true (default is true)
modified:
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/ExchangeClasses.java
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DimensionController.java
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/ContextUtils.java
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/WebUtils.java
dhis-2/dhis-web/dhis-web-api/src/main/resources/templates/html/list.xsl
--
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-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/ExchangeClasses.java'
--- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/ExchangeClasses.java 2013-05-10 12:07:51 +0000
+++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/ExchangeClasses.java 2013-05-31 04:06:10 +0000
@@ -29,6 +29,7 @@
import org.hisp.dhis.attribute.Attribute;
import org.hisp.dhis.chart.Chart;
+import org.hisp.dhis.common.BaseDimensionalObject;
import org.hisp.dhis.common.IdentifiableObject;
import org.hisp.dhis.concept.Concept;
import org.hisp.dhis.constant.Constant;
@@ -90,6 +91,9 @@
// these are the ones that are available for dxf2 import
private static Map<Class<? extends IdentifiableObject>, String> importClasses;
+ // these will be listed on the global resource page
+ private static Map<Class<? extends IdentifiableObject>, String> publicResourceClasses;
+
static
{
allExportClasses = new LinkedHashMap<Class<? extends IdentifiableObject>, String>();
@@ -118,7 +122,7 @@
allExportClasses.put( DataElement.class, "dataElements" );
allExportClasses.put( DataElementGroup.class, "dataElementGroups" );
allExportClasses.put( DataElementGroupSet.class, "dataElementGroupSets" );
-
+
allExportClasses.put( DataElementOperand.class, "dataElementOperands" );
allExportClasses.put( IndicatorType.class, "indicatorTypes" );
@@ -151,6 +155,8 @@
allExportClasses.put( Program.class, "programs" );
allExportClasses.put( ProgramStage.class, "programStages" );
+ allExportClasses.put( BaseDimensionalObject.class, "dimensions" );
+
exportClasses = new LinkedHashMap<Class<? extends IdentifiableObject>, String>( allExportClasses );
importClasses = new LinkedHashMap<Class<? extends IdentifiableObject>, String>( allExportClasses );
@@ -168,7 +174,7 @@
exportClasses.remove( ProgramStage.class );
importClasses.remove( Program.class );
importClasses.remove( ProgramStage.class );
-
+
// special class which is created on demand in association with other objects
exportClasses.remove( DataElementOperand.class );
importClasses.remove( DataElementOperand.class );
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DimensionController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DimensionController.java 2013-04-23 12:02:26 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DimensionController.java 2013-05-31 04:06:10 +0000
@@ -27,6 +27,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+import org.hisp.dhis.api.utils.WebUtils;
import org.hisp.dhis.common.DimensionService;
import org.hisp.dhis.common.DimensionalObject;
import org.springframework.beans.factory.annotation.Autowired;
@@ -35,13 +36,14 @@
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;
@Controller
-@RequestMapping( value = DimensionController.RESOURCE_PATH )
+@RequestMapping(value = DimensionController.RESOURCE_PATH)
public class DimensionController
{
public static final String RESOURCE_PATH = "/dimensions";
-
+
// -------------------------------------------------------------------------
// Dependencies
// -------------------------------------------------------------------------
@@ -53,26 +55,38 @@
// Controller
// -------------------------------------------------------------------------
- @RequestMapping( value = "/{uid}", method = RequestMethod.GET )
- public String getDimension( @PathVariable( "uid" ) String uid, Model model )
+ @RequestMapping(value = "/{uid}", method = RequestMethod.GET)
+ public String getDimension( @PathVariable("uid") String uid,
+ @RequestParam( value = "links", defaultValue = "true", required = false ) Boolean links, Model model )
{
DimensionalObject dimension = dimensionService.getDimension( uid );
-
+
model.addAttribute( "model", dimension );
model.addAttribute( "viewClass", "dimensional" );
-
+
+ if ( links )
+ {
+ WebUtils.generateLinks( dimension );
+ }
+
return "dimension";
}
@RequestMapping( method = RequestMethod.GET )
- public String getDimensions( Model model )
+ public String getDimensions(
+ @RequestParam( value = "links", defaultValue = "true", required = false ) Boolean links, Model model )
{
WebMetaData metaData = new WebMetaData();
-
- metaData.setDimensions( dimensionService.getAllDimensions() );
-
+
+ metaData.setDimensions( dimensionService.getAllDimensions() );
+
model.addAttribute( "model", metaData );
-
+
+ if ( links )
+ {
+ WebUtils.generateLinks( metaData );
+ }
+
return "dimensions";
}
}
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/ContextUtils.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/ContextUtils.java 2013-04-16 18:19:38 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/ContextUtils.java 2013-05-31 04:06:10 +0000
@@ -28,8 +28,9 @@
*/
import javassist.util.proxy.ProxyObject;
-
import org.apache.commons.io.IOUtils;
+import org.hisp.dhis.common.BaseDimensionalObject;
+import org.hisp.dhis.common.DimensionalObject;
import org.hisp.dhis.common.IdentifiableObject;
import org.hisp.dhis.dxf2.metadata.ExchangeClasses;
import org.hisp.dhis.setting.SystemSettingManager;
@@ -184,7 +185,7 @@
response.setContentType( CONTENT_TYPE_TEXT );
PrintWriter writer = null;
-
+
try
{
writer = response.getWriter();
@@ -218,7 +219,17 @@
clazz = clazz.getSuperclass();
}
- String resourcePath = ExchangeClasses.getAllExportMap().get( clazz );
+ String resourcePath;
+
+ // special case
+ if ( DimensionalObject.class.isAssignableFrom( clazz ) )
+ {
+ resourcePath = ExchangeClasses.getAllExportMap().get( BaseDimensionalObject.class );
+ }
+ else
+ {
+ resourcePath = ExchangeClasses.getAllExportMap().get( clazz );
+ }
return getRootPath( getRequest() ) + "/" + resourcePath;
}
@@ -272,15 +283,15 @@
/**
* Adds basic authentication by adding an Authorization header to the
* given HttpHeaders object.
- *
- * @param headers the HttpHeaders object.
+ *
+ * @param headers the HttpHeaders object.
* @param username the user name.
* @param password the password.
*/
public static void setBasicAuth( HttpHeaders headers, String username, String password )
{
- String authorisation = username + ":" + password;
- byte[] encodedAuthorisation = Base64.encode( authorisation.getBytes() );
+ String authorisation = username + ":" + password;
+ byte[] encodedAuthorisation = Base64.encode( authorisation.getBytes() );
headers.add( "Authorization", "Basic " + new String( encodedAuthorisation ) );
}
}
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/WebUtils.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/WebUtils.java 2012-10-26 17:22:12 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/WebUtils.java 2013-05-31 04:06:10 +0000
@@ -30,6 +30,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hisp.dhis.api.controller.WebMetaData;
+import org.hisp.dhis.common.DimensionalObject;
import org.hisp.dhis.common.IdentifiableObject;
import org.hisp.dhis.common.Pager;
import org.hisp.dhis.system.util.ReflectionUtils;
@@ -48,7 +49,7 @@
{
private static final Log log = LogFactory.getLog( WebUtils.class );
- @SuppressWarnings( "unchecked" )
+ @SuppressWarnings("unchecked")
public static void generateLinks( WebMetaData metaData )
{
Class<?> baseType = null;
@@ -56,9 +57,10 @@
for ( Field field : fields )
{
- if ( ReflectionUtils.isCollection( field.getName(), metaData, IdentifiableObject.class ) )
+ if ( ReflectionUtils.isCollection( field.getName(), metaData, IdentifiableObject.class ) ||
+ ReflectionUtils.isCollection( field.getName(), metaData, DimensionalObject.class ) )
{
- List<IdentifiableObject> objects = new ArrayList<IdentifiableObject>( (Collection<IdentifiableObject>) ReflectionUtils.getFieldObject( field, metaData ) );
+ List<Object> objects = new ArrayList<Object>( (Collection<?>) ReflectionUtils.getFieldObject( field, metaData ) );
if ( !objects.isEmpty() )
{
@@ -69,7 +71,7 @@
baseType = objects.get( 0 ).getClass();
- for ( IdentifiableObject object : objects )
+ for ( Object object : objects )
{
generateLinks( object );
}
@@ -77,16 +79,22 @@
}
}
- if ( metaData.getPager() != null && baseType != null )
+ if ( baseType == null )
+ {
+ log.warn( "baseType was not found, returning." );
+ return;
+ }
+
+ if ( metaData.getPager() != null )
{
String basePath = ContextUtils.getPath( baseType );
Pager pager = metaData.getPager();
if ( pager.getPage() < pager.getPageCount() )
{
- String nextPath = basePath + "?page=" + ( pager.getPage() + 1 );
+ String nextPath = basePath + "?page=" + (pager.getPage() + 1);
nextPath += pager.pageSizeIsDefault() ? "" : "&pageSize=" + pager.getPageSize();
-
+
pager.setNextPage( nextPath );
}
@@ -99,9 +107,9 @@
}
else
{
- String prevPath = basePath + "?page=" + ( pager.getPage() - 1 );
+ String prevPath = basePath + "?page=" + (pager.getPage() - 1);
prevPath += pager.pageSizeIsDefault() ? "" : "&pageSize=" + pager.getPageSize();
-
+
pager.setPrevPage( prevPath );
}
}
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/resources/templates/html/list.xsl'
--- dhis-2/dhis-web/dhis-web-api/src/main/resources/templates/html/list.xsl 2013-05-17 03:29:07 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/resources/templates/html/list.xsl 2013-05-31 04:06:10 +0000
@@ -19,7 +19,7 @@
d:organisationUnitGroupSets|d:indicatorTypes|d:attributeTypes|d:reports|d:constants|
d:sqlViews|d:validationRules|d:validationRuleGroups|d:users|d:userGroups|d:userAuthorityGroups|
d:reportTables|d:mapLegends|d:mapLegendSets|d:mapLayers|d:optionSets|d:interpretations|
- d:sections|d:userRoles|d:organisationUnitLevels|d:programs|d:programStages">
+ d:sections|d:userRoles|d:organisationUnitLevels|d:programs|d:programStages|d:dimensions">
<h3>
<xsl:value-of select="local-name()" />