Autopsy 4.22.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
PersonaAlias.java
Go to the documentation of this file.
1/*
2 * Central Repository
3 *
4 * Copyright 2020 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.autopsy.centralrepository.datamodel;
20
21import java.sql.ResultSet;
22import java.sql.SQLException;
23import java.time.Instant;
24import java.util.ArrayList;
25import java.util.Collection;
26import java.util.Collections;
27import java.util.List;
28import org.apache.commons.lang3.StringUtils;
29
35public class PersonaAlias {
36
37 private static final String SELECT_QUERY_BASE
38 = "SELECT pa.id, pa.persona_id, pa.alias, pa.justification, pa.confidence_id, pa.date_added, pa.examiner_id, e.login_name, e.display_name "
39 + "FROM persona_alias as pa "
40 + "INNER JOIN examiners as e ON e.id = pa.examiner_id ";
41
42 private final long id;
43 private final long personaId;
44 private final String alias;
45 private final String justification;
47 private final long dateAdded;
49
50 public long getId() {
51 return id;
52 }
53
54 public long getPersonaId() {
55 return personaId;
56 }
57
58 public String getAlias() {
59 return alias;
60 }
61
62 public String getJustification() {
63 return justification;
64 }
65
67 return confidence;
68 }
69
70 public long getDateAadded() {
71 return dateAdded;
72 }
73
75 return examiner;
76 }
77
79 this.id = id;
80 this.personaId = personaId;
81 this.alias = alias;
82 this.justification = justification;
83 this.confidence = confidence;
84 this.dateAdded = dateAdded;
85 this.examiner = examiner;
86 }
87
99 static PersonaAlias addPersonaAlias(Persona persona, String alias, String justification, Persona.Confidence confidence) throws CentralRepoException {
100
101 CentralRepoExaminer examiner = getCRInstance().getOrInsertExaminer(System.getProperty("user.name"));
102
103 Instant instant = Instant.now();
104 Long timeStampMillis = instant.toEpochMilli();
105
106 String insertSQL = "INSERT INTO persona_alias (persona_id, alias, justification, confidence_id, date_added, examiner_id ) "
107 + " VALUES ( ?, ?, ?, ?, ?, ?)";
108
109 List<Object> params = new ArrayList<>();
110 params.add(persona.getId());
111 params.add(alias);
112 params.add(StringUtils.isBlank(justification) ? "" : justification);
113 params.add(confidence.getLevelId());
114 params.add(timeStampMillis);
115 params.add(examiner.getId());
116
117 getCRInstance().executeCommand(insertSQL, params);
118
119 String queryClause = SELECT_QUERY_BASE
120 + "WHERE pa.persona_id = ?"
121 + " AND pa.alias = ?"
122 + " AND pa.date_added = ?"
123 + " AND pa.examiner_id = ?";
124
125 List<Object> queryParams = new ArrayList<>();
126 queryParams.add(persona.getId());
127 queryParams.add(alias);
128 queryParams.add(timeStampMillis);
129 queryParams.add(examiner.getId());
130
131 PersonaAliasesQueryCallback queryCallback = new PersonaAliasesQueryCallback();
132 getCRInstance().executeQuery(queryClause, queryParams, queryCallback);
133
134 Collection<PersonaAlias> aliases = queryCallback.getAliases();
135 if (aliases.size() != 1) {
136 throw new CentralRepoException("Alias add query failed");
137 }
138
139 return aliases.iterator().next();
140 }
141
149 static void removePersonaAlias(PersonaAlias alias) throws CentralRepoException {
150 String deleteSQL = " DELETE FROM persona_alias WHERE id = ?";
151
152 List<Object> params = new ArrayList<>();
153 params.add(alias.getId());
154
155 getCRInstance().executeCommand(deleteSQL, params);
156 }
157
165 static void modifyPersonaAlias(PersonaAlias alias, Persona.Confidence confidence, String justification) throws CentralRepoException {
166 CentralRepository cr = CentralRepository.getInstance();
167
168 if (cr == null) {
169 throw new CentralRepoException("Failed to modify persona alias, Central Repo is not enabled");
170 }
171
172 String updateClause = "UPDATE persona_alias SET confidence_id = ?, justification = ? WHERE id = ?";
173
174 List<Object> params = new ArrayList<>();
175 params.add(confidence.getLevelId());
176 params.add(StringUtils.isBlank(justification) ? "" : justification);
177 params.add(alias.getId());
178
179 cr.executeCommand(updateClause, params);
180 }
181
185 static class PersonaAliasesQueryCallback implements CentralRepositoryDbQueryCallback {
186
187 private final Collection<PersonaAlias> personaAliases = new ArrayList<>();
188
189 @Override
190 public void process(ResultSet rs) throws SQLException {
191
192 while (rs.next()) {
193 CentralRepoExaminer examiner = new CentralRepoExaminer(
194 rs.getInt("examiner_id"),
195 rs.getString("login_name"));
196
198 rs.getLong("id"),
199 rs.getLong("persona_id"),
200 rs.getString("alias"),
201 rs.getString("justification"),
202 Persona.Confidence.fromId(rs.getInt("confidence_id")),
203 Long.parseLong(rs.getString("date_added")),
204 examiner);
205
206 personaAliases.add(alias);
207 }
208 }
209
210 Collection<PersonaAlias> getAliases() {
211 return Collections.unmodifiableCollection(personaAliases);
212 }
213 };
214
223 public static Collection<PersonaAlias> getPersonaAliases(long personaId) throws CentralRepoException {
224 String queryClause = SELECT_QUERY_BASE
225 + "WHERE pa.persona_id = ?";
226
227 List<Object> params = new ArrayList<>();
228 params.add(personaId);
229
230 PersonaAliasesQueryCallback queryCallback = new PersonaAliasesQueryCallback();
231 getCRInstance().executeQuery(queryClause, params, queryCallback);
232
233 return queryCallback.getAliases();
234 }
235
246
247 if (instance == null) {
248 throw new CentralRepoException("Failed to get instance of CentralRespository, CR was null");
249 }
250
251 return instance;
252 }
253}
static Collection< PersonaAlias > getPersonaAliases(long personaId)
PersonaAlias(long id, long personaId, String alias, String justification, Persona.Confidence confidence, long dateAdded, CentralRepoExaminer examiner)
CentralRepoExaminer getOrInsertExaminer(String examinerLoginName)
void executeQuery(String sql, List< Object > params, CentralRepositoryDbQueryCallback queryCallback)

Copyright © 2012-2024 Sleuth Kit Labs. Generated on:
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.