org.hackystat.telemetry.analyzer.reducer.impl
Class CouplingReducer

java.lang.Object
  extended by org.hackystat.telemetry.analyzer.reducer.impl.CouplingReducer
All Implemented Interfaces:
TelemetryReducer

public class CouplingReducer
extends java.lang.Object
implements TelemetryReducer

Returns a single stream providing a Coupling value.

Options:

  1. coupling: One of 'Afferent', 'Efferent', or 'All'. Defaults to 'All'.
  2. mode: One of 'Total', 'Average', or 'TotalInstancesAboveThreshold'. Defaults to 'Average'. Note that the value returned depends upon the value selected for coupling.
  3. type: A string indicating the type of coupling. Defaults to 'class'. Could also be 'package'.
  4. threshold: A string indicating the threshold value. Defaults to '10'. This parameter is ignored unless the mode is 'TotalAboveThreshold', in which case it must be parsed to an integer.
  5. tool: The tool whose sensor data is to be used to calculate the coupling information. Defaults to 'DependencyFinder'.

Author:
Philip Johnson

Nested Class Summary
static class CouplingReducer.Coupling
          Possible mode values.
static class CouplingReducer.Mode
          Possible mode values.
 
Constructor Summary
CouplingReducer()
           
 
Method Summary
 TelemetryStreamCollection compute(org.hackystat.sensorbase.resource.projects.jaxb.Project project, org.hackystat.dailyprojectdata.client.DailyProjectDataClient dpdClient, org.hackystat.utilities.time.interval.Interval interval, java.lang.String[] options)
          Computes and returns the required telemetry streams object.
(package private)  java.lang.Double getData(org.hackystat.dailyprojectdata.client.DailyProjectDataClient dpdClient, org.hackystat.sensorbase.resource.projects.jaxb.Project project, org.hackystat.utilities.time.period.Day startDay, org.hackystat.utilities.time.period.Day endDay, CouplingReducer.Coupling coupling, CouplingReducer.Mode mode, java.lang.String type, int threshold, java.lang.String tool)
          Returns a Coupling value for the specified time interval, or null if no SensorData.
(package private)  TelemetryStream getStream(org.hackystat.dailyprojectdata.client.DailyProjectDataClient dpdClient, org.hackystat.sensorbase.resource.projects.jaxb.Project project, org.hackystat.utilities.time.interval.Interval interval, CouplingReducer.Coupling coupling, CouplingReducer.Mode mode, java.lang.String type, int threshold, java.lang.String tool, java.lang.Object streamTagValue)
          Gets the telemetry stream.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CouplingReducer

public CouplingReducer()
Method Detail

compute

public TelemetryStreamCollection compute(org.hackystat.sensorbase.resource.projects.jaxb.Project project,
                                         org.hackystat.dailyprojectdata.client.DailyProjectDataClient dpdClient,
                                         org.hackystat.utilities.time.interval.Interval interval,
                                         java.lang.String[] options)
                                  throws TelemetryReducerException
Computes and returns the required telemetry streams object.

Specified by:
compute in interface TelemetryReducer
Parameters:
project - The project.
dpdClient - The DPD Client.
interval - The interval.
options - The optional parameters.
Returns:
Telemetry stream collection.
Throws:
TelemetryReducerException - If there is any error.

getStream

TelemetryStream getStream(org.hackystat.dailyprojectdata.client.DailyProjectDataClient dpdClient,
                          org.hackystat.sensorbase.resource.projects.jaxb.Project project,
                          org.hackystat.utilities.time.interval.Interval interval,
                          CouplingReducer.Coupling coupling,
                          CouplingReducer.Mode mode,
                          java.lang.String type,
                          int threshold,
                          java.lang.String tool,
                          java.lang.Object streamTagValue)
                    throws java.lang.Exception
Gets the telemetry stream.

Parameters:
dpdClient - The DailyProjectData client we will contact for the data.
project - The project.
interval - The interval.
coupling - The coupling.
mode - The mode.
type - The type.
threshold - The threshold (if mode is TOTALABOVETHRESHOLD).
tool - The tool whose sensor data will be used.
streamTagValue - The tag for the generated telemetry stream.
Returns:
The telemetry stream as required.
Throws:
java.lang.Exception - If there is any error.

getData

java.lang.Double getData(org.hackystat.dailyprojectdata.client.DailyProjectDataClient dpdClient,
                         org.hackystat.sensorbase.resource.projects.jaxb.Project project,
                         org.hackystat.utilities.time.period.Day startDay,
                         org.hackystat.utilities.time.period.Day endDay,
                         CouplingReducer.Coupling coupling,
                         CouplingReducer.Mode mode,
                         java.lang.String type,
                         int threshold,
                         java.lang.String tool)
                   throws TelemetryReducerException
Returns a Coupling value for the specified time interval, or null if no SensorData. We work backward through the time interval, and return a Coupling value for the first day in the interval for which Coupling data exists.

Parameters:
dpdClient - The DailyProjectData client we will use to get this data.
project - The project.
startDay - The start day (inclusive).
endDay - The end day (inclusive).
coupling - The coupling.
mode - The mode.
type - The type.
threshold - The threshold, if mode is TOTALINSTANCESABOVETHRESHOLD.
tool - The tool whose sensor data will be used.
Returns:
The coupling value, or null if there is no coupling SensorData in that period.
Throws:
TelemetryReducerException - If anything goes wrong.