in tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo121.java [103:148]
private void updateTagsForHit(StringBuilder updatedHits, String hitId, JSONObject jsonObject,
boolean tagsInMetadata, String tagsOperation, boolean removeNamespaceOnSystemTags) {
if (jsonObject.has("tags")) {
JSONArray hitTags = jsonObject.getJSONArray("tags");
Iterator<Object> tagsIterator = hitTags.iterator();
Set<String> tagsBeforeMigration = new HashSet<>();
Set<String> tagsAfterMigration = new HashSet<>();
if (tagsIterator.hasNext()) {
while (tagsIterator.hasNext()) {
tagsBeforeMigration.add((String) tagsIterator.next());
}
for (String tag : tagsBeforeMigration) {
if (tagsStructurePriorTo130.containsKey(tag)) {
tagsAfterMigration.addAll(tagsStructurePriorTo130.get(tag));
}
tagsAfterMigration.add(tag);
}
updatedHits.append("{\"update\":{\"_id\":\"").append(hitId).append("\"}}\n");
if (tagsOperation.equals("1")) {
Set<String> tags = removeNamespaceOnTags(removeNamespaceOnSystemTags, tagsAfterMigration);
if (propsTaggedAsPersonalIdentifier.contains(hitId)) {
tags.add("personalIdentifierProperties");
}
updatedHits.append("{\"doc\":{\"metadata\":{\"tags\":").append(new JSONArray(tagsAfterMigration))
.append(",\"systemTags\":").append(new JSONArray(tags)).append("}}}\n");
}
if (tagsOperation.equals("2")) {
Set<String> tags = removeNamespaceOnTags(removeNamespaceOnSystemTags, tagsAfterMigration);
if (propsTaggedAsPersonalIdentifier.contains(hitId)) {
tags.add("personalIdentifierProperties");
}
updatedHits.append("{\"doc\":{\"metadata\":{\"systemTags\":").append(new JSONArray(tags)).append("}}}\n");
if (tagsInMetadata) {
updatedHits.append("{\"update\":{\"_id\":\"").append(hitId).append("\"}}\n");
updatedHits.append("{\"script\":\"ctx._source.metadata.remove(\\\"tags\\\")\"}\n");
}
}
if (!tagsInMetadata) {
updatedHits.append("{\"update\":{\"_id\":\"").append(hitId).append("\"}}\n");
updatedHits.append("{\"script\":\"ctx._source.remove(\\\"tags\\\")\"}\n");
}
}
}
}