dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #25588
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 12737: code cleanup from changing ValidationRunType.ALERT to .SCHEDULED
------------------------------------------------------------
revno: 12737
committer: dhis2-c <dhis2@xxxxxxxxxxxxxx>
branch nick: trunk
timestamp: Wed 2013-10-16 12:00:05 -0400
message:
code cleanup from changing ValidationRunType.ALERT to .SCHEDULED
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/SystemSettingManager.java
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/ValidationRunContext.java
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/Validator.java
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/ValidatorThread.java
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/scheduling/MonitoringTask.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/setting/SystemSettingManager.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/SystemSettingManager.java 2013-10-08 17:20:57 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/SystemSettingManager.java 2013-10-16 16:00:05 +0000
@@ -79,7 +79,7 @@
final String KEY_SCHEDULE_AGGREGATE_QUERY_BUILDER_TASK_STRATEGY = "scheduleAggregateQueryBuilderTackStrategy";
final String KEY_CONFIGURATION = "keyConfig";
final String KEY_ACCOUNT_RECOVERY = "keyAccountRecovery";
- final String KEY_LAST_ALERT_RUN = "keyLastAlertRun";
+ final String KEY_LAST_MONITORING_RUN = "keyLastMonitoringRun";
final String DEFAULT_SCHEDULE_AGGREGATE_QUERY_BUILDER_TASK_STRATEGY = "lastMonth";
final String DEFAULT_FLAG = "dhis2";
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/ValidationRunContext.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/ValidationRunContext.java 2013-10-16 12:39:47 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/ValidationRunContext.java 2013-10-16 16:00:05 +0000
@@ -52,7 +52,7 @@
/**
* Holds common values that are used during a validation run (either interactive
- * or an alert run.) These values don't change during the multi-threaded tasks
+ * or scheduled.) These values don't change during the multi-threaded tasks
* (except that results entries are added in a threadsafe way.)
*
* Some of the values are precalculated collections, to save CPU time during the
@@ -74,7 +74,7 @@
private ValidationRunType runType;
- private Date lastAlertRun;
+ private Date lastScheduledRun;
private Map<String, Double> constantMap;
@@ -100,7 +100,8 @@
{
return new ToStringBuilder( this, ToStringStyle.SHORT_PREFIX_STYLE )
.append( "\n PeriodTypeExtendedMap", (Arrays.toString( periodTypeExtendedMap.entrySet().toArray() )) )
- .append( "\n runType", runType ).append( "\n lastAlertRun", lastAlertRun )
+ .append( "\n runType", runType )
+ .append( "\n lastScheduledRun", lastScheduledRun )
.append( "\n constantMap", "[" + constantMap.size() + "]" )
.append( "\n ruleXMap", "[" + ruleXMap.size() + "]" )
.append( "\n sourceXs", Arrays.toString( sourceXs.toArray() ) )
@@ -113,18 +114,18 @@
* @param sources organisation units for validation
* @param periods periods for validation
* @param rules validation rules for validation
- * @param runType whether this is an INTERACTIVE or ALERT run
- * @param lastAlertRun (for ALERT runs) date of previous alert run
+ * @param runType whether this is an INTERACTIVE or SCHEDULED run
+ * @param lastScheduledRun (for SCHEDULED runs) date/time of previous run
* @return context object for this run
*/
public static ValidationRunContext getNewValidationRunContext( Collection<OrganisationUnit> sources,
Collection<Period> periods, Collection<ValidationRule> rules, Map<String, Double> constantMap,
- ValidationRunType runType, Date lastAlertRun, ExpressionService expressionService, PeriodService periodService,
+ ValidationRunType runType, Date lastScheduledRun, ExpressionService expressionService, PeriodService periodService,
DataValueService dataValueService )
{
ValidationRunContext context = new ValidationRunContext();
context.runType = runType;
- context.lastAlertRun = lastAlertRun;
+ context.lastScheduledRun = lastScheduledRun;
context.validationResults = new ConcurrentLinkedQueue<ValidationResult>(); // thread-safe
context.periodTypeExtendedMap = new HashMap<PeriodType, PeriodTypeExtended>();
context.ruleXMap = new HashMap<ValidationRule, ValidationRuleExtended>();
@@ -149,7 +150,7 @@
{
addPeriodsToContext( periods );
- boolean monitoringRulesPresent = addRulesToContext ( rules );
+ boolean surveillanceRulesPresent = addRulesToContext ( rules );
removeAnyUnneededPeriodTypes();
@@ -157,7 +158,7 @@
countOfSourcesToValidate = sources.size();
- if ( monitoringRulesPresent )
+ if ( surveillanceRulesPresent )
{
Set<OrganisationUnit> otherDescendants = getAllOtherDescendants( sources );
addSourcesToContext( otherDescendants, false );
@@ -182,11 +183,11 @@
* Adds validation rules to the context.
*
* @param rules validation rules to add
- * @return true if there were some monitoring-type rules, false otherwise.
+ * @return true if there were some surveillance-type rules, false otherwise.
*/
private boolean addRulesToContext ( Collection<ValidationRule> rules )
{
- boolean monitoringRulesPresent = false;
+ boolean surveillanceRulesPresent = false;
for ( ValidationRule rule : rules )
{
@@ -194,12 +195,12 @@
{
if ( rule.getOrganisationUnitLevel() == null )
{
- log.error( "monitoring-type validationRule '" + (rule.getName() == null ? "" : rule.getName())
+ log.error( "surveillance-type validationRule '" + (rule.getName() == null ? "" : rule.getName())
+ "' has no organisationUnitLevel." );
continue; // Ignore rule, avoid null reference later.
}
- monitoringRulesPresent = true;
+ surveillanceRulesPresent = true;
}
// Find the period type extended for this rule
@@ -221,7 +222,7 @@
ValidationRuleExtended ruleX = new ValidationRuleExtended( rule, allowedPastPeriodTypes );
ruleXMap.put( rule, ruleX );
}
- return monitoringRulesPresent;
+ return surveillanceRulesPresent;
}
/**
@@ -242,14 +243,14 @@
/**
* Finds all organisation unit descendants that are not in a given
- * collection of organisation units. This is needed for monitoring-type
+ * collection of organisation units. This is needed for surveillance-type
* rules, because the data values for the rules may need to be aggregated
* from the organisation unit's descendants.
*
* The descendants will likely be there anyway for a run including
- * monitoring-type rules, because an interactive run containing
- * monitoring-type rules should select an entire subtree, and a
- * scheduled alert run will contain all organisation units. But check
+ * surveillance-type rules, because an interactive run containing
+ * surveillance-type rules should select an entire subtree, and a
+ * scheduled monitoring run will contain all organisation units. But check
* just to be sure, and find any that may be missing. This makes sure
* that some of the tests will work, and may be required for some
* future features to work.
@@ -386,9 +387,9 @@
return runType;
}
- public Date getLastAlertRun()
+ public Date getLastScheduledRun()
{
- return lastAlertRun;
+ return lastScheduledRun;
}
public Map<String, Double> getConstantMap()
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/Validator.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/Validator.java 2013-10-16 13:46:59 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/Validator.java 2013-10-16 16:00:05 +0000
@@ -58,9 +58,9 @@
* @param sources the organisation units in which to run the validation rules
* @param periods the periods of data to check
* @param rules the ValidationRules to evaluate
- * @param runType whether this is an INTERACTIVE or ALERT run
- * @param lastAlertRun date/time of the most recent successful alerts run
- * (needed only for alert run)
+ * @param runType whether this is an INTERACTIVE or SCHEDULED run
+ * @param lastScheduledRun date/time of the most recent successful
+ * scheduled monitoring run (needed only for scheduled runs)
* @param constantService Constant Service reference
* @param expressionService Expression Service reference
* @param periodService Period Service reference
@@ -68,11 +68,11 @@
* @return a collection of any validations that were found
*/
public static Collection<ValidationResult> validate( Collection<OrganisationUnit> sources,
- Collection<Period> periods, Collection<ValidationRule> rules, ValidationRunType runType, Date lastAlertRun,
+ Collection<Period> periods, Collection<ValidationRule> rules, ValidationRunType runType, Date lastScheduledRun,
ConstantService constantService, ExpressionService expressionService, PeriodService periodService, DataValueService dataValueService)
{
ValidationRunContext context = ValidationRunContext.getNewValidationRunContext( sources, periods, rules,
- constantService.getConstantMap(), ValidationRunType.SCHEDULED, lastAlertRun,
+ constantService.getConstantMap(), ValidationRunType.SCHEDULED, lastScheduledRun,
expressionService, periodService, dataValueService );
int threadPoolSize = getThreadPoolSize( context );
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/ValidatorThread.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/ValidatorThread.java 2013-10-16 13:46:59 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/ValidatorThread.java 2013-10-16 16:00:05 +0000
@@ -170,7 +170,7 @@
*
* @param sourceX the organisation unit extended information
* @param periodTypeX the period type extended information
- * @param context the alert run context
+ * @param context the validation run context
* @param sourceDataElements all data elements collected for this
* organisation unit
* @return
@@ -196,7 +196,7 @@
}
else
{
- // For monitoring-type rules, include only rules for this
+ // For surveillance-type rules, include only rules for this
// organisation's unit level.
// The organisation may not be configured for the data elements
// because they could be aggregated from a lower level.
@@ -215,9 +215,9 @@
* Checks to see if the evaluation should go further for this
* evaluationRule, after the "current" data to evaluate has been fetched.
* For INTERACTIVE runs, we always go further (always return true.) For
- * ALERT runs, we go further only if something has changed since the last
- * successful alert run -- either the rule definition or one of the
- * "current" data element / option values.
+ * SCHEDULED runs, we go further only if something has changed since the
+ * last successful scheduled run -- either the rule definition or one of
+ * the "current" data element / option values.
*
* @param lastUpdatedMap when each data value was last updated
* @param rule the rule that may be evaluated
@@ -231,13 +231,13 @@
if ( ValidationRunType.SCHEDULED == context.getRunType() )
{
- if ( context.getLastAlertRun() != null ) // True if no previous alert run
+ if ( context.getLastScheduledRun() != null ) // True if no previous scheduled run
{
- if ( rule.getLastUpdated().before( context.getLastAlertRun() ) )
+ if ( rule.getLastUpdated().before( context.getLastScheduledRun() ) )
{
// Get the "current" DataElementOperands from this rule:
// Left+Right sides for VALIDATION, Left side only for
- // MONITORING
+ // SURVEILLANCE
Collection<DataElementOperand> deos = context.getExpressionService().getOperandsInExpression(
rule.getLeftSide().getExpression() );
@@ -249,12 +249,12 @@
}
// Return true if any data is more recent than the last
- // ALERT run, otherwise return false.
+ // scheduled run, otherwise return false.
evaluate = false;
for ( DataElementOperand deo : deos )
{
Date lastUpdated = lastUpdatedMap.get( deo );
- if ( lastUpdated != null && lastUpdated.after( context.getLastAlertRun() ) )
+ if ( lastUpdated != null && lastUpdated.after( context.getLastScheduledRun() ) )
{
evaluate = true; // True if new/updated data.
break;
@@ -310,7 +310,7 @@
Double rightSideValue = null;
// If ruleType is VALIDATION, the right side is evaluated using the same
- // (current) data values. If ruleType is MONITORING but there are no
+ // (current) data values. If ruleType is SURVEILLANCE but there are no
// data elements in the right side, then it doesn't matter what data
// values we use, so just supply the current data values in order to
// evaluate the (constant) expression.
@@ -322,7 +322,7 @@
currentValueMap, context.getConstantMap(), null );
}
else
- // ruleType equals MONITORING, and there are some data elements in the
+ // ruleType equals SURVEILLANCE, and there are some data elements in the
// right side expression
{
CalendarPeriodType calendarPeriodType = ( CalendarPeriodType ) period.getPeriodType();
@@ -384,11 +384,11 @@
}
/**
- * Evaluates the right side of a monitoring-type validation rule for
+ * Evaluates the right side of a surveillance-type validation rule for
* a given organisation unit and period, and adds the value to a list
* of sample values.
*
- * Note that for a monitoring-type rule, evaluating the right side
+ * Note that for a surveillance-type rule, evaluating the right side
* expression can result in sampling multiple periods and/or child
* organisation units.
*
@@ -397,7 +397,7 @@
* @param source the organisation unit
* @param allowedPeriodTypes the period types in which the data may exist
* @param period the main period for the validation rule evaluation
- * @param rule the monitoring-type rule being evaluated
+ * @param rule the surveillance-type rule being evaluated
* @param sourceDataElements the data elements configured for this
* organisation unit
* @param context the evaluation run context
@@ -434,9 +434,9 @@
/**
* Finds the average right-side sample value. This is used as the right-side
- * expression value to evaluate a monitoring-type rule.
+ * expression value to evaluate a surveillance-type rule.
*
- * @param rule monitoring-type rule being evaluated
+ * @param rule surveillance-type rule being evaluated
* @param sampleValues sample values actually collected
* @param annualSampleCount number of annual samples tried for
* @param sequentialSampleCount number of sequential samples tried for
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/scheduling/MonitoringTask.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/scheduling/MonitoringTask.java 2013-10-16 13:46:59 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/scheduling/MonitoringTask.java 2013-10-16 16:00:05 +0000
@@ -123,7 +123,7 @@
try
{
- alertRun();
+ scheduledRun();
notifier.notify( taskId, INFO, "Monitoring process done", true );
}
@@ -145,7 +145,7 @@
* Evaluates all the validation rules that could generate alerts,
* and sends results (if any) to users who should be notified.
*/
- private void alertRun()
+ private void scheduledRun()
{
// Find all the rules belonging to groups that will send alerts to user roles.
@@ -153,26 +153,26 @@
Collection<OrganisationUnit> sources = organisationUnitService.getAllOrganisationUnits();
Set<Period> periods = getAlertPeriodsFromRules( rules );
- Date lastAlertRun = (Date) systemSettingManager.getSystemSetting( SystemSettingManager.KEY_LAST_ALERT_RUN );
+ Date lastScheduledRun = (Date) systemSettingManager.getSystemSetting( SystemSettingManager.KEY_LAST_MONITORING_RUN );
// Any database changes after this moment will contribute to the next run.
- Date thisAlertRun = new Date();
+ Date thisScheduledRun = new Date();
- log.info( "alertRun sources[" + sources.size() + "] periods[" + periods.size() + "] rules[" + rules.size()
- + "] last run " + lastAlertRun == null ? "(none)" : lastAlertRun );
+ log.info( "Scheduled monitoring run sources[" + sources.size() + "] periods[" + periods.size() + "] rules[" + rules.size()
+ + "] last run " + lastScheduledRun == null ? "(none)" : lastScheduledRun );
Collection<ValidationResult> results = Validator.validate( sources, periods, rules, ValidationRunType.SCHEDULED,
- lastAlertRun, constantService, expressionService, periodService, dataValueService );
+ lastScheduledRun, constantService, expressionService, periodService, dataValueService );
- log.trace( "alertRun() results[" + results.size() + "]" );
+ log.trace( "scheduledRun() results[" + results.size() + "]" );
if ( !results.isEmpty() )
{
- postAlerts( results, thisAlertRun );
+ postAlerts( results, thisScheduledRun );
}
- systemSettingManager.saveSystemSetting( SystemSettingManager.KEY_LAST_ALERT_RUN, thisAlertRun );
+ systemSettingManager.saveSystemSetting( SystemSettingManager.KEY_LAST_MONITORING_RUN, thisScheduledRun );
}
/**
@@ -206,9 +206,10 @@
* these periods actually exist in the database.
*
* TODO If the last successful daily run was more than one day ago, we might
- * add some additional periods of type DailyPeriodType not to miss any alerts.
+ * add some additional periods of type DailyPeriodType not to miss any
+ * alerts.
*
- * @param rules the ValidationRules to be evaluated on this alert run
+ * @param rules the ValidationRules to be evaluated on this run
* @return periods to search for new alerts
*/
private Set<Period> getAlertPeriodsFromRules( Set<ValidationRule> rules )
@@ -251,8 +252,8 @@
}
/**
- * At the end of an ALERT run, post messages to the users who want to see
- * the results.
+ * At the end of a scheduled monitoring run, post messages to the users who
+ * want to see the results.
*
* Create one message for each set of users who receive the same
* subset of results. (Not necessarily the same as the set of users who
@@ -267,9 +268,9 @@
* ( target language, set of results ).
*
* @param validationResults the set of validation error results
- * @param alertRunStart the date/time when the alert run started
+ * @param scheduledRunStart the date/time when this scheduled run started
*/
- private void postAlerts( Collection<ValidationResult> validationResults, Date alertRunStart )
+ private void postAlerts( Collection<ValidationResult> validationResults, Date scheduledRunStart )
{
SortedSet<ValidationResult> results = new TreeSet<ValidationResult>( validationResults );
@@ -277,7 +278,7 @@
for ( Map.Entry<List<ValidationResult>, Set<User>> entry : messageMap.entrySet() )
{
- sendAlertmessage( entry.getKey(), entry.getValue(), alertRunStart );
+ sendAlertmessage( entry.getKey(), entry.getValue(), scheduledRunStart );
}
}
@@ -370,9 +371,9 @@
*
* @param results results to put in this message
* @param users users to receive these results
- * @param alertRunStart date/time when the alert run started
+ * @param scheduledRunStart date/time when the scheduled run started
*/
- private void sendAlertmessage( List<ValidationResult> results, Set<User> users, Date alertRunStart )
+ private void sendAlertmessage( List<ValidationResult> results, Set<User> users, Date scheduledRunStart )
{
StringBuilder messageBuilder = new StringBuilder();
@@ -380,7 +381,7 @@
Map<String, Integer> importanceCountMap = countResultsByImportanceType( results );
- String subject = "DHIS alerts as of " + dateTimeFormatter.format( alertRunStart ) + " - priority High "
+ String subject = "DHIS alerts as of " + dateTimeFormatter.format( scheduledRunStart ) + " - priority High "
+ ( importanceCountMap.get( "high" ) == null ? 0 : importanceCountMap.get( "high" ) ) + ", Medium "
+ ( importanceCountMap.get( "medium" ) == null ? 0 : importanceCountMap.get( "medium" ) ) + ", Low "
+ ( importanceCountMap.get( "low" ) == null ? 0 : importanceCountMap.get( "low" ) );