function _loadMetrics() { foreach ($this->modules as $k => $module) { if (is_array($module->metrics)) { $this->metrics = array_merge_recursive($this->metrics, $module->metrics); } } $metricsByEntityMap = array(); foreach ($this->metrics as $metric => $implementations) { foreach ($implementations as $implementation) { $m = owa_coreAPI::metricFactory($implementation['class'], $implementation['params']); if (!$m->isCalculated()) { $metricsByEntityMap[$m->getEntityName()][$implementation['name']] = $implementation; } } } $this->setMap('metricsByEntity', $metricsByEntityMap); }
function getAllRelatedMetrics($entity) { $related_metrics = array(); $s = owa_coreAPI::serviceSingleton(); $all_metrics = $s->getAllMetrics(); $entity_name = $entity->getName(); $s = owa_coreAPI::serviceSingleton(); $metricsByEntity = $s->getMap('metricsByEntity'); foreach ($all_metrics as $metric_name => $implementations) { foreach ($implementations as $implementation) { $m = owa_coreAPI::metricFactory($implementation['class'], $implementation['params']); if ($m->isCalculated()) { $children = $m->getChildMetrics(); $error = false; foreach ($children as $child) { if (!isset($metricsByEntity[$entity_name][$child])) { $error = true; } } if (!$error) { $related_metrics[$implementation['group']][] = array('name' => $metric_name, 'label' => $implementation['label'], 'description' => $implementation['description'], 'group' => $implementation['group']); continue; } } else { if ($entity_name === $m->getEntityName()) { $related_metrics[$implementation['group']][] = array('name' => $metric_name, 'label' => $implementation['label'], 'description' => $implementation['description'], 'group' => $implementation['group']); continue; } } } } return $related_metrics; }