Search in sources :

Example 1 with ArrayListStore

use of org.eclipse.tracecompass.internal.segmentstore.core.arraylist.ArrayListStore in project tracecompass by tracecompass.

the class AbstractSegmentStoreTableViewer method setData.

/**
 * Set the data into the viewer. It will update the model. If the provider
 * is an analysis, the analysis will be scheduled.
 *
 * @param provider
 *            segment store provider
 */
public synchronized void setData(@Nullable ISegmentStoreProvider provider) {
    // Set the current segment store provider
    fSegmentProvider = provider;
    if (provider == null) {
        updateModel(null);
        return;
    }
    createProviderColumns();
    /*
         * If the listener is null then the table is updated from another viewer.
         * Otherwise this class is responsible to load the trace.
         */
    SegmentStoreProviderProgressListener listener = fListener;
    if (listener == null) {
        return;
    }
    ISegmentStore<ISegment> segStore = provider.getSegmentStore();
    // If results are not null, then the segment of the provider is ready
    // and model can be updated
    // FIXME Filtering should be done at the data provider level
    Map<@NonNull Integer, @NonNull Predicate<@NonNull Multimap<@NonNull String, @NonNull Object>>> predicates = generateRegexPredicate();
    Predicate<ISegment> predicate = (segment) -> {
        // Get the filter external input data
        Multimap<@NonNull String, @NonNull Object> input = ISegmentStoreProvider.getFilterInput(provider, segment);
        /*
             * Test each predicates and set the status of the property
             * associated to the predicate
             */
        boolean activateProperty = false;
        for (Map.Entry<Integer, Predicate<Multimap<String, Object>>> mapEntry : predicates.entrySet()) {
            Integer property = Objects.requireNonNull(mapEntry.getKey());
            Predicate<Multimap<String, Object>> value = Objects.requireNonNull(mapEntry.getValue());
            if (property == CoreFilterProperty.DIMMED || property == CoreFilterProperty.EXCLUDE) {
                boolean status = value.test(input);
                activateProperty |= status;
            }
        }
        return activateProperty;
    };
    if (segStore != null) {
        // Cancel the current filtering job
        Job job = fFilteringJob;
        if (job != null) {
            job.cancel();
        }
        if (predicates.isEmpty()) {
            updateModel(segStore);
            return;
        }
        job = new Job(Messages.SegmentStoreTableViewer_FilteringData) {

            @Override
            protected IStatus run(@Nullable IProgressMonitor monitor) {
                try (ScopeLog log = new ScopeLog(LOGGER, Level.FINE, "SegmentStoreTable:Filtering")) {
                    // $NON-NLS-1$
                    SubMonitor subMonitor = SubMonitor.convert(monitor);
                    ISegmentStore<ISegment> filteredStore = new ArrayListStore<>();
                    for (ISegment segment : segStore) {
                        if (subMonitor.isCanceled()) {
                            return Status.CANCEL_STATUS;
                        }
                        if (predicate.test(segment)) {
                            filteredStore.add(segment);
                        }
                    }
                    if (subMonitor.isCanceled()) {
                        return Status.CANCEL_STATUS;
                    }
                    updateModel(filteredStore);
                    return Status.OK_STATUS;
                }
            }
        };
        fFilteringJob = job;
        job.schedule();
        return;
    }
    // If results are null, then add completion listener and if the provider
    // is an analysis, run the analysis
    updateModel(null);
    provider.addListener(listener);
    if (provider instanceof IAnalysisModule) {
        ((IAnalysisModule) provider).schedule();
    }
}
Also used : TmfTraceOpenedSignal(org.eclipse.tracecompass.tmf.core.signal.TmfTraceOpenedSignal) Format(java.text.Format) TmfTimestamp(org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp) TableViewer(org.eclipse.jface.viewers.TableViewer) IAction(org.eclipse.jface.action.IAction) TableColumn(org.eclipse.swt.widgets.TableColumn) TmfTraceClosedSignal(org.eclipse.tracecompass.tmf.core.signal.TmfTraceClosedSignal) TmfSelectionRangeUpdatedSignal(org.eclipse.tracecompass.tmf.core.signal.TmfSelectionRangeUpdatedSignal) IStatus(org.eclipse.core.runtime.IStatus) HashMultimap(com.google.common.collect.HashMultimap) Nullable(org.eclipse.jdt.annotation.Nullable) Map(java.util.Map) TmfStrings(org.eclipse.tracecompass.tmf.core.TmfStrings) ArrayListStore(org.eclipse.tracecompass.internal.segmentstore.core.arraylist.ArrayListStore) TmfTraceManager(org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager) TmfFilterAppliedSignal(org.eclipse.tracecompass.internal.provisional.tmf.core.model.filters.TmfFilterAppliedSignal) TmfTraceSelectedSignal(org.eclipse.tracecompass.tmf.core.signal.TmfTraceSelectedSignal) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) ISegmentStore(org.eclipse.tracecompass.segmentstore.core.ISegmentStore) TmfSignalHandler(org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler) ITmfTrace(org.eclipse.tracecompass.tmf.core.trace.ITmfTrace) ImmutableSet(com.google.common.collect.ImmutableSet) ISegmentAspect(org.eclipse.tracecompass.tmf.core.segment.ISegmentAspect) Predicate(java.util.function.Predicate) Collection(java.util.Collection) Set(java.util.Set) Status(org.eclipse.core.runtime.Status) Display(org.eclipse.swt.widgets.Display) Logger(java.util.logging.Logger) ColumnLabelProvider(org.eclipse.jface.viewers.ColumnLabelProvider) TraceCompassLog(org.eclipse.tracecompass.common.core.log.TraceCompassLog) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) Objects(java.util.Objects) ITmfTimestamp(org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp) SWT(org.eclipse.swt.SWT) Entry(java.util.Map.Entry) ISelection(org.eclipse.jface.viewers.ISelection) ScopeLog(org.eclipse.tracecompass.common.core.log.TraceCompassLogUtils.ScopeLog) Builder(com.google.common.collect.ImmutableMultimap.Builder) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) TmfSignalManager(org.eclipse.tracecompass.tmf.core.signal.TmfSignalManager) NonNull(org.eclipse.jdt.annotation.NonNull) TmfTimestampFormat(org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestampFormat) Activator(org.eclipse.tracecompass.internal.analysis.timing.ui.Activator) SubMonitor(org.eclipse.core.runtime.SubMonitor) HashMap(java.util.HashMap) ITmfSourceLookup(org.eclipse.tracecompass.tmf.core.event.lookup.ITmfSourceLookup) Table(org.eclipse.swt.widgets.Table) Multimap(com.google.common.collect.Multimap) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) Event(org.eclipse.swt.widgets.Event) SegmentStoreContentProvider(org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.table.SegmentStoreContentProvider) Level(java.util.logging.Level) NonNullUtils(org.eclipse.tracecompass.common.core.NonNullUtils) TraceCompassLogUtils(org.eclipse.tracecompass.common.core.log.TraceCompassLogUtils) TmfDataModelSelectedSignal(org.eclipse.tracecompass.tmf.core.signal.TmfDataModelSelectedSignal) TmfSimpleTableViewer(org.eclipse.tracecompass.tmf.ui.viewers.table.TmfSimpleTableViewer) ISegmentStoreProvider(org.eclipse.tracecompass.analysis.timing.core.segmentstore.ISegmentStoreProvider) Messages(org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.table.Messages) Listener(org.eclipse.swt.widgets.Listener) IAnalysisModule(org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModule) TraceCompassFilter(org.eclipse.tracecompass.internal.provisional.tmf.core.model.filters.TraceCompassFilter) ImmutableMultimap(com.google.common.collect.ImmutableMultimap) IAnalysisProgressListener(org.eclipse.tracecompass.analysis.timing.core.segmentstore.IAnalysisProgressListener) Job(org.eclipse.core.runtime.jobs.Job) IFilterStrings(org.eclipse.tracecompass.internal.provisional.tmf.core.model.filter.parser.IFilterStrings) IElementResolver(org.eclipse.tracecompass.tmf.core.model.timegraph.IElementResolver) DecimalFormat(java.text.DecimalFormat) FilterCu(org.eclipse.tracecompass.internal.provisional.tmf.core.model.filter.parser.FilterCu) Action(org.eclipse.jface.action.Action) OpenSourceCodeAction(org.eclipse.tracecompass.tmf.ui.actions.OpenSourceCodeAction) IMenuManager(org.eclipse.jface.action.IMenuManager) IContributionItem(org.eclipse.jface.action.IContributionItem) SelectionEvent(org.eclipse.swt.events.SelectionEvent) VisibleForTesting(com.google.common.annotations.VisibleForTesting) ISegment(org.eclipse.tracecompass.segmentstore.core.ISegment) CoreFilterProperty(org.eclipse.tracecompass.tmf.core.model.CoreFilterProperty) Collections(java.util.Collections) IStatus(org.eclipse.core.runtime.IStatus) SubMonitor(org.eclipse.core.runtime.SubMonitor) ISegmentStore(org.eclipse.tracecompass.segmentstore.core.ISegmentStore) Predicate(java.util.function.Predicate) HashMultimap(com.google.common.collect.HashMultimap) Multimap(com.google.common.collect.Multimap) ImmutableMultimap(com.google.common.collect.ImmutableMultimap) Entry(java.util.Map.Entry) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) NonNull(org.eclipse.jdt.annotation.NonNull) IAnalysisModule(org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModule) ISegment(org.eclipse.tracecompass.segmentstore.core.ISegment) Job(org.eclipse.core.runtime.jobs.Job) ScopeLog(org.eclipse.tracecompass.common.core.log.TraceCompassLogUtils.ScopeLog)

Aggregations

VisibleForTesting (com.google.common.annotations.VisibleForTesting)1 HashMultimap (com.google.common.collect.HashMultimap)1 ImmutableMultimap (com.google.common.collect.ImmutableMultimap)1 Builder (com.google.common.collect.ImmutableMultimap.Builder)1 ImmutableSet (com.google.common.collect.ImmutableSet)1 Multimap (com.google.common.collect.Multimap)1 DecimalFormat (java.text.DecimalFormat)1 Format (java.text.Format)1 Collection (java.util.Collection)1 Collections (java.util.Collections)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 Entry (java.util.Map.Entry)1 Objects (java.util.Objects)1 Set (java.util.Set)1 Predicate (java.util.function.Predicate)1 Level (java.util.logging.Level)1 Logger (java.util.logging.Logger)1 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)1 IStatus (org.eclipse.core.runtime.IStatus)1