]> source.dussan.org Git - sonarqube.git/blob
1b2ccff2f89c67a8c297f729834158303df75467
[sonarqube.git] /
1 /*
2  * SonarQube
3  * Copyright (C) 2009-2023 SonarSource SA
4  * mailto:info AT sonarsource DOT com
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 3 of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19  */
20 package org.sonar.ce.task.projectanalysis.event;
21
22 import java.util.Objects;
23 import javax.annotation.Nullable;
24 import javax.annotation.concurrent.Immutable;
25
26 import static java.util.Objects.requireNonNull;
27
28 @Immutable
29 public class Event {
30   private final String name;
31   private final Category category;
32   @Nullable
33   private final String data;
34   @Nullable
35   private final String description;
36
37   private Event(String name, Category category, @Nullable String data, @Nullable String description) {
38     this.name = requireNonNull(name);
39     this.category = requireNonNull(category);
40     this.data = data;
41     this.description = description;
42   }
43
44   private Event(String name, Category category) {
45     this.name = requireNonNull(name);
46     this.category = requireNonNull(category);
47     this.data = null;
48     this.description = null;
49   }
50
51   public static Event createAlert(String name, @Nullable String data, @Nullable String description) {
52     return new Event(name, Category.ALERT, data, description);
53   }
54
55   public static Event createProfile(String name, @Nullable String data, @Nullable String description) {
56     return new Event(name, Category.PROFILE, data, description);
57   }
58
59   public static Event createIssueDetection(String name) {
60     return new Event(name, Category.ISSUE_DETECTION);
61   }
62
63   public String getName() {
64     return name;
65   }
66
67   public Category getCategory() {
68     return category;
69   }
70
71   public String getData() {
72     return data;
73   }
74
75   @Nullable
76   public String getDescription() {
77     return description;
78   }
79
80   @Override
81   public boolean equals(@Nullable Object o) {
82     if (this == o) {
83       return true;
84     }
85     if (o == null || getClass() != o.getClass()) {
86       return false;
87     }
88     Event event = (Event) o;
89     return Objects.equals(name, event.name) &&
90         Objects.equals(category, event.category);
91   }
92
93   @Override
94   public int hashCode() {
95     return Objects.hash(name, category);
96   }
97
98   public enum Category {
99     ALERT, PROFILE, ISSUE_DETECTION
100   }
101
102 }