[ https://issues.apache.org/jira/browse/GOBBLIN-2153?focusedWorklogId=934303&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-934303 ]
ASF GitHub Bot logged work on GOBBLIN-2153: ------------------------------------------- Author: ASF GitHub Bot Created on: 11/Sep/24 16:42 Start Date: 11/Sep/24 16:42 Worklog Time Spent: 10m Work Description: khandelwal-prateek commented on code in PR #4052: URL: https://github.com/apache/gobblin/pull/4052#discussion_r1755153831 ########## gobblin-temporal/src/main/java/org/apache/gobblin/temporal/ddm/util/TemporalWorkFlowUtils.java: ########## @@ -0,0 +1,52 @@ +package org.apache.gobblin.temporal.ddm.util; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import lombok.NonNull; +import lombok.experimental.UtilityClass; +import org.apache.gobblin.configuration.ConfigurationKeys; +import org.apache.gobblin.temporal.ddm.work.assistance.Help; + + +/** + * Utility class for handling Temporal workflow-related operations. + */ +@UtilityClass +public class TemporalWorkFlowUtils { + + /** + * Generates search attributes for a WorkFlow based on the provided GAAS job properties. + * + * @param jobProps the properties of the job, must not be null. + * @return a map containing the generated search attributes. + */ + public static Map<String, Object> generateGaasSearchAttributes(@NonNull Properties jobProps) { + Map<String, Object> attributes = new HashMap<>(); + attributes.put(Help.GAAS_FLOW_KEY, String.format("%s.%s", jobProps.getProperty(ConfigurationKeys.FLOW_GROUP_KEY), + jobProps.getProperty(ConfigurationKeys.FLOW_NAME_KEY))); + attributes.put(Help.USER_TO_PROXY_SEARCH_KEY, jobProps.getProperty(Help.USER_TO_PROXY_KEY)); + return attributes; + } + + /** + * Converts search attribute values from a map of lists to a map of objects. + * + * @param searchAttributes a map where the keys are attribute names and the values are lists of attribute values. + * Can be null. + * @return a map where the keys are attribute names and the values are the corresponding attribute values. + * If the input map is null, an empty map is returned. + */ + public static Map<String, Object> convertSearchAttributesValuesFromListToObject( + Map<String, List<?>> searchAttributes) { + if (searchAttributes == null) { + return null; + } + Map<String, Object> convertedAttributes = new HashMap<>(); + + convertedAttributes.putAll(searchAttributes); Review Comment: It seems like the intention of this method is to convert the input map `Map<String, List<?>>` into a `Map<String, Object>` without transforming the list values into single objects. This method seems to be written for setSearchAttributes on ChildWorkflowOptions in AbstractNestingExecWorkflowImpl(which expects Map<String, Object>), we can simplify the implementation by directly using `new HashMap<>(searchAttributes)`. This would achieve the same result more efficiently. Issue Time Tracking ------------------- Worklog Id: (was: 934303) Time Spent: 0.5h (was: 20m) > Add SearchAttributes to filter Temporal Flows in the UI > ------------------------------------------------------- > > Key: GOBBLIN-2153 > URL: https://issues.apache.org/jira/browse/GOBBLIN-2153 > Project: Apache Gobblin > Issue Type: Improvement > Reporter: Aditya Pratap Singh > Priority: Major > Time Spent: 0.5h > Remaining Estimate: 0h > > Add SearchAttributes to filter Temporal Flows in the UI -- This message was sent by Atlassian Jira (v8.20.10#820010)