From cbeda19d27643910d0a15f8bb6f52e7425609325 Mon Sep 17 00:00:00 2001 From: Doug Hoffman Date: Sun, 1 May 2022 06:06:31 -0400 Subject: [PATCH] Generate audio metadata with correct to/from (#1215) #1215 Generate audio metadata with correct to/from, preferring patch group, then talkgroup then other, for TO talkgroups. --- .../identifier/IdentifierCollection.java | 32 +++++++++++++------ .../record/wave/AudioMetadataUtils.java | 26 ++++++++------- 2 files changed, 38 insertions(+), 20 deletions(-) diff --git a/src/main/java/io/github/dsheirer/identifier/IdentifierCollection.java b/src/main/java/io/github/dsheirer/identifier/IdentifierCollection.java index 3e981cbb..bbe79111 100644 --- a/src/main/java/io/github/dsheirer/identifier/IdentifierCollection.java +++ b/src/main/java/io/github/dsheirer/identifier/IdentifierCollection.java @@ -278,29 +278,43 @@ public class IdentifierCollection */ public Identifier getFromIdentifier() { - List fromIdentifiers = getIdentifiers(Role.FROM); + Identifier from = getIdentifier(IdentifierClass.USER, Form.RADIO, Role.FROM); - if(!fromIdentifiers.isEmpty()) + if(from == null) { - return fromIdentifiers.get(0); + List fromIdentifiers = getIdentifiers(Role.FROM); + + if(!fromIdentifiers.isEmpty()) + { + from = fromIdentifiers.get(0); + } } - return null; + return from; } /** - * Returns the first identifier in this collection that is assigned a FROM role + * Returns the first identifier in this collection that is assigned a TO role */ public Identifier getToIdentifier() { - List toIdentifiers = getIdentifiers(Role.TO); + Identifier to = getIdentifier(IdentifierClass.USER, Form.PATCH_GROUP, Role.TO); - if(!toIdentifiers.isEmpty()) + if(to == null) { - return toIdentifiers.get(0); + to = getIdentifier(IdentifierClass.USER, Form.TALKGROUP, Role.TO); } - return null; + if(to == null) + { + List toIdentifiers = getIdentifiers(Role.TO); + if(!toIdentifiers.isEmpty()) + { + to = toIdentifiers.get(0); + } + } + + return to; } @Override diff --git a/src/main/java/io/github/dsheirer/record/wave/AudioMetadataUtils.java b/src/main/java/io/github/dsheirer/record/wave/AudioMetadataUtils.java index 50efa046..44e02615 100644 --- a/src/main/java/io/github/dsheirer/record/wave/AudioMetadataUtils.java +++ b/src/main/java/io/github/dsheirer/record/wave/AudioMetadataUtils.java @@ -89,37 +89,41 @@ public class AudioMetadataUtils if(identifierCollection != null) { - for(Identifier to: identifierCollection.getIdentifiers(Role.TO)) + StringBuilder sb; + + Identifier to = identifierCollection.getToIdentifier(); + if(to != null) { - StringBuilder sb = new StringBuilder(); + sb = new StringBuilder(); sb.append(to.toString()); - List aliases = aliasList.getAliases(to); + List toAliases = aliasList.getAliases(to); - if(!aliases.isEmpty()) + if(!toAliases.isEmpty()) { - sb.append("\"").append(Joiner.on("\",\"").join(aliases)).append("\""); + sb.append("\"").append(Joiner.on("\",\"").join(toAliases)).append("\""); } audioMetadata.put(AudioMetadata.TRACK_TITLE, sb.toString()); - break; } - for(Identifier from: identifierCollection.getIdentifiers(Role.FROM)) + Identifier from = identifierCollection.getFromIdentifier(); + if(from != null) { - StringBuilder sb = new StringBuilder(); + sb = new StringBuilder(); sb.append(from.toString()); - List aliases = aliasList.getAliases(from); + List fromAliases = aliasList.getAliases(from); - for(Alias alias: aliases) + for(Alias alias: fromAliases) { sb.append(" ").append(alias.toString()); } audioMetadata.put(AudioMetadata.ARTIST_NAME, sb.toString()); - break; } + + sb = null; Identifier system = identifierCollection.getIdentifier(IdentifierClass.CONFIGURATION, Form.SYSTEM, Role.ANY); if(system instanceof SystemConfigurationIdentifier)