dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #34663
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 17779: Implemented blueprint 'future-data-check': check if future period is allowed on data value save.
------------------------------------------------------------
revno: 17779
committer: Halvdan Hoem Grelland <halvdanhg@xxxxxxxxx>
branch nick: dhis2
timestamp: Mon 2014-12-22 22:47:45 +0100
message:
Implemented blueprint 'future-data-check': check if future period is allowed on data value save.
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElement.java
dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/Period.java
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/DataValueController.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/dataelement/DataElement.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElement.java 2014-12-19 15:47:38 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElement.java 2014-12-22 21:47:45 +0000
@@ -361,6 +361,24 @@
}
/**
+ * Indicates whether collecting data for future periods should be allowed for
+ * this data element.
+ * @return true if all the associated data sets allow future periods, false otherwise.
+ */
+ public boolean isAllowFuturePeriods()
+ {
+ for ( DataSet dataSet : dataSets )
+ {
+ if( dataSet != null && !dataSet.isAllowFuturePeriods() )
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
* Returns the frequency order for the PeriodType of this DataElement. If no
* PeriodType exists, 0 is returned.
*/
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/Period.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/Period.java 2014-11-11 11:46:59 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/Period.java 2014-12-22 21:47:45 +0000
@@ -276,6 +276,15 @@
return true;
}
+ /**
+ * Determines whether this is a future period in relation to the current time.
+ * @return true if this period ends in the future, false otherwise (the period has ended).
+ */
+ public boolean isFuture()
+ {
+ return getEndDate().after( new Date() );
+ }
+
// -------------------------------------------------------------------------
// hashCode, equals and toString
// -------------------------------------------------------------------------
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/DataValueController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/DataValueController.java 2014-11-11 12:51:06 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/DataValueController.java 2014-12-22 21:47:45 +0000
@@ -33,6 +33,7 @@
import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;
import org.hisp.dhis.dataelement.DataElementCategoryService;
import org.hisp.dhis.dataelement.DataElementService;
+import org.hisp.dhis.dataset.DataSet;
import org.hisp.dhis.dataset.DataSetService;
import org.hisp.dhis.datavalue.DataValue;
import org.hisp.dhis.datavalue.DataValueService;
@@ -66,6 +67,10 @@
{
public static final String RESOURCE_PATH = "/dataValues";
+ // ---------------------------------------------------------------------
+ // Dependencies
+ // ---------------------------------------------------------------------
+
@Autowired
private CurrentUserService currentUserService;
@@ -87,6 +92,10 @@
@Autowired
private InputUtils inputUtils;
+ // ---------------------------------------------------------------------
+ // POST
+ // ---------------------------------------------------------------------
+
@PreAuthorize( "hasRole('ALL') or hasRole('F_DATAVALUE_ADD')" )
@RequestMapping( method = RequestMethod.POST, produces = "text/plain" )
public void saveDataValue(
@@ -177,6 +186,17 @@
}
// ---------------------------------------------------------------------
+ // Future period constraint check
+ // ---------------------------------------------------------------------
+
+ if ( period.isFuture() && !dataElement.isAllowFuturePeriods() )
+ {
+ ContextUtils.conflictResponse( response, "Cannot save data value for future period. " +
+ "One or more data sets for data element " + de + " does not allow future periods." );
+ return;
+ }
+
+ // ---------------------------------------------------------------------
// Locking validation
// ---------------------------------------------------------------------
@@ -240,6 +260,10 @@
}
}
+ // ---------------------------------------------------------------------
+ // DELETE
+ // ---------------------------------------------------------------------
+
@PreAuthorize( "hasRole('ALL') or hasRole('F_DATAVALUE_DELETE')" )
@RequestMapping( method = RequestMethod.DELETE, produces = "text/plain" )
public void deleteDataValue(
@@ -335,6 +359,10 @@
dataValueService.deleteDataValue( dataValue );
}
+ // ---------------------------------------------------------------------
+ // GET
+ // ---------------------------------------------------------------------
+
@RequestMapping( method = RequestMethod.GET )
public String getDataValue(
@RequestParam String de,