public bool CheckEntity(float value, AlertMeasure measure, MeasureDiff diff) { if (value < 0) { return(false); } if (measure == null) { return(false); } try { MeasuredParameters ret = new MeasuredParameters(); bool bRet = false; ret = CheckMeasure(measure, value, diff); if (ret != null && ret.Count > 0) { AllocateReport(ret, measure.AlertMeasureName, diff); //If we have something to report about - also flush it into the database. Flush(ret); bRet = true; } return(bRet); } catch (Exception ex) { Log.Write("Exception in CheckEntity", ex); return(false); } }
protected bool Evaluate(float value, float compare, MeasureDiff diff) { bool bRet = false; switch (diff) { case MeasureDiff.Equal: { if (value == compare) { bRet = true; } else { bRet = false; } break; } case MeasureDiff.Large: { if (value > compare) { bRet = true; } else { bRet = false; } break; } case MeasureDiff.Smaller: { //AP - what we want here is actually if the delta is smaller than -VALUE float neg = 0 - compare; if (value < neg) { bRet = true; } else { bRet = false; } break; } } return(bRet); }
public Hashtable Get(MeasureDiff diff) { Hashtable ret = new Hashtable(); if (diff == MeasureDiff.Unknown) { return(ret); } IDictionaryEnumerator ide = GetEnumerator(); ide.Reset(); while (ide.MoveNext()) { Report r = (Report)ide.Value; if (r.DifferenceType == diff) { ret.Add(ide.Key, ide.Value); } } return(ret); }
/* Rules */ protected virtual MeasuredParameters CheckMeasure(AlertMeasure measure, float value, MeasureDiff diff) { AlertMeasures measures = null; if (!ParentWorkflow.InternalParameters.Contains("AlertMeasures")) { measures = new AlertMeasures(); ParentWorkflow.InternalParameters.Add("AlertMeasures", measures); } else { measures = (AlertMeasures)ParentWorkflow.InternalParameters["AlertMeasures"]; } MeasuredParameters ret = new MeasuredParameters(); for (int i = 0; i < _results.Count; i++) { try { MeasuredParameter mp = (MeasuredParameter)_results[i]; if (measure.CompositeMeasure) { if (measure.Evaluate(mp, value, diff, measures)) { ret.Add(mp.GK, mp); } } else { if (Evaluate(mp.ValueFromMeasure(measure.AlertMeasureName), value, diff)) { ret.Add(mp.GK, mp); } } } catch (Exception ex) { Log.Write("Exception occured while adding measured parameters", ex); continue;; } } return(ret); }
protected void AllocateReport(MeasuredParameters mps, string measure, MeasureDiff diff) { if (ParentWorkflow.InternalParameters.ContainsKey("Reports")) { Hashtable currentReports = (Hashtable)ParentWorkflow.InternalParameters["Reports"]; if (currentReports.ContainsKey(_entityType)) { Reports entReports = (Reports)currentReports[_entityType]; if (entReports.ContainsDifference(diff)) { //We have a report which contains this type of difference. Report curReport = (Report)entReports[diff]; curReport.MeasuredParameters.Append(mps); curReport.Processed = false; curReport.DifferenceType = diff; if (!curReport.Measures.Contains(MeasuredParameter.FromString(measure))) { curReport.Measures.Add(MeasuredParameter.FromString(measure)); } entReports[diff] = curReport; } else { //We do not have a report which contains this type of difference. Report r = new Report(); r.MeasuredParameters.Append(mps); r.Processed = false; r.Name = this.Name; r.DifferenceType = diff; r.Measures.Add(MeasuredParameter.FromString(measure)); entReports.Add(diff, r); } currentReports[_entityType] = entReports; } else { //We do not have a report for this entity type. Report r = new Report(); r.MeasuredParameters.Append(mps); r.Processed = false; r.Name = this.Name; r.DifferenceType = diff; r.Measures.Add(MeasuredParameter.FromString(measure)); if (ParentWorkflow.InternalParameters.ContainsKey("AccountFilters")) { r.Filters = (AccountAlertFilters)ParentWorkflow.InternalParameters["AccountFilters"]; } r.Account = Convert.ToInt32(ParentWorkflow.Parameters["AccountID"]); Reports ht = new Reports(); ht.Add(diff, r); currentReports.Add(_entityType, ht); ParentWorkflow.InternalParameters["Reports"] = currentReports; } } else { Report r = new Report(); r.MeasuredParameters.Append(mps); r.Processed = false; r.Name = this.Name; r.DifferenceType = diff; r.Measures.Add(MeasuredParameter.FromString(measure)); if (ParentWorkflow.InternalParameters.ContainsKey("AccountFilters")) { r.Filters = (AccountAlertFilters)ParentWorkflow.InternalParameters["AccountFilters"]; } r.Account = Convert.ToInt32(ParentWorkflow.Parameters["AccountID"]); Reports ht = new Reports(); ht.Add(diff, r); Hashtable reports = new Hashtable(); reports.Add(_entityType, ht); ParentWorkflow.InternalParameters.Add("Reports", reports); } }
public bool ContainsDifference(MeasureDiff diff) { return(Get(diff).Count > 0); }