20package org.sleuthkit.autopsy.communications.relationships;
23import java.util.TimeZone;
24import java.util.concurrent.ExecutionException;
25import java.util.logging.Level;
26import org.openide.nodes.Node;
27import org.openide.util.NbBundle;
28import org.sleuthkit.autopsy.centralrepository.datamodel.PersonaAccount;
29import org.sleuthkit.autopsy.communications.CVTPersonaCache;
30import org.sleuthkit.autopsy.communications.ContactCache;
31import org.sleuthkit.autopsy.communications.Utils;
32import org.sleuthkit.autopsy.coreutils.Logger;
33import org.sleuthkit.datamodel.Account;
34import org.sleuthkit.datamodel.BlackboardArtifact;
35import org.sleuthkit.datamodel.BlackboardAttribute;
36import static org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE.TSK_NAME;
37import static org.sleuthkit.datamodel.BlackboardAttribute.TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE.DATETIME;
38import org.sleuthkit.datamodel.TimeUtilities;
39import org.sleuthkit.datamodel.TskCoreException;
48 private static final BlackboardAttribute.Type
NAME_ATTRIBUTE =
new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.fromID(TSK_NAME.getTypeID()));
66 static String getAttributeDisplayString(
final BlackboardArtifact artifact,
final BlackboardAttribute.ATTRIBUTE_TYPE attributeType) {
68 BlackboardAttribute attribute = artifact.getAttribute(
new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.fromID(attributeType.getTypeID())));
69 if (attribute ==
null) {
71 }
else if (attributeType.getValueType() == DATETIME) {
72 return TimeUtilities.epochToTime(attribute.getValueLong(),
75 return attribute.getDisplayString();
77 }
catch (TskCoreException tskCoreException) {
78 logger.log(Level.WARNING,
"Error getting attribute value.", tskCoreException);
84 "# {0} - Contact Name",
85 "# {1} - Persona Name",
86 "RelationshipsNodeUtilities_Tooltip_Template=Contact: {0} - Persona: {1}",
87 "# {0} - PersonaAccount count",
88 "RelationshipsNodeUtilities_Tooltip_suffix=(1 of {0})"
95 List<PersonaAccount> personaList;
96 List<BlackboardArtifact> contactArtifactList;
100 }
catch (ExecutionException ex) {
101 logger.log(Level.WARNING,
"Failed to retrieve Persona details for node.", ex);
106 if (personaList !=
null && !personaList.isEmpty()) {
107 personaName = personaList.get(0).getPersona().getName();
108 if (personaList.size() > 1) {
109 personaName += Bundle.RelationshipsNodeUtilities_Tooltip_suffix(Integer.toString(personaList.size()));
112 personaName =
"None";
115 String contactName = displayName;
116 if (contactArtifactList !=
null && !contactArtifactList.isEmpty()) {
118 BlackboardArtifact contactArtifact = contactArtifactList.get(0);
119 BlackboardAttribute attribute = contactArtifact.getAttribute(
NAME_ATTRIBUTE);
120 if (attribute !=
null) {
121 contactName = attribute.getValueString();
123 }
catch (TskCoreException ex) {
124 logger.log(Level.WARNING,
"Failed to retrive name attribute from contact artifact.", ex);
128 return Bundle.RelationshipsNodeUtilities_Tooltip_Template(contactName, personaName);
static synchronized List< PersonaAccount > getPersonaAccounts(Account account)
static ZoneId getUserPreferredZoneId()
static final BlackboardAttribute.Type NAME_ATTRIBUTE
static final Logger logger
static String getAccoutToolTipText(String displayName, Account account)
RelationshipsNodeUtilities()
synchronized static Logger getLogger(String name)