MetricsReporter.st
changeset 635 fd5ef9e8821e
parent 633 5de8b3529754
child 639 ed6e926776b7
--- a/MetricsReporter.st	Thu Mar 24 05:03:44 2016 +0000
+++ b/MetricsReporter.st	Thu Mar 24 12:52:27 2016 +0100
@@ -21,6 +21,13 @@
 	category:'SUnit-Smalltalk/X-Report'
 !
 
+Object subclass:#MetricInfo
+	instanceVariableNames:'shortName longName metricValue errorMessage'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:MetricsReporter
+!
+
 !MetricsReporter class methodsFor:'documentation'!
 
 copyright
@@ -252,34 +259,42 @@
 !
 
 metricInfoFor:metric
+    |metricValue errorMessageOrNil|
+    
     Error handle:[:ex |
-        ^ { metric class shortName . metric class descriptiveName . 0 . ex description }
+        metricValue := 0.
+        errorMessageOrNil := ex description.
     ] do:[    
-        ^ { metric class shortName . metric class descriptiveName . metric metricValue . nil }
+        metricValue := metric metricValue
     ].
+    ^ MetricInfo new
+        shortName:metric class shortName 
+        longName:metric class descriptiveName 
+        metricValue:metricValue 
+        errorMessage:errorMessageOrNil
 !
 
 packageMetricValue:metricName for:aPackageIDOrPattern
     |overAllInfo|
 
-    aPackageIDOrPattern includesMatchCharacters ifTrue:[
-        Smalltalk allProjectIDs do:[:eachPackageID |
-            |thisInfo|
+    aPackageIDOrPattern includesMatchCharacters ifFalse:[
+        ^ self metricInfoFor:(OOM::PackageMetrics type:metricName for:aPackageIDOrPattern).
+    ].
+    
+    Smalltalk allProjectIDs do:[:eachPackageID |
+        |thisInfo|
 
-            (eachPackageID matches:aPackageIDOrPattern) ifTrue:[
-                thisInfo := self metricInfoFor:(OOM::PackageMetrics type:metricName for:eachPackageID).
-                overAllInfo isNil ifTrue:[
-                    overAllInfo := thisInfo
-                ] ifFalse:[
-                    "/ kludge: only works with accumulative metrics (i.e. not with averages etc.)
-                    overAllInfo at:(overAllInfo size) put:(overAllInfo last + thisInfo last).   
-                ].
+        (eachPackageID matches:aPackageIDOrPattern) ifTrue:[
+            thisInfo := self metricInfoFor:(OOM::PackageMetrics type:metricName for:eachPackageID).
+            overAllInfo isNil ifTrue:[
+                overAllInfo := thisInfo
+            ] ifFalse:[
+                "/ kludge: only works with accumulative metrics (i.e. not with averages etc.)
+                overAllInfo metricValue:(overAllInfo metricValue + thisInfo metricValue).   
             ].
         ].
-        ^ overAllInfo
-    ] ifFalse:[
-        ^ self metricInfoFor:(OOM::PackageMetrics type:metricName for:aPackageIDOrPattern).
     ].
+    ^ overAllInfo
 ! !
 
 !MetricsReporter methodsFor:'reporting'!
@@ -314,11 +329,11 @@
 reportXml_metricValues:metricValues
     |metricShortName metricLongName metricValue possibleErrorMessage|
 
-    metricValues do:[:eachTuple |
-        metricShortName := eachTuple first.
-        metricLongName := eachTuple second.
-        metricValue := eachTuple third.
-        possibleErrorMessage := eachTuple at:4 ifAbsent:nil.
+    metricValues do:[:eachMetricInfo |
+        metricShortName := eachMetricInfo shortName.
+        metricLongName := eachMetricInfo longName.
+        metricValue := eachMetricInfo metricValue.
+        possibleErrorMessage := eachMetricInfo errorMessage.
         possibleErrorMessage notNil ifTrue:[
             metricLongName := metricLongName , '(Error: ',possibleErrorMessage,')'.
         ].    
@@ -446,6 +461,47 @@
     ^ ('report' , format asString asUppercaseFirst) asSymbol
 ! !
 
+!MetricsReporter::MetricInfo methodsFor:'accessing'!
+
+errorMessage
+    ^ errorMessage
+!
+
+errorMessage:something
+    errorMessage := something.
+!
+
+longName
+    ^ longName
+!
+
+longName:something
+    longName := something.
+!
+
+metricValue
+    ^ metricValue
+!
+
+metricValue:aNumber
+    metricValue := aNumber.
+!
+
+shortName
+    ^ shortName
+!
+
+shortName:something
+    shortName := something.
+!
+
+shortName:shortNameArg longName:longNameArg metricValue:valueArg errorMessage:errorMessageArg 
+    shortName := shortNameArg.
+    longName := longNameArg.
+    metricValue := valueArg.
+    errorMessage := errorMessageArg.
+! !
+
 !MetricsReporter class methodsFor:'documentation'!
 
 version