Sleuth Kit Java Bindings (JNI) 4.14.0
Java bindings for using The Sleuth Kit
Loading...
Searching...
No Matches
Score.java
Go to the documentation of this file.
1/*
2 * Sleuth Kit Data Model
3 *
4 * Copyright 2020-2021 Basis Technology Corp.
5 * Contact: carrier <at> sleuthkit <dot> org
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 */
19package org.sleuthkit.datamodel;
20
21import java.util.Arrays;
22import java.util.Comparator;
23import java.util.ResourceBundle;
24
64public class Score implements Comparable<Score> {
65
66 private static final ResourceBundle bundle = ResourceBundle.getBundle("org.sleuthkit.datamodel.Bundle");
75 public enum Significance {
76
77 // Enum name must not have any spaces.
78
79 /* Notes on the ordinal numbers: We defined these so that we could easily
80 * compare values while also have some concept of grouping.
81 * The 1x values are a higher confidence than the 0x files.
82 * NOTABLE (x9) has priority over NOT NOTABLE (x8).
83 * If we need to make this more complicated in the future, we can add
84 * other groupings, such as 14 and 15.
85 */
86
88 UNKNOWN(0, "Unknown", "Significance.Unknown.displayName.text"),
89
91 LIKELY_NONE(8, "LikelyNone", "Significance.LikelyNone.displayName.text"),
92
94 LIKELY_NOTABLE(9, "LikelyNotable", "Significance.LikelyNotable.displayName.text"),
95
97 NONE(18, "None", "Significance.None.displayName.text"),
98
100 NOTABLE(19, "Notable", "Significance.Notable.displayName.text");
101
102 private final int id;
103 private final String name; // name must not have spaces
104 private final String displayNameKey; // display name is loaded from resource bundle using this key.
105
106 private Significance(int id, String name, String displayNameKey) {
107 this.id = id;
108 this.name = name;
109 this.displayNameKey = displayNameKey;
110 }
111
112 public static Significance fromString(String name) {
113 return Arrays.stream(values())
114 .filter(val -> val.getName().equals(name))
115 .findFirst().orElse(NONE);
116 }
117
118 static public Significance fromID(int id) {
119 return Arrays.stream(values())
120 .filter(val -> val.getId() == id)
121 .findFirst().orElse(NONE);
122 }
123
129 public int getId() {
130 return id;
131 }
132
139 public String getName() {
140 return name;
141 }
142
149 public String getDisplayName() {
150 return bundle.getString(displayNameKey);
151 }
152
153 @Override
154 public String toString() {
155 return name;
156 }
157 }
158
162 public enum Priority {
163
164 // Name must not have any spaces.
165 NORMAL(0, "Normal", "Score.Priority.Normal.displayName.text"),
166 OVERRIDE(10, "Override", "Score.Priority.Override.displayName.text");
167
168 private final int id;
169 private final String name;
170 private final String displayNameKey; // display name is loaded from resource bundle using this key.
171
172 private Priority(int id, String name, String displayNameKey) {
173 this.id = id;
174 this.name = name;
175 this.displayNameKey = displayNameKey;
176 }
177
178 public static Priority fromString(String name) {
179 return Arrays.stream(values())
180 .filter(val -> val.getName().equals(name))
181 .findFirst().orElse(NORMAL);
182 }
183
184 static public Priority fromID(int id) {
185 return Arrays.stream(values())
186 .filter(val -> val.getId() == id)
187 .findFirst().orElse(NORMAL);
188 }
189
190 public int getId() {
191 return id;
192 }
193
194 public String getName() {
195 return name;
196 }
197
198 public String getDisplayName() {
199 return bundle.getString(displayNameKey);
200 }
201
202 @Override
203 public String toString() {
204 return name;
205 }
206 }
207
212
214
215 // Score is a combination of significance and priority.
216 private final Significance significance;
217 private final Priority priority;
218
219 public Score(Significance significance, Priority priority) {
220 this.significance = significance;
221 this.priority = priority;
222 }
223
225 return significance;
226 }
227
229 return priority;
230 }
231
232 @Override
233 public int compareTo(Score other) {
234 // A score is a combination of significance & priority.
235 // Priority Override overrides Normal.
236 // If two results have same priority, then the higher significance wins.
237 if (this.getPriority() != other.getPriority()) {
238 return this.getPriority().ordinal() - other.getPriority().ordinal();
239 } else {
240 return this.getSignificance().ordinal() - other.getSignificance().ordinal();
241 }
242 }
243
244 public static final Comparator<Score> getScoreComparator() {
245 return (Score score1, Score score2) -> {
246 return score1.compareTo(score2);
247 };
248 }
249}
Significance getSignificance()
Definition Score.java:224
static final Comparator< Score > getScoreComparator()
Definition Score.java:244
static final Score SCORE_LIKELY_NOTABLE
Definition Score.java:209
int compareTo(Score other)
Definition Score.java:233
static final Score SCORE_UNKNOWN
Definition Score.java:213
Score(Significance significance, Priority priority)
Definition Score.java:219
static final Score SCORE_NOTABLE
Definition Score.java:208
static final Score SCORE_LIKELY_NONE
Definition Score.java:210
static final Score SCORE_NONE
Definition Score.java:211
static Priority fromID(int id)
Definition Score.java:184
static Priority fromString(String name)
Definition Score.java:178
static Significance fromID(int id)
Definition Score.java:118
UNKNOWN
no significance assigned yet.
Definition Score.java:88
static Significance fromString(String name)
Definition Score.java:112
LIKELY_NOTABLE
likely bad, suspicious
Definition Score.java:94

Copyright © 2011-2024 Brian Carrier. (carrier -at- sleuthkit -dot- org)
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.