|
154 | 154 | import org.eclipse.tracecompass.tmf.core.exceptions.TmfConfigurationException; |
155 | 155 | import org.eclipse.tracecompass.tmf.core.model.CommonStatusMessage; |
156 | 156 | import org.eclipse.tracecompass.tmf.core.model.IOutputStyleProvider; |
| 157 | +import org.eclipse.tracecompass.tmf.core.model.ITableColumnDescriptor; |
157 | 158 | import org.eclipse.tracecompass.tmf.core.model.OutputStyleModel; |
158 | 159 | import org.eclipse.tracecompass.tmf.core.model.annotations.Annotation; |
159 | 160 | import org.eclipse.tracecompass.tmf.core.model.annotations.AnnotationCategoriesModel; |
@@ -1015,21 +1016,36 @@ public Response getColumns( |
1015 | 1016 | @Content(examples = @ExampleObject("{\"parameters\":{}}"), schema = @Schema(implementation = OptionalQueryParameters.class)) |
1016 | 1017 | }, required = true) QueryParameters queryParameters) { |
1017 | 1018 |
|
1018 | | - Response response = getTree(expUUID, outputId, queryParameters); |
1019 | | - Object entity = response.getEntity(); |
1020 | | - if (!(entity instanceof TmfModelResponse<?>)) { |
1021 | | - return response; |
1022 | | - } |
1023 | | - Object model = ((TmfModelResponse<?>) entity).getModel(); |
1024 | | - if (!(model instanceof TreeModelWrapper)) { |
1025 | | - return response; |
| 1019 | + Response errorResponse = validateParameters(outputId, queryParameters); |
| 1020 | + if (errorResponse != null) { |
| 1021 | + return errorResponse; |
1026 | 1022 | } |
1027 | | - List<@NonNull ITmfTreeDataModel> entries = ((TreeModelWrapper) model).getEntries(); |
1028 | | - List<TableColumnHeader> columns = new ArrayList<>(); |
1029 | | - for (ITmfTreeDataModel dataModel : entries) { |
1030 | | - columns.add(new TableColumnHeader(dataModel)); |
| 1023 | + Map<String, Object> params = queryParameters.getParameters(); |
| 1024 | + try (FlowScopeLog scope = new FlowScopeLogBuilder(LOGGER, Level.FINE, "DataProviderService#getColumns") //$NON-NLS-1$ |
| 1025 | + .setCategory(outputId).build()) { |
| 1026 | + TmfExperiment experiment = ExperimentManagerService.getExperimentByUUID(expUUID); |
| 1027 | + if (experiment == null) { |
| 1028 | + return ErrorResponseUtil.newErrorResponse(Status.NOT_FOUND, NO_SUCH_TRACE); |
| 1029 | + } |
| 1030 | + |
| 1031 | + ITmfVirtualTableDataProvider<? extends @NonNull ITmfTreeDataModel, ? extends IVirtualTableLine> provider = manager.getOrCreateDataProvider(experiment, |
| 1032 | + outputId, ITmfVirtualTableDataProvider.class); |
| 1033 | + if (provider == null) { |
| 1034 | + return ErrorResponseUtil.newErrorResponse(Status.METHOD_NOT_ALLOWED, NO_PROVIDER); |
| 1035 | + } |
| 1036 | + |
| 1037 | + TmfModelResponse<?> response = provider.fetchColumns(params, null); |
| 1038 | + if (response.getStatus() == ITmfResponse.Status.FAILED) { |
| 1039 | + return ErrorResponseUtil.newErrorResponse(Status.BAD_REQUEST, response.getStatusMessage()); |
| 1040 | + } |
| 1041 | + List<ITableColumnDescriptor> model = (List<ITableColumnDescriptor>) response.getModel(); |
| 1042 | + if (model == null) { |
| 1043 | + return Response.ok(response).build(); |
| 1044 | + } |
| 1045 | + List<@NonNull TableColumnHeader> columns = new ArrayList<>(); |
| 1046 | + model.forEach(descriptor -> columns.add(new TableColumnHeader(descriptor))); |
| 1047 | + return Response.ok(new TmfModelResponse<>(columns, response.getStatus(), response.getStatusMessage())).build(); |
1031 | 1048 | } |
1032 | | - return Response.ok(new TmfModelResponse<>(columns, ((TmfModelResponse<?>) entity).getStatus(), ((TmfModelResponse<?>) entity).getStatusMessage())).build(); |
1033 | 1049 | } |
1034 | 1050 |
|
1035 | 1051 | /** |
|
0 commit comments