19 package org.sleuthkit.autopsy.centralrepository.datamodel;
21 import java.sql.ResultSet;
22 import java.sql.SQLException;
23 import java.time.Instant;
24 import java.util.ArrayList;
25 import java.util.Collection;
26 import java.util.Collections;
27 import org.apache.commons.lang3.StringUtils;
40 "SELECT pmd.id, pmd.persona_id, pmd.name, pmd.value, pmd.justification, pmd.confidence_id, pmd.date_added, pmd.examiner_id, e.login_name, e.display_name "
41 +
"FROM persona_metadata as pmd "
42 +
"INNER JOIN examiners as e ON e.id = pmd.examiner_id ";
44 private final long id;
112 Instant instant = Instant.now();
113 Long timeStampMillis = instant.toEpochMilli();
115 String insertClause =
" INTO persona_metadata (persona_id, name, value, justification, confidence_id, date_added, examiner_id ) "
119 +
"'" + value +
"', "
120 +
"'" + ((StringUtils.isBlank(justification) ?
"" : SleuthkitCase.escapeSingleQuotes(justification))) +
"', "
122 + timeStampMillis.toString() +
", "
128 String queryClause = SELECT_QUERY_BASE
129 +
"WHERE pmd.persona_id = " + personaId
130 +
" AND pmd.name = '" + name +
"'"
131 +
" AND pmd.value = '" + value +
"'"
132 +
" AND pmd.date_added = " + timeStampMillis
133 +
" AND pmd.examiner_id = " + examiner.
getId();
135 PersonaMetadataQueryCallback queryCallback =
new PersonaMetadataQueryCallback();
138 Collection<PersonaMetadata> metadata = queryCallback.getMetadataList();
139 if (metadata.size() != 1) {
140 throw new CentralRepoException(
"Metadata add query failed");
143 return metadata.iterator().next();
153 static void removePersonaMetadata(
PersonaMetadata metadata)
throws CentralRepoException {
154 String deleteClause =
" DELETE FROM persona_metadata WHERE id = " + metadata.getId();
165 static void modifyPersonaMetadata(
PersonaMetadata metadata, Persona.Confidence
confidence, String justification)
throws CentralRepoException {
166 CentralRepository cr = CentralRepository.getInstance();
169 throw new CentralRepoException(
"Failed to modify persona metadata, Central Repo is not enabled");
172 String updateClause =
"UPDATE persona_metadata SET confidence_id = " +
confidence.getLevelId() +
", justification = '" + justification +
"' WHERE id = " + metadata.
id;
173 cr.executeUpdateSQL(updateClause);
181 Collection<PersonaMetadata> personaMetadataList =
new ArrayList<>();
184 public void process(ResultSet rs)
throws SQLException {
188 rs.getInt(
"examiner_id"),
189 rs.getString(
"login_name"));
193 rs.getLong(
"persona_id"),
194 rs.getString(
"name"),
195 rs.getString(
"value"),
196 rs.getString(
"justification"),
198 Long.parseLong(rs.getString(
"date_added")),
201 personaMetadataList.add(metaData);
205 Collection<PersonaMetadata> getMetadataList() {
206 return Collections.unmodifiableCollection(personaMetadataList);
218 static Collection<PersonaMetadata> getPersonaMetadata(
long personaId)
throws CentralRepoException {
219 String queryClause = SELECT_QUERY_BASE +
"WHERE pmd.persona_id = " +
personaId;
221 PersonaMetadataQueryCallback queryCallback =
new PersonaMetadataQueryCallback();
224 return queryCallback.getMetadataList();
239 if(instance == null) {
240 throw new CentralRepoException(
"Failed to get instance of CentralRespository, CR was null");
void executeSelectSQL(String sql, CentralRepositoryDbQueryCallback queryCallback)
CentralRepoExaminer getOrInsertExaminer(String examinerLoginName)
void executeDeleteSQL(String sql)
static Confidence fromId(int value)
void executeInsertSQL(String sql)
static CentralRepository getInstance()