From 5a5832c48abb9d8cbd3f9673ff7ccc5f4d1bd7cd Mon Sep 17 00:00:00 2001 From: Timo Pagel Date: Wed, 13 Dec 2023 17:11:51 +0100 Subject: [PATCH] feat: Add dashboard generation --- .../controller/GrafanaController.java | 9 - .../GrafanaOverviewDashboardController.java | 176 ------------------ 2 files changed, 185 deletions(-) delete mode 100644 src/main/java/org/owasp/dsomm/metricca/analyzer/controller/GrafanaOverviewDashboardController.java diff --git a/src/main/java/org/owasp/dsomm/metricca/analyzer/controller/GrafanaController.java b/src/main/java/org/owasp/dsomm/metricca/analyzer/controller/GrafanaController.java index 47ab95d..b673443 100644 --- a/src/main/java/org/owasp/dsomm/metricca/analyzer/controller/GrafanaController.java +++ b/src/main/java/org/owasp/dsomm/metricca/analyzer/controller/GrafanaController.java @@ -30,16 +30,7 @@ public class GrafanaController { @Autowired private OverviewDashboard overviewDashboard; - @RequestMapping(value = "/teamdashboard", method = RequestMethod.GET, produces="application/json") - @ResponseBody - public String getTeamDashboard() throws Exception { - PanelConfiguration panelConfiguration = new PanelConfiguration("Team Dashboard", "timeseries", "teamdashboard"); - ArrayList panelConfigurations = new ArrayList(); - panelConfigurations.add(panelConfiguration); - panelConfigurations.add(new PanelConfiguration("zweites Panel", "timeseries", "blabl")); - return overviewDashboard.getDashboard(panelConfigurations); - } @RequestMapping(value = "/activities", method = RequestMethod.GET) @ResponseBody public Collection getActivities() throws Exception { diff --git a/src/main/java/org/owasp/dsomm/metricca/analyzer/controller/GrafanaOverviewDashboardController.java b/src/main/java/org/owasp/dsomm/metricca/analyzer/controller/GrafanaOverviewDashboardController.java deleted file mode 100644 index a136dff..0000000 --- a/src/main/java/org/owasp/dsomm/metricca/analyzer/controller/GrafanaOverviewDashboardController.java +++ /dev/null @@ -1,176 +0,0 @@ -package org.owasp.dsomm.metricca.analyzer.controller; - -import org.eclipse.jgit.api.errors.GitAPIException; -import org.owasp.dsomm.metricca.analyzer.grafana.OverviewDashboard; -import org.owasp.dsomm.metricca.analyzer.grafana.PanelConfiguration; -import org.owasp.dsomm.metricca.analyzer.model.FlattenDate; -import org.owasp.dsomm.metricca.analyzer.yaml.deserialization.Activity; -import org.owasp.dsomm.metricca.analyzer.yaml.deserialization.Application; -import org.owasp.dsomm.metricca.analyzer.yaml.deserialization.ApplicationDirector; -import org.owasp.dsomm.metricca.analyzer.yaml.deserialization.components.DateComponent; -import org.owasp.dsomm.metricca.analyzer.yaml.deserialization.components.DatePeriodComponent; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; - -import java.io.IOException; -import java.util.*; - -@Controller -public class GrafanaOverviewDashboardController { - private static final Logger logger = LoggerFactory.getLogger(GrafanaOverviewDashboardController.class); - - @Autowired - private ApplicationDirector applicationDirector; - - @Autowired - private OverviewDashboard overviewDashboard; - - @RequestMapping(value = "/activities", method = RequestMethod.GET) - @ResponseBody - public Collection getActivities() throws Exception { - Collection activities = new ArrayList(); - for (Application application : applicationDirector.getApplications()) { - activities.addAll(application.getActivities()); - } - return activities; - } - - @RequestMapping(value = "/activity/{activityName}/nodate", method = RequestMethod.GET) - @ResponseBody - public HashMap getActivitiesSimpleNoDate(@PathVariable String activityName) throws Exception { - HashMap activityMap = new HashMap(); - for (Application application : applicationDirector.getApplications()) { - for (Activity activity : application.getActivities(activityName)) { - if (activity.getName().equals(activityName)) { - activityMap.put(application.getTeam(), activity); - } - } - } - return activityMap; - } - - @RequestMapping(value = "/", method = RequestMethod.GET) - @ResponseBody - public Collection getApplications() throws Exception { - return applicationDirector.getApplications(); - } - - @RequestMapping(value = "/team/{teamName}/applications", method = RequestMethod.GET) - @ResponseBody - public Collection getTeamApplications(@PathVariable String teamName) throws Exception { - Collection applicationsToReturn = new ArrayList(); - for (Application application : applicationDirector.getApplications()) { - if (application.getTeam().equals(teamName)) { - applicationsToReturn.add(application); - } - } - return applicationsToReturn; - } - - @RequestMapping(value = "/team/{teamName}/applicationIds", method = RequestMethod.GET) - @ResponseBody - public Collection getTeamApplicationIds(@PathVariable String teamName) throws Exception { - Collection applicationsToReturn = new ArrayList(); - for (Application application : applicationDirector.getApplications()) { - if (application.getTeam().equals(teamName)) { - applicationsToReturn.add(application.getApplication()); - } - } - return applicationsToReturn; - } - - @RequestMapping(value = "/activity/{activityName}/simple", method = RequestMethod.GET) - @ResponseBody - public Collection getActivitiesFlatSimple(@PathVariable String activityName) throws Exception { - return applicationDirector.getActivitiesFlat(activityName); - } - - @RequestMapping(value = "/team/{teamName}/application/{application}/activity/{activityName}/simple", method = RequestMethod.GET) - @ResponseBody - public Collection getActivitiesPerTeamFlatSimple(@PathVariable String teamName, @PathVariable String application, @PathVariable String activityName) throws Exception { - return applicationDirector.getActivitiesPerTeamAndApplicationFlat(teamName, application, activityName); - } - - @RequestMapping(value = "/activity/{activityName}/date", method = RequestMethod.GET) - @ResponseBody - public Collection getActivitiesFlat(@PathVariable String activityName) throws Exception { - Collection flattenedActivitiesToReturn = new ArrayList(); - Collection datesFromActivities = applicationDirector.getDatesFromActivities(activityName); - for (Date date : datesFromActivities) { - FlattenDate flattenDate = new FlattenDate(date); - for (Application application : applicationDirector.getApplications()) { - for (Activity activity : application.getActivities(activityName)) { - boolean value = false; - - DateComponent dateComponent = activity.getMatchingDatePeriodComponent(date); - logger.debug("dateComponent: " + dateComponent); - if (dateComponent != null) { - logger.debug("date == dateComponent.getValue()" + dateComponent.getValue()); - if (dateComponent instanceof DatePeriodComponent) { - logger.debug("Found activity: " + activity.getName() + " in application: " + application.getApplication() + " with datePeriodComponent: " + dateComponent + " team: " + application.getTeam()); - value = ((DatePeriodComponent) dateComponent).isActive(); - } else { - value = true; - } - } else { - dateComponent = activity.getClosestBeforeDatePeriodComponent(date); - if (dateComponent != null) { - value = ((DatePeriodComponent) dateComponent).isActive(); - logger.debug("Found activity without matching date component: " + activity.getName() + " in application: " + application.getApplication() + " with closest dateComponent: " + dateComponent + "for date: " + date + " team: " + application.getTeam() + "and value: " + value); - } - } - flattenDate.addDynamicField(application.getTeam() + "-" + application.getApplication(), value); - } - } - flattenedActivitiesToReturn.add(flattenDate); - } - logger.debug("activitiesToReturn: " + flattenedActivitiesToReturn); - return flattenedActivitiesToReturn; - } - - @RequestMapping(value = "/team/{teamName}/application/{applicationId}/activity/{activityName}", method = RequestMethod.GET) - @ResponseBody - public Collection getTeamActivity(@PathVariable String teamName, @PathVariable String applicationId, @PathVariable String activityName) throws Exception { - Collection activitiesToReturn = new ArrayList(); - for (Application application : applicationDirector.getApplications()) { - if (application.getTeam().equals(teamName)) { - if (application.getApplication().equals(applicationId)) { - for (Activity activity : application.getActivities()) { - if (activity.getName().equals(activityName)) { - logger.debug("Found activity: " + activity.getName() + " in application: " + application.getApplication()); - activitiesToReturn.add(activity); - } - } - } - } - } - logger.debug("activitiesToReturn: " + activitiesToReturn); - return activitiesToReturn; - } - - @RequestMapping(value = "/applications", method = RequestMethod.GET) - @ResponseBody - public Collection getApplicationIds() throws IOException, GitAPIException { - Set applicationIds = new HashSet<>(); - for (Application application : applicationDirector.getApplications()) { - applicationIds.add(application.getApplication()); - } - return applicationIds; - } - - @RequestMapping(value = "/teams", method = RequestMethod.GET) - @ResponseBody - public Collection getTeams() throws IOException, GitAPIException { - Set teams = new HashSet<>(); - for (Application application : applicationDirector.getApplications()) { - teams.add(application.getTeam()); - } - return teams; - } -} \ No newline at end of file