blob: 850bfd22953b3ed0cc95b4a3f99040a8b24a89e7 [file] [log] [blame]
/**********************************************************************
* Copyright (c) 2018 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
**********************************************************************/
package org.eclipse.tracecompass.internal.provisional.tmf.core.model.events;
import java.util.List;
import java.util.Map;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.tracecompass.internal.provisional.tmf.core.model.table.ITmfFilterModel;
/**
* Implementation of {@link ITmfFilterModel} for the event table.
*
* @author Simon Delisle
* @since 4.0
*/
public class TmfEventTableFilterModel implements ITmfFilterModel {
private final @Nullable Map<Long, String> fTableFilter;
private final @Nullable Map<Long, String> fTableFilterName;
private final @Nullable List<String> fPresetFilter;
private final @Nullable Map<String, String> fPresetFilterName;
private final boolean fCollapseFilterEnabled;
/**
* Constructor
*
* @param tableFilter
* Filter that comes from the table
* @param tableFilterName
* Map column ID to the name of the filter applied to this column
* @param isCollapseFilterEnabled
* If a collapse filter should be applied
*/
public TmfEventTableFilterModel(@Nullable Map<Long, String> tableFilter, @Nullable Map<Long, String> tableFilterName, boolean isCollapseFilterEnabled) {
this(tableFilter, tableFilterName, null, null, isCollapseFilterEnabled);
}
/**
* Constructor
*
* @param presetFilter
* List of preset filter
* @param presetFilterName
* Map preset filter ID to the name of the filter
* @param isCollapseFilterEnabled
* If a collapse filter should be applied
*/
public TmfEventTableFilterModel(@Nullable List<String> presetFilter, @Nullable Map<String, String> presetFilterName, boolean isCollapseFilterEnabled) {
this(null, null, presetFilter, presetFilterName, isCollapseFilterEnabled);
}
/**
* Constructor
*
* @param isCollapseFilterEnabled
* If a collapse filter should be applied
*/
public TmfEventTableFilterModel(boolean isCollapseFilterEnabled) {
this(null, null, null, null, isCollapseFilterEnabled);
}
/**
* Constructor
*
* @param tableFilter
* Filter that comes from the table
* @param tableFilterName
* Map column ID to the name of the filter applied to this column
* @param presetFilter
* List of preset filter
* @param presetFilterName
* Map preset filter ID to the name of the filter
* @param isCollapseFilterEnabled
* If a collapse filter should be applied
*/
public TmfEventTableFilterModel(@Nullable Map<Long, String> tableFilter, @Nullable Map<Long, String> tableFilterName, @Nullable List<String> presetFilter, @Nullable Map<String, String> presetFilterName, boolean isCollapseFilterEnabled) {
fTableFilter = tableFilter == null || tableFilter.isEmpty() ? null : tableFilter;
fTableFilterName = tableFilterName;
fPresetFilter = presetFilter == null || presetFilter.isEmpty() ? null : presetFilter;
fPresetFilterName = presetFilterName;
fCollapseFilterEnabled = isCollapseFilterEnabled;
}
@Override
public @Nullable Map<Long, String> getTableFilter() {
return fTableFilter;
}
@Override
public @NonNull String getTableFilterName(Long filterId) {
String filterName = null;
if (fTableFilterName != null) {
filterName = fTableFilterName.get(filterId);
}
if (filterName == null && fTableFilter != null) {
filterName = fTableFilter.get(filterId);
}
return filterName == null ? "" : filterName; //$NON-NLS-1$
}
@Override
public @Nullable List<String> getPresetFilter() {
return fPresetFilter;
}
@Override
public @NonNull String getPresetFilterName(String presetFilterId) {
String presetFilterName = presetFilterId;
if (fPresetFilterName != null) {
presetFilterName = fPresetFilterName.get(presetFilterId);
}
return presetFilterName == null ? "" : presetFilterName; //$NON-NLS-1$
}
@Override
public boolean isCollapseFilter() {
return fCollapseFilterEnabled;
}
}