Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**********************************************************************
* Copyright (c) 2020, 2025 École Polytechnique de Montréal
* Copyright (c) 2020, 2025 École Polytechnique de Montréal and others
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
Expand All @@ -11,13 +11,9 @@

package org.eclipse.tracecompass.incubator.internal.trace.server.jersey.rest.core.model.views;

import java.util.List;

import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.tracecompass.internal.provisional.tmf.core.model.events.TmfEventTableColumnDataModel;
import org.eclipse.tracecompass.tmf.core.dataprovider.DataType;
import org.eclipse.tracecompass.tmf.core.model.tree.ITmfTreeDataModel;
import org.eclipse.tracecompass.tmf.core.model.ITableColumnDescriptor;

/**
* An object that describes a table column header for table column queries
Expand All @@ -34,26 +30,20 @@ public class TableColumnHeader {
/**
* Constructor
*
* @param dataModel
* The tree model that serves as base for this column
* @param descriptor
* the column descriptor
*/
@SuppressWarnings("restriction")
public TableColumnHeader(ITmfTreeDataModel dataModel) {
fId = dataModel.getId();
List<@NonNull String> labels = dataModel.getLabels();
fName = dataModel.getLabels().get(0);
if (dataModel instanceof TmfEventTableColumnDataModel) {
fDescription = ((TmfEventTableColumnDataModel) dataModel).getHeaderTooltip();
} else {
fDescription = labels.size() >= 2 ? dataModel.getLabels().get(1) : null;
}
fType = dataModel.getDataType();
public TableColumnHeader(ITableColumnDescriptor descriptor) {
fId = descriptor.getId();
fName = descriptor.getText();
fDescription = descriptor.getTooltip();
fType = descriptor.getDataType();
}

/**
* Get the ID of this column header
* Get the ID of this column
*
* @return The ID of the column header
* @return The ID of the column
*/
public long getId() {
return fId;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@
import org.eclipse.tracecompass.tmf.core.exceptions.TmfConfigurationException;
import org.eclipse.tracecompass.tmf.core.model.CommonStatusMessage;
import org.eclipse.tracecompass.tmf.core.model.IOutputStyleProvider;
import org.eclipse.tracecompass.tmf.core.model.ITableColumnDescriptor;
import org.eclipse.tracecompass.tmf.core.model.OutputStyleModel;
import org.eclipse.tracecompass.tmf.core.model.annotations.Annotation;
import org.eclipse.tracecompass.tmf.core.model.annotations.AnnotationCategoriesModel;
Expand Down Expand Up @@ -400,7 +401,7 @@ public Response getXY(
return ErrorResponseUtil.newErrorResponse(Status.NOT_FOUND, NO_SUCH_TRACE);
}

ITmfTreeXYDataProvider<@NonNull ITmfTreeDataModel> provider = manager.getOrCreateDataProvider(experiment,
ITmfTreeXYDataProvider<@NonNull ITmfTreeDataModel> provider = manager.fetchOrCreateDataProvider(experiment,
outputId, ITmfTreeXYDataProvider.class);

if (provider == null) {
Expand Down Expand Up @@ -502,7 +503,7 @@ public Response getGenericXY(
return ErrorResponseUtil.newErrorResponse(Status.NOT_FOUND, NO_SUCH_TRACE);
}

ITmfTreeXYDataProvider<@NonNull ITmfTreeDataModel> provider = manager.getOrCreateDataProvider(experiment,
ITmfTreeXYDataProvider<@NonNull ITmfTreeDataModel> provider = manager.fetchOrCreateDataProvider(experiment,
outputId, ITmfTreeXYDataProvider.class);

if (provider == null) {
Expand Down Expand Up @@ -775,7 +776,7 @@ public Response getAnnotationCategories(
return ErrorResponseUtil.newErrorResponse(Status.NOT_FOUND, NO_SUCH_TRACE);
}

ITmfTreeDataProvider<? extends @NonNull ITmfTreeDataModel> provider = manager.getOrCreateDataProvider(experiment,
ITmfTreeDataProvider<? extends @NonNull ITmfTreeDataModel> provider = manager.fetchOrCreateDataProvider(experiment,
outputId, ITmfTreeDataProvider.class);

if (provider == null) {
Expand Down Expand Up @@ -860,7 +861,7 @@ public Response getAnnotations(
return ErrorResponseUtil.newErrorResponse(Status.NOT_FOUND, NO_SUCH_TRACE);
}

ITmfTreeDataProvider<? extends @NonNull ITmfTreeDataModel> provider = manager.getOrCreateDataProvider(experiment,
ITmfTreeDataProvider<? extends @NonNull ITmfTreeDataModel> provider = manager.fetchOrCreateDataProvider(experiment,
outputId, ITmfTreeDataProvider.class);

if (provider == null) {
Expand Down Expand Up @@ -973,7 +974,7 @@ public Response getTimeGraphTooltip(
}

private ITimeGraphDataProvider<@NonNull ITimeGraphEntryModel> getTimeGraphProvider(@NonNull ITmfTrace trace, String outputId) {
ITimeGraphDataProvider<@NonNull ITimeGraphEntryModel> provider = manager.getOrCreateDataProvider(trace,
ITimeGraphDataProvider<@NonNull ITimeGraphEntryModel> provider = manager.fetchOrCreateDataProvider(trace,
outputId, ITimeGraphDataProvider.class);

if (provider == null && outputId != null) {
Expand Down Expand Up @@ -1015,21 +1016,36 @@ public Response getColumns(
@Content(examples = @ExampleObject("{\"parameters\":{}}"), schema = @Schema(implementation = OptionalQueryParameters.class))
}, required = true) QueryParameters queryParameters) {

Response response = getTree(expUUID, outputId, queryParameters);
Object entity = response.getEntity();
if (!(entity instanceof TmfModelResponse<?>)) {
return response;
}
Object model = ((TmfModelResponse<?>) entity).getModel();
if (!(model instanceof TreeModelWrapper)) {
return response;
Response errorResponse = validateParameters(outputId, queryParameters);
if (errorResponse != null) {
return errorResponse;
}
List<@NonNull ITmfTreeDataModel> entries = ((TreeModelWrapper) model).getEntries();
List<TableColumnHeader> columns = new ArrayList<>();
for (ITmfTreeDataModel dataModel : entries) {
columns.add(new TableColumnHeader(dataModel));
Map<String, Object> params = queryParameters.getParameters();
try (FlowScopeLog scope = new FlowScopeLogBuilder(LOGGER, Level.FINE, "DataProviderService#getColumns") //$NON-NLS-1$
.setCategory(outputId).build()) {
TmfExperiment experiment = ExperimentManagerService.getExperimentByUUID(expUUID);
if (experiment == null) {
return ErrorResponseUtil.newErrorResponse(Status.NOT_FOUND, NO_SUCH_TRACE);
}

ITmfVirtualTableDataProvider<? extends @NonNull ITmfTreeDataModel, ? extends IVirtualTableLine> provider = manager.fetchOrCreateDataProvider(experiment,
outputId, ITmfVirtualTableDataProvider.class);
if (provider == null) {
return ErrorResponseUtil.newErrorResponse(Status.METHOD_NOT_ALLOWED, NO_PROVIDER);
}

TmfModelResponse<?> response = provider.fetchColumns(params, null);
if (response.getStatus() == ITmfResponse.Status.FAILED) {
return ErrorResponseUtil.newErrorResponse(Status.BAD_REQUEST, response.getStatusMessage());
}
List<ITableColumnDescriptor> model = (List<ITableColumnDescriptor>) response.getModel();
if (model == null) {
return Response.ok(response).build();
}
List<@NonNull TableColumnHeader> columns = new ArrayList<>();
model.forEach(descriptor -> columns.add(new TableColumnHeader(descriptor)));
return Response.ok(new TmfModelResponse<>(columns, response.getStatus(), response.getStatusMessage())).build();
}
return Response.ok(new TmfModelResponse<>(columns, ((TmfModelResponse<?>) entity).getStatus(), ((TmfModelResponse<?>) entity).getStatusMessage())).build();
}

/**
Expand Down Expand Up @@ -1078,7 +1094,7 @@ public Response getLines(
return ErrorResponseUtil.newErrorResponse(Status.NOT_FOUND, NO_SUCH_TRACE);
}

ITmfVirtualTableDataProvider<? extends IVirtualTableLine, ? extends ITmfTreeDataModel> provider = manager.getOrCreateDataProvider(experiment, outputId, ITmfVirtualTableDataProvider.class);
ITmfVirtualTableDataProvider<? extends IVirtualTableLine, ? extends ITmfTreeDataModel> provider = manager.fetchOrCreateDataProvider(experiment, outputId, ITmfVirtualTableDataProvider.class);
if (provider == null) {
return ErrorResponseUtil.newErrorResponse(Status.METHOD_NOT_ALLOWED, NO_PROVIDER);
}
Expand Down Expand Up @@ -1114,7 +1130,7 @@ private Response getTree(UUID expUUID, String outputId, QueryParameters queryPar
return ErrorResponseUtil.newErrorResponse(Status.NOT_FOUND, NO_SUCH_TRACE);
}

ITmfTreeDataProvider<? extends @NonNull ITmfTreeDataModel> provider = manager.getOrCreateDataProvider(experiment,
ITmfTreeDataProvider<? extends @NonNull ITmfTreeDataModel> provider = manager.fetchOrCreateDataProvider(experiment,
outputId, ITmfTreeDataProvider.class);

if (provider == null) {
Expand Down Expand Up @@ -1182,7 +1198,7 @@ public Response getStyles(
return ErrorResponseUtil.newErrorResponse(Status.NOT_FOUND, NO_SUCH_TRACE);
}

ITmfTreeDataProvider<? extends @NonNull ITmfTreeDataModel> provider = manager.getOrCreateDataProvider(experiment,
ITmfTreeDataProvider<? extends @NonNull ITmfTreeDataModel> provider = manager.fetchOrCreateDataProvider(experiment,
outputId, ITmfTreeDataProvider.class);

if (provider == null) {
Expand Down
Loading