Merge branch '6111-cvt-wrong-to-number' into 6081-Use-Helper-For-Artifact-Creation

This commit is contained in:
U-BASIS\dsmyda 2020-03-17 15:09:50 -04:00
commit 25bb44b2ec

View File

@ -19,6 +19,7 @@
package org.sleuthkit.autopsy.communications.relationships;
import java.util.logging.Level;
import org.apache.commons.lang.StringUtils;
import org.openide.nodes.Sheet;
import org.sleuthkit.autopsy.communications.Utils;
import static org.sleuthkit.autopsy.communications.relationships.RelationshipsNodeUtilities.getAttributeDisplayString;
@ -67,14 +68,6 @@ final class CallLogNode extends BlackboardArtifactNode {
return sheet;
}
String phoneNumber = getAttributeDisplayString(artifact, TSK_PHONE_NUMBER_FROM);
if(phoneNumber == null || phoneNumber.isEmpty()) {
phoneNumber = getAttributeDisplayString(artifact, TSK_PHONE_NUMBER_TO);
}
if(phoneNumber == null || phoneNumber.isEmpty()) {
phoneNumber = getAttributeDisplayString(artifact, TSK_PHONE_NUMBER);
}
long duration = -1;
try{
duration = getCallDuration(artifact);
@ -84,7 +77,7 @@ final class CallLogNode extends BlackboardArtifactNode {
sheetSet.put(createNode(TSK_DATETIME_START, artifact));
sheetSet.put(createNode(TSK_DIRECTION, artifact));
sheetSet.put(new NodeProperty<>(TSK_PHONE_NUMBER.getLabel(), TSK_PHONE_NUMBER.getDisplayName(), "", phoneNumber));
sheetSet.put(new NodeProperty<>(TSK_PHONE_NUMBER.getLabel(), TSK_PHONE_NUMBER.getDisplayName(), "", getPhoneNumber(artifact)));
if(duration != -1) {
sheetSet.put(new NodeProperty<>("duration", "Duration", "", Long.toString(duration)));
}
@ -107,6 +100,59 @@ final class CallLogNode extends BlackboardArtifactNode {
return endAttribute.getValueLong() - startAttribute.getValueLong();
}
/**
* Returns the phone number to display in the To/From column. The number is
* picked from one of the 3 possible phone number attributes, based on the
* direction of the call.
*
* @param artifact Call log artifact.
*
* @return Phone number to display.
*/
private String getPhoneNumber(BlackboardArtifact artifact) {
String direction = getAttributeDisplayString(artifact, TSK_DIRECTION);
String phoneNumberToReturn;
String fromPhoneNumber = getAttributeDisplayString(artifact, TSK_PHONE_NUMBER_FROM);
String toPhoneNumber = getAttributeDisplayString(artifact, TSK_PHONE_NUMBER_TO);
String phoneNumber = getAttributeDisplayString(artifact, TSK_PHONE_NUMBER);
switch (direction.toLowerCase()) {
case "incoming": // NON-NLS
phoneNumberToReturn = getFirstNonBlank(fromPhoneNumber, phoneNumber, toPhoneNumber);
break;
case "outgoing": // NON-NLS
phoneNumberToReturn = getFirstNonBlank(toPhoneNumber, phoneNumber, fromPhoneNumber);
break;
default:
phoneNumberToReturn = getFirstNonBlank(toPhoneNumber, fromPhoneNumber, phoneNumber );
break;
}
return phoneNumberToReturn;
}
/**
* Checks the given string arguments in order and returns the first non blank string.
* Returns a blank string if all the input strings are blank.
*
* @param string1 First string to check
* @param string2 Second string to check
* @param string3 Third string to check
*
* @retunr first non blank string if there is one, blank string otherwise.
*
*/
private String getFirstNonBlank(String string1, String string2, String string3 ) {
if (!StringUtils.isBlank(string1)) {
return string1;
} else if (!StringUtils.isBlank(string2)) {
return string2;
} else if (!StringUtils.isBlank(string3)) {
return string3;
}
return "";
}
/**
* Circumvent DataResultFilterNode's slightly odd delegation to
* BlackboardArtifactNode.getSourceName().