dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #18818
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 7992: Impl server side support for interpretations of data set report
------------------------------------------------------------
revno: 7992
committer: Lars Helge Øverland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Fri 2012-08-31 17:35:59 +0200
message:
Impl server side support for interpretations of data set report
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/interpretation/Interpretation.java
dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/interpretation/impl/DefaultInterpretationService.java
dhis-2/dhis-services/dhis-service-reporting/src/main/resources/META-INF/dhis/beans.xml
dhis-2/dhis-services/dhis-service-reporting/src/main/resources/org/hisp/dhis/interpretation/hibernate/Interpretation.hbm.xml
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/InterpretationController.java
--
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-api/src/main/java/org/hisp/dhis/interpretation/Interpretation.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/interpretation/Interpretation.java 2012-05-31 22:31:59 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/interpretation/Interpretation.java 2012-08-31 15:35:59 +0000
@@ -38,8 +38,10 @@
import org.hisp.dhis.common.annotation.Scanned;
import org.hisp.dhis.common.view.DetailedView;
import org.hisp.dhis.common.view.ExportView;
+import org.hisp.dhis.dataset.DataSet;
import org.hisp.dhis.mapping.MapView;
import org.hisp.dhis.organisationunit.OrganisationUnit;
+import org.hisp.dhis.period.Period;
import org.hisp.dhis.reporttable.ReportTable;
import org.hisp.dhis.user.User;
@@ -60,7 +62,11 @@
private ReportTable reportTable;
- private OrganisationUnit organisationUnit; // Applicable to report table only
+ private DataSet dataSet;
+
+ private Period period; // Applicable to data set report
+
+ private OrganisationUnit organisationUnit; // Applicable to report table and data set report
private String text;
@@ -101,6 +107,15 @@
this.text = text;
this.created = new Date();
}
+
+ public Interpretation( DataSet dataSet, Period period, OrganisationUnit organisationUnit, String text )
+ {
+ this.dataSet = dataSet;
+ this.period = period;
+ this.organisationUnit = organisationUnit;
+ this.text = text;
+ this.created = new Date();
+ }
// -------------------------------------------------------------------------
// Logic
@@ -125,6 +140,11 @@
{
return reportTable != null;
}
+
+ public boolean isDataSetReportInterpretation()
+ {
+ return dataSet != null;
+ }
// -------------------------------------------------------------------------
// Get and set methods
@@ -176,6 +196,34 @@
@JsonDeserialize( as = BaseIdentifiableObject.class )
@JsonView( { DetailedView.class, ExportView.class } )
@JacksonXmlProperty( namespace = Dxf2Namespace.NAMESPACE )
+ public DataSet getDataSet()
+ {
+ return dataSet;
+ }
+
+ public void setDataSet( DataSet dataSet )
+ {
+ this.dataSet = dataSet;
+ }
+
+ @JsonProperty
+ @JsonDeserialize( as = BaseIdentifiableObject.class )
+ @JsonView( { DetailedView.class, ExportView.class } )
+ @JacksonXmlProperty( namespace = Dxf2Namespace.NAMESPACE )
+ public Period getPeriod()
+ {
+ return period;
+ }
+
+ public void setPeriod( Period period )
+ {
+ this.period = period;
+ }
+
+ @JsonProperty
+ @JsonDeserialize( as = BaseIdentifiableObject.class )
+ @JsonView( { DetailedView.class, ExportView.class } )
+ @JacksonXmlProperty( namespace = Dxf2Namespace.NAMESPACE )
public OrganisationUnit getOrganisationUnit()
{
return organisationUnit;
=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/interpretation/impl/DefaultInterpretationService.java'
--- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/interpretation/impl/DefaultInterpretationService.java 2012-05-30 09:51:59 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/interpretation/impl/DefaultInterpretationService.java 2012-08-31 15:35:59 +0000
@@ -35,6 +35,7 @@
import org.hisp.dhis.interpretation.Interpretation;
import org.hisp.dhis.interpretation.InterpretationComment;
import org.hisp.dhis.interpretation.InterpretationService;
+import org.hisp.dhis.period.PeriodService;
import org.hisp.dhis.user.CurrentUserService;
import org.hisp.dhis.user.User;
import org.hisp.dhis.user.UserService;
@@ -71,6 +72,13 @@
{
this.userService = userService;
}
+
+ private PeriodService periodService;
+
+ public void setPeriodService( PeriodService periodService )
+ {
+ this.periodService = periodService;
+ }
// -------------------------------------------------------------------------
// InterpretationService implementation
@@ -85,6 +93,11 @@
interpretation.setUser( user );
}
+ if ( interpretation != null && interpretation.getPeriod() != null )
+ {
+ interpretation.setPeriod( periodService.reloadPeriod( interpretation.getPeriod() ) );
+ }
+
return interpretationStore.save( interpretation );
}
=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-services/dhis-service-reporting/src/main/resources/META-INF/dhis/beans.xml 2012-07-24 07:11:35 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/main/resources/META-INF/dhis/beans.xml 2012-08-31 15:35:59 +0000
@@ -249,7 +249,8 @@
<bean id="org.hisp.dhis.interpretation.InterpretationService" class="org.hisp.dhis.interpretation.impl.DefaultInterpretationService">
<property name="interpretationStore" ref="org.hisp.dhis.interpretation.InterpretationStore" />
<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
- <property name="userService" ref="org.hisp.dhis.user.UserService" />
+ <property name="userService" ref="org.hisp.dhis.user.UserService" />
+ <property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
</bean>
<bean id="org.hisp.dhis.interpretation.InterpretationStore" class="org.hisp.dhis.common.hibernate.HibernateIdentifiableObjectStore">
=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/resources/org/hisp/dhis/interpretation/hibernate/Interpretation.hbm.xml'
--- dhis-2/dhis-services/dhis-service-reporting/src/main/resources/org/hisp/dhis/interpretation/hibernate/Interpretation.hbm.xml 2012-05-31 22:31:59 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/main/resources/org/hisp/dhis/interpretation/hibernate/Interpretation.hbm.xml 2012-08-31 15:35:59 +0000
@@ -24,6 +24,12 @@
<many-to-one name="reportTable" class="org.hisp.dhis.reporttable.ReportTable" column="reporttableid"
foreign-key="fk_interpretation_reporttableid" />
+ <many-to-one name="dataSet" class="org.hisp.dhis.dataset.DataSet" column="datasetid"
+ foreign-key="fk_interpretation_datasetid"/>
+
+ <many-to-one name="period" class="org.hisp.dhis.period.Period" column="periodid"
+ foreign-key="fk_interpretation_periodid"/>
+
<many-to-one name="organisationUnit" class="org.hisp.dhis.organisationunit.OrganisationUnit" column="organisationunitid"
foreign-key="fk_interpretation_organisationunitid" />
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/InterpretationController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/InterpretationController.java 2012-06-15 10:19:42 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/InterpretationController.java 2012-08-31 15:35:59 +0000
@@ -38,12 +38,16 @@
import org.hisp.dhis.chart.Chart;
import org.hisp.dhis.chart.ChartService;
import org.hisp.dhis.common.Pager;
+import org.hisp.dhis.dataset.DataSet;
+import org.hisp.dhis.dataset.DataSetService;
import org.hisp.dhis.interpretation.Interpretation;
import org.hisp.dhis.interpretation.InterpretationService;
import org.hisp.dhis.mapping.MapView;
import org.hisp.dhis.mapping.MappingService;
import org.hisp.dhis.organisationunit.OrganisationUnit;
import org.hisp.dhis.organisationunit.OrganisationUnitService;
+import org.hisp.dhis.period.Period;
+import org.hisp.dhis.period.PeriodType;
import org.hisp.dhis.reporttable.ReportTable;
import org.hisp.dhis.reporttable.ReportTableService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -74,6 +78,9 @@
private ReportTableService reportTableService;
@Autowired
+ private DataSetService dataSetService;
+
+ @Autowired
private OrganisationUnitService organisationUnitService;
@Autowired
@@ -184,7 +191,46 @@
response.setStatus( HttpServletResponse.SC_CREATED );
response.setHeader( "Location", InterpretationController.RESOURCE_PATH + "/" + interpretation.getUid() );
}
-
+
+ @RequestMapping( value = "/dataSetReport/{uid}", method = RequestMethod.POST, consumes = { "text/html", "text/plain" } )
+ public void shareDataSetReportInterpretation(
+ @PathVariable( "uid" ) String dataSetUid,
+ @RequestParam( "pe" ) String isoPeriod,
+ @RequestParam( "ou" ) String orgUnitUid,
+ @RequestBody String text, HttpServletResponse response ) throws IOException
+ {
+ DataSet dataSet = dataSetService.getDataSet( dataSetUid );
+
+ if ( dataSet == null )
+ {
+ ContextUtils.conflictResponse( response, "Data set identifier not valid: " + dataSetUid );
+ return;
+ }
+
+ Period period = PeriodType.getPeriodFromIsoString( isoPeriod );
+
+ if ( period == null )
+ {
+ ContextUtils.conflictResponse( response, "Period identifier not valid: " + isoPeriod );
+ return;
+ }
+
+ OrganisationUnit orgUnit = organisationUnitService.getOrganisationUnit( orgUnitUid );
+
+ if ( orgUnit == null )
+ {
+ ContextUtils.conflictResponse( response, "Organisation unit identifier not valid: " + orgUnitUid );
+ return;
+ }
+
+ Interpretation interpretation = new Interpretation( dataSet, period, orgUnit, text );
+
+ interpretationService.saveInterpretation( interpretation );
+
+ response.setStatus( HttpServletResponse.SC_CREATED );
+ response.setHeader( "Location", InterpretationController.RESOURCE_PATH + "/" + interpretation.getUid() );
+ }
+
@RequestMapping( value = "/{uid}/comment", method = RequestMethod.POST, consumes = { "text/html", "text/plain" } )
public void postComment(
@PathVariable( "uid" ) String uid,