blob: 49f179f5be71b4ce694e53c9da3e524701d765bd [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014, 2016 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Matthew Khouzam - Initial API and implementation
*******************************************************************************/
package org.eclipse.tracecompass.tmf.core.trace;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.tmf.core.event.ITmfEventType;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
/**
* Set Helper for sets of ITmfTraceType
*
* TODO Remove once Java 8 is used (replace with Streams)
*
* @author Matthew Khouzam
*/
public final class TmfEventTypeCollectionHelper {
private TmfEventTypeCollectionHelper() {
}
/**
* Gets the event names from a collection of event types
*
* @param eventTypes
* an iterable collection of ITmfEventTypes
* @return a set of the names of these events, if some names are clashing
* they will only appear once
*/
public static Set<@NonNull String> getEventNames(Iterable<@NonNull ? extends ITmfEventType> eventTypes) {
Set<@NonNull String> retSet = new HashSet<>();
for (ITmfEventType eventType : eventTypes) {
retSet.add(eventType.getName());
}
return retSet;
}
/**
* Gets a map from event name to a collection of field names from a
* collection of event types
*
* @param eventTypes
* an iterable collection of ITmfEventTypes
* @return a set of the names of these events, if some event names are
* clashing they will only appear once
* @since 2.0
*/
public static Multimap<@NonNull String, @NonNull String> getEventFieldNames(Iterable<@NonNull ? extends ITmfEventType> eventTypes) {
Multimap<@NonNull String, @NonNull String> retMap = HashMultimap.create();
eventTypes.forEach(eventType -> {
Collection<String> collection = eventType.getFieldNames();
if (collection != null) {
collection.forEach(field -> {
if (field != null) {
retMap.put(eventType.getName(), field);
}
});
}
});
return retMap;
}
}