=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/ApiResource.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/ApiResource.java 2011-09-12 14:39:31 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/ApiResource.java 2011-09-13 11:10:12 +0000 @@ -1,7 +1,6 @@ package org.hisp.dhis.web.api.resources; import java.io.IOException; -import java.io.StringWriter; import javax.ws.rs.GET; import javax.ws.rs.Path; @@ -11,6 +10,7 @@ import org.apache.velocity.exception.MethodInvocationException; import org.apache.velocity.exception.ParseErrorException; import org.apache.velocity.exception.ResourceNotFoundException; +import org.springframework.beans.factory.annotation.Required; import com.sun.jersey.api.view.ImplicitProduces; @@ -20,20 +20,17 @@ { private VelocityManager velocityManager; - public void setVelocityManager( VelocityManager velocityManager ) - { - this.velocityManager = velocityManager; - } - @GET @Produces( MediaType.TEXT_HTML ) public String getDescription() throws ResourceNotFoundException, ParseErrorException, MethodInvocationException, IOException, Exception { - StringWriter writer = new StringWriter(); - - velocityManager.render( null, "index", writer ); - - return writer.toString(); + return velocityManager.render( null, "index" ); + } + + @Required + public void setVelocityManager( VelocityManager velocityManager ) + { + this.velocityManager = velocityManager; } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/DataSetResource.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/DataSetResource.java 2011-09-12 08:29:53 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/DataSetResource.java 2011-09-13 11:10:12 +0000 @@ -1,7 +1,5 @@ package org.hisp.dhis.web.api.resources; -import java.util.Set; - import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; @@ -10,13 +8,9 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.UriInfo; -import org.hisp.dhis.dataelement.DataElement; -import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo; import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.dataset.DataSetService; import org.hisp.dhis.importexport.dxf2.service.DataSetMapper; -import org.hisp.dhis.organisationunit.OrganisationUnit; -import org.hisp.dhis.period.PeriodType; import org.hisp.dhis.web.api.UrlResourceListener; import org.springframework.beans.factory.annotation.Required; @@ -25,8 +19,10 @@ { private DataSetService dataSetService; + private VelocityManager velocityManager; + @Context - UriInfo uriInfo; + private UriInfo uriInfo; @GET @Produces( { MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON } ) @@ -38,6 +34,7 @@ { throw new IllegalArgumentException( "No dataset with uuid " + uuid ); } + org.hisp.dhis.importexport.dxf2.model.DataSet dxfDataSet = new DataSetMapper().convert( dataSet ); new UrlResourceListener( uriInfo ).beforeMarshal( dxfDataSet ); return dxfDataSet; @@ -53,49 +50,8 @@ { throw new IllegalArgumentException( "No dataset with uuid " + uuid ); } - - StringBuilder t = Html.head( "Data set " + dataSet.getName() ); - t.append( "

See the xml version

\n" ); - t.append( "

Uuid: " ).append( dataSet.getUuid() ).append( "
\n" ); - PeriodType periodType = dataSet.getPeriodType(); - t.append( "Period type: " ).append( dataSet.getPeriodType().getName() ).append( " - " ) - .append( periodType.getIsoFormat() ); - t.append( "

\n" ); - - t.append( "

Org units reporting data set

\n\n" ); - - t.append( "

Data elements in data set

\n" ); - t.append( "

Xml template

\n" ); - - Html.xmlTemplate( t, uriInfo ); - t.append( Html.tail() ); - - return t.toString(); + + return velocityManager.render( dataSet, "dataSet" ); } @Required @@ -103,4 +59,10 @@ { this.dataSetService = dataSetService; } + + @Required + public void setVelocityManager( VelocityManager velocityManager ) + { + this.velocityManager = velocityManager; + } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/DataSetsResource.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/DataSetsResource.java 2011-09-12 08:29:53 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/DataSetsResource.java 2011-09-13 11:10:12 +0000 @@ -1,7 +1,5 @@ package org.hisp.dhis.web.api.resources; -import java.net.URI; - import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; @@ -9,7 +7,6 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.UriInfo; -import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.dataset.DataSetService; import org.hisp.dhis.importexport.dxf2.model.DataSetLinks; import org.hisp.dhis.importexport.dxf2.service.LinkBuilder; @@ -24,6 +21,8 @@ private DataSetService dataSetService; + private VelocityManager velocityManager; + @Context private UriInfo uriInfo; @@ -40,25 +39,20 @@ @Produces( MediaType.TEXT_HTML ) public String getDataSetList() { - StringBuilder t = Html.head( "Data sets available for reporting" ); - - t.append( "

See the xml version

\n" ); - for ( DataSet dataSet : dataSetService.getAllDataSets() ) - { - URI uri = uriInfo.getAbsolutePathBuilder().path( "{uuid}" ).build( dataSet.getUuid() ); - t.append( "
  • " ).append( "" ).append( dataSet.getName() ) - .append( "
  • \n" ); - } - t.append( "" ); - Html.xmlTemplate( t, uriInfo ); - t.append( Html.tail() ); - - return t.toString(); - } + DataSetLinks dataSetLinks = new DataSetLinks( linkBuilder.getLinks( dataSetService.getAllDataSets() ) ); + new UrlResourceListener( uriInfo ).beforeMarshal( dataSetLinks ); + return velocityManager.render( dataSetLinks.getDataSet(), "dataSets" ); + } @Required public void setDataSetService( DataSetService dataSetService ) { this.dataSetService = dataSetService; } + + @Required + public void setVelocityManager( VelocityManager velocityManager ) + { + this.velocityManager = velocityManager; + } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/DataValueSetsResource.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/DataValueSetsResource.java 2011-09-12 08:29:53 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/DataValueSetsResource.java 2011-09-13 11:10:12 +0000 @@ -20,11 +20,18 @@ { private DataValueSetService dataValueSetService; - @Context UriInfo uriInfo; + private VelocityManager velocityManager; + + @Context + private UriInfo uriInfo; @GET @Produces( MediaType.TEXT_HTML ) - public String getDescription() { + public String getDescription() + { + URI uri = uriInfo.getBaseUriBuilder().path( DataSetsResource.class ).build( ); + return velocityManager.render( uri, "dataValueSets" ); + /* StringBuilder sb = Html.head( "Data value sets" ); URI uri = uriInfo.getBaseUriBuilder().path( DataSetsResource.class ).build( ); sb.append( "

    This resource is the place to post data value sets. Take a look at the \nDHIS2 Web API" ); - - if ( title != null ) - { - sb.append( " - " ).append( title ); - } - - sb.append( "\n\n

    " ); - if ( title == null ) - { - sb.append( "DHIS2 Web API" ); - } - else - { - sb.append( title ); - } - sb.append( "

    \n" ); - - return sb; - - } - - public static String tail() - { - return "\n\n"; - } - - public static void xmlTemplate( StringBuilder t, UriInfo uriInfo ) - { - - t.append( "

    Post according to the following template" ); - if ( uriInfo != null ) - { - URI uri = uriInfo.getBaseUriBuilder().path( DataValueSetsResource.class ).build(); - t.append( " to " ).append( uri ).append( "" ); - } - t.append( ":

    " ); - - t.append( "
    " ).append( "<dataValueSet xmlns=\"http://dhis2.org/schema/dxf/2.0-SNAPSHOT\"\n" );
    -        t.append( "    dataSet=\"dataSet UUID\" \n    period=\"periodInIsoFormat\"\n    orgUnit=\"unit UUID\">" );
    -
    -        t.append( "\n  <dataValue dataElement=\"data element UUID\" categoryOptionCombo=\"UUID, only specify if used\" storedBy=\"string\" value=\"value\"/>" );
    -        t.append( "\n</dataValueSet>" );
    -        t.append( "
    " ); - } -} === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/OrgUnitResource.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/OrgUnitResource.java 2011-09-12 08:29:53 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/OrgUnitResource.java 2011-09-13 11:10:12 +0000 @@ -41,7 +41,6 @@ import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.organisationunit.OrganisationUnitService; import org.hisp.dhis.web.api.UrlResourceListener; -import org.springframework.beans.factory.annotation.Required; @Produces( { MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON } ) @Consumes( { MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON } ) @@ -50,6 +49,11 @@ { private OrganisationUnitService organisationUnitService; + public void setOrganisationUnitService( OrganisationUnitService organisationUnitService ) + { + this.organisationUnitService = organisationUnitService; + } + @PathParam( "id" ) private String id; @@ -71,10 +75,4 @@ new UrlResourceListener( uriInfo ).beforeMarshal( orgUnit ); return orgUnit; } - - @Required - public void setOrganisationUnitService( OrganisationUnitService organisationUnitService ) - { - this.organisationUnitService = organisationUnitService; - } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/OrgUnitsResource.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/OrgUnitsResource.java 2011-09-12 08:29:53 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/OrgUnitsResource.java 2011-09-13 11:10:12 +0000 @@ -10,16 +10,17 @@ import org.hisp.dhis.importexport.dxf2.model.OrgUnitLinks; import org.hisp.dhis.importexport.dxf2.service.LinkBuilder; import org.hisp.dhis.importexport.dxf2.service.LinkBuilderImpl; -import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.organisationunit.OrganisationUnitService; import org.hisp.dhis.web.api.UrlResourceListener; -import org.springframework.web.util.HtmlUtils; +import org.springframework.beans.factory.annotation.Required; @Path( "orgUnits" ) public class OrgUnitsResource { private OrganisationUnitService organisationUnitService; + private VelocityManager velocityManager; + private LinkBuilder linkBuilder = new LinkBuilderImpl(); @Context @@ -38,24 +39,20 @@ @Produces( MediaType.TEXT_HTML ) public String getOrgUnitsHtml() { - StringBuilder sb = Html.head( "Org units" ); - - sb.append( "

    See the xml version

    \n" ); - sb.append( "\n\n" ); - - return sb.toString(); + OrgUnitLinks orgUnitLinks = new OrgUnitLinks( linkBuilder.getLinks( organisationUnitService.getAllOrganisationUnits() ) ); + new UrlResourceListener( uriInfo ).beforeMarshal( orgUnitLinks ); + return velocityManager.render( orgUnitLinks.getOrgUnit(), "orgUnits" ); } + @Required public void setOrganisationUnitService( OrganisationUnitService organisationUnitService ) { this.organisationUnitService = organisationUnitService; } + + @Required + public void setVelocityManager( VelocityManager velocityManager ) + { + this.velocityManager = velocityManager; + } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/VelocityManager.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/VelocityManager.java 2011-09-12 08:29:53 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/VelocityManager.java 2011-09-13 11:10:12 +0000 @@ -1,14 +1,10 @@ package org.hisp.dhis.web.api.resources; -import java.io.IOException; -import java.io.Writer; +import java.io.StringWriter; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; import org.apache.velocity.app.VelocityEngine; -import org.apache.velocity.exception.MethodInvocationException; -import org.apache.velocity.exception.ParseErrorException; -import org.apache.velocity.exception.ResourceNotFoundException; import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader; public class VelocityManager @@ -25,15 +21,28 @@ velocity.init(); } - public void render(Object o, String template, Writer writer) throws ResourceNotFoundException, ParseErrorException, MethodInvocationException, IOException, Exception + public String render( Object object, String template ) { - final VelocityContext context = new VelocityContext(); - - if ( o != null ) - { - context.put( "object", o ); - } - - velocity.getTemplate( templatePath + template + ".vm").merge( context, writer ); + try + { + StringWriter writer = new StringWriter(); + + VelocityContext context = new VelocityContext(); + + if ( object != null ) + { + context.put( "object", object ); + } + + velocity.getTemplate( templatePath + template + ".vm" ).merge( context, writer ); + + return writer.toString(); + + // TODO include encoder in context + } + catch ( Exception ex ) + { + throw new RuntimeException( "Failed to merge velocity template", ex ); + } } } === removed file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/VelocityProcessor.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/VelocityProcessor.java 2011-09-12 14:39:31 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/web/api/resources/VelocityProcessor.java 1970-01-01 00:00:00 +0000 @@ -1,92 +0,0 @@ -package org.hisp.dhis.web.api.resources; - -import java.io.IOException; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.io.Writer; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.velocity.Template; -import org.apache.velocity.VelocityContext; -import org.apache.velocity.app.Velocity; -import org.apache.velocity.app.VelocityEngine; -import org.apache.velocity.exception.MethodInvocationException; -import org.apache.velocity.exception.ParseErrorException; -import org.apache.velocity.exception.ResourceNotFoundException; -import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader; - -import com.sun.jersey.api.view.Viewable; -import com.sun.jersey.spi.template.ViewProcessor; - -//@Provider -//@Singleton -public class VelocityProcessor - implements ViewProcessor