You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampipes.apache.org by ze...@apache.org on 2020/03/06 16:32:45 UTC

[incubator-streampipes] branch STREAMPIPES-79 updated: Serialize DataLakeMeasures as JSON-LD

This is an automated email from the ASF dual-hosted git repository.

zehnder pushed a commit to branch STREAMPIPES-79
in repository https://gitbox.apache.org/repos/asf/incubator-streampipes.git


The following commit(s) were added to refs/heads/STREAMPIPES-79 by this push:
     new b21d5cb  Serialize DataLakeMeasures as JSON-LD
b21d5cb is described below

commit b21d5cba64af4c5e936d5ace56952597b88fd64c
Author: Philipp Zehnder <ze...@fzi.de>
AuthorDate: Fri Mar 6 17:32:05 2020 +0100

    Serialize DataLakeMeasures as JSON-LD
---
 .../streampipes/model/datalake/DataLakeMeasure.java     |  7 +++++++
 .../rest/impl/datalake/DataLakeResourceV3.java          |  2 +-
 .../datalake/{InfoResult.ts => DataLakeMeasure.ts}      | 17 ++++++++++++-----
 .../app/core-services/datalake/datalake-rest.service.ts |  4 ++--
 .../old-explorer-widget/old-explorer.component.ts       | 10 +++++-----
 .../data-explorer-add-visualization-dialog.component.ts |  6 +++---
 .../app/data-explorer-v2/services/data-lake.service.ts  |  2 +-
 .../services/data-view-data-explorer.service.ts         |  8 +++++---
 ui/src/app/data-explorer/data-explorer.component.ts     | 10 +++++-----
 .../data-explorer/explorer-widget/explorer.component.ts | 10 +++++-----
 .../app/platform-services/tsonld-serializer.service.ts  |  2 ++
 11 files changed, 48 insertions(+), 30 deletions(-)

diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/datalake/DataLakeMeasure.java b/streampipes-model/src/main/java/org/apache/streampipes/model/datalake/DataLakeMeasure.java
index 098617e..42b7af2 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/datalake/DataLakeMeasure.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/datalake/DataLakeMeasure.java
@@ -42,6 +42,13 @@ public class DataLakeMeasure extends UnnamedStreamPipesEntity {
     private EventSchema eventSchema;
 
     public DataLakeMeasure() {
+        super();
+    }
+
+    public DataLakeMeasure(DataLakeMeasure other) {
+        super(other);
+        this.measureName = other.getMeasureName();
+        this.eventSchema = new EventSchema(other.getEventSchema());
 
     }
 
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeResourceV3.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeResourceV3.java
index a018523..7766806 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeResourceV3.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeResourceV3.java
@@ -89,7 +89,7 @@ public class DataLakeResourceV3 extends AbstractRestInterface {
   public Response getAllInfos() {
     List<DataLakeMeasure> result = this.dataLakeManagement.getInfos();
 
-    return ok(result);
+    return ok(asContainer(result));
   }
 
   @Deprecated
diff --git a/ui/src/app/core-model/datalake/InfoResult.ts b/ui/src/app/core-model/datalake/DataLakeMeasure.ts
similarity index 70%
rename from ui/src/app/core-model/datalake/InfoResult.ts
rename to ui/src/app/core-model/datalake/DataLakeMeasure.ts
index 24aa468..73e649b 100644
--- a/ui/src/app/core-model/datalake/InfoResult.ts
+++ b/ui/src/app/core-model/datalake/DataLakeMeasure.ts
@@ -17,11 +17,18 @@
  */
 
 import { EventSchema } from '../../connect/schema-editor/model/EventSchema';
+import { RdfsClass } from '../../platform-services/tsonld/RdfsClass';
+import { RdfProperty } from '../../platform-services/tsonld/RdfsProperty';
 
-export class InfoResult {
-    public measureName: string;
-    public eventSchema: EventSchema;
+@RdfsClass('sp:DataLakeMeasure')
+export class DataLakeMeasure {
 
-    constructor () {
-    }
+  @RdfProperty('sp:hasMeasurementName')
+  public measureName: string;
+
+  @RdfProperty('sp:hasEventSchema')
+  public eventSchema: EventSchema;
+
+  constructor () {
+  }
 }
diff --git a/ui/src/app/core-services/datalake/datalake-rest.service.ts b/ui/src/app/core-services/datalake/datalake-rest.service.ts
index 36c40fc..ac5e105 100644
--- a/ui/src/app/core-services/datalake/datalake-rest.service.ts
+++ b/ui/src/app/core-services/datalake/datalake-rest.service.ts
@@ -20,7 +20,7 @@ import { HttpClient, HttpRequest } from '@angular/common/http';
 import { Injectable } from '@angular/core';
 import { DataResult } from '../../core-model/datalake/DataResult';
 import { GroupedDataResult } from '../../core-model/datalake/GroupedDataResult';
-import { InfoResult } from '../../core-model/datalake/InfoResult';
+import { DataLakeMeasure } from '../../core-model/datalake/DataLakeMeasure';
 import { PageResult } from '../../core-model/datalake/PageResult';
 import { AuthStatusService } from '../../services/auth-status.service';
 import { Observable } from "rxjs/Observable";
@@ -42,7 +42,7 @@ export class DatalakeRestService {
 
 
     getAllInfos() {
-        return this.http.get<InfoResult[]>(this.dataLakeUrlV3 + '/info');
+        return this.http.get<DataLakeMeasure[]>(this.dataLakeUrlV3 + '/info');
     }
 
     getDataPage(index, itemsPerPage, page) {
diff --git a/ui/src/app/data-explorer-v2/components/widgets/old-explorer-widget/old-explorer.component.ts b/ui/src/app/data-explorer-v2/components/widgets/old-explorer-widget/old-explorer.component.ts
index 513282c..199fd56 100644
--- a/ui/src/app/data-explorer-v2/components/widgets/old-explorer-widget/old-explorer.component.ts
+++ b/ui/src/app/data-explorer-v2/components/widgets/old-explorer-widget/old-explorer.component.ts
@@ -25,7 +25,7 @@ import { Observable } from 'rxjs/Observable';
 import { map, startWith } from 'rxjs/operators';
 import { DataResult } from '../../../../core-model/datalake/DataResult';
 import { GroupedDataResult } from '../../../../core-model/datalake/GroupedDataResult';
-import { InfoResult } from '../../../../core-model/datalake/InfoResult';
+import { DataLakeMeasure } from '../../../../core-model/datalake/DataLakeMeasure';
 import { DatalakeRestService } from '../../../../core-services/datalake/datalake-rest.service';
 import { DataDownloadDialog } from './datadownloadDialog/dataDownload.dialog';
 
@@ -38,12 +38,12 @@ export class OldExplorerComponent implements OnInit {
 
 
     myControl = new FormControl();
-    infoResult: InfoResult[];
-    filteredIndexInfos: Observable<InfoResult[]>;
+    infoResult: DataLakeMeasure[];
+    filteredIndexInfos: Observable<DataLakeMeasure[]>;
 
     page = 0;
     // selectedIndex: string = '';
-    selectedInfoResult: InfoResult = undefined;
+    selectedInfoResult: DataLakeMeasure = undefined;
 
     // timeunit selection
     selectedTimeUnit = '1 Hour';
@@ -387,7 +387,7 @@ export class OldExplorerComponent implements OnInit {
         });
     }
 
-    _filter(value: string): InfoResult[] {
+    _filter(value: string): DataLakeMeasure[] {
         const filterValue = value.toLowerCase();
 
         return this.infoResult.filter(option => option.measureName.toLowerCase().includes(filterValue));
diff --git a/ui/src/app/data-explorer-v2/dialogs/add-widget/data-explorer-add-visualization-dialog.component.ts b/ui/src/app/data-explorer-v2/dialogs/add-widget/data-explorer-add-visualization-dialog.component.ts
index d5bc8ba..38908eb 100644
--- a/ui/src/app/data-explorer-v2/dialogs/add-widget/data-explorer-add-visualization-dialog.component.ts
+++ b/ui/src/app/data-explorer-v2/dialogs/add-widget/data-explorer-add-visualization-dialog.component.ts
@@ -20,7 +20,7 @@ import { Component, Inject, OnInit } from '@angular/core';
 import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
 import { EventSchema } from '../../../connect/schema-editor/model/EventSchema';
 import { DataExplorerWidgetModel } from '../../../core-model/datalake/DataExplorerWidgetModel';
-import { InfoResult } from '../../../core-model/datalake/InfoResult';
+import { DataLakeMeasure } from '../../../core-model/datalake/DataLakeMeasure';
 import { ElementIconText } from '../../../services/get-element-icon-text.service';
 import { IDataViewDashboard } from '../../models/dataview-dashboard.model';
 import { DataExplorerWidgetRegistry } from '../../registry/data-explorer-widget-registry';
@@ -51,10 +51,10 @@ export class DataExplorerAddVisualizationDialogComponent implements OnInit {
     description: 'Select widget'
   }];
 
-  visualizableData: InfoResult[] = [];
+  visualizableData: DataLakeMeasure[] = [];
   availableWidgets: string[];
 
-  selectedDataSet: InfoResult;
+  selectedDataSet: DataLakeMeasure;
   selectedWidget: string;
 
   dashboard: IDataViewDashboard;
diff --git a/ui/src/app/data-explorer-v2/services/data-lake.service.ts b/ui/src/app/data-explorer-v2/services/data-lake.service.ts
index ff6116c..912396a 100644
--- a/ui/src/app/data-explorer-v2/services/data-lake.service.ts
+++ b/ui/src/app/data-explorer-v2/services/data-lake.service.ts
@@ -16,7 +16,7 @@
  *
  */
 
-import { Injectable } from "@angular/core";
+import { Injectable } from '@angular/core';
 
 @Injectable()
 export class DataLakeService {
diff --git a/ui/src/app/data-explorer-v2/services/data-view-data-explorer.service.ts b/ui/src/app/data-explorer-v2/services/data-view-data-explorer.service.ts
index 065a300..6ae3680 100644
--- a/ui/src/app/data-explorer-v2/services/data-view-data-explorer.service.ts
+++ b/ui/src/app/data-explorer-v2/services/data-view-data-explorer.service.ts
@@ -22,7 +22,7 @@ import { from, Observable } from 'rxjs';
 import 'rxjs-compat/add/observable/of';
 import { map } from 'rxjs/operators';
 import { DataExplorerWidgetModel } from '../../core-model/datalake/DataExplorerWidgetModel';
-import { InfoResult } from '../../core-model/datalake/InfoResult';
+import { DataLakeMeasure } from '../../core-model/datalake/DataLakeMeasure';
 import { DatalakeRestService } from '../../core-services/datalake/datalake-rest.service';
 import { SharedDatalakeRestService } from '../../core-services/shared/shared-dashboard.service';
 import { TsonLdSerializerService } from '../../platform-services/tsonld-serializer.service';
@@ -42,8 +42,10 @@ export class DataViewDataExplorerService {
               private sharedDatalakeRestService: SharedDatalakeRestService) {
   }
 
-  getVisualizableData(): Observable<InfoResult[]> {
-    return this.dataLakeRestService.getAllInfos();
+  getVisualizableData(): Observable<DataLakeMeasure[]> {
+    return this.dataLakeRestService.getAllInfos().map(data => {
+      return this.tsonLdSerializerService.fromJsonLdContainer(data, 'sp:DataLakeMeasure');
+    });
   }
 
   getDataViews(): Observable<IDataViewDashboard[]> {
diff --git a/ui/src/app/data-explorer/data-explorer.component.ts b/ui/src/app/data-explorer/data-explorer.component.ts
index 92792d4..d530eb5 100644
--- a/ui/src/app/data-explorer/data-explorer.component.ts
+++ b/ui/src/app/data-explorer/data-explorer.component.ts
@@ -21,7 +21,7 @@ import { FormControl } from '@angular/forms';
 import { MatSnackBar } from '@angular/material/snack-bar';
 import { Observable } from 'rxjs/Observable';
 import { map, startWith } from 'rxjs/operators';
-import { InfoResult } from '../core-model/datalake/InfoResult';
+import { DataLakeMeasure } from '../core-model/datalake/DataLakeMeasure';
 import { DatalakeRestService } from '../core-services/datalake/datalake-rest.service';
 
 @Component({
@@ -32,11 +32,11 @@ import { DatalakeRestService } from '../core-services/datalake/datalake-rest.ser
 export class DataExplorerComponent implements OnInit {
 
     myControl = new FormControl();
-    infoResult: InfoResult[];
-    filteredIndexInfos: Observable<InfoResult[]>;
+    infoResult: DataLakeMeasure[];
+    filteredIndexInfos: Observable<DataLakeMeasure[]>;
 
     page = 0;
-    selectedInfoResult: InfoResult = undefined;
+    selectedInfoResult: DataLakeMeasure = undefined;
 
     downloadFormat = 'csv';
     isDownloading = false;
@@ -61,7 +61,7 @@ export class DataExplorerComponent implements OnInit {
         this.selectedInfoResult = this._filter(index)[0];
     }
 
-    _filter(value: string): InfoResult[] {
+    _filter(value: string): DataLakeMeasure[] {
         const filterValue = value.toLowerCase();
 
         return this.infoResult.filter(option => option.measureName.toLowerCase().includes(filterValue));
diff --git a/ui/src/app/data-explorer/explorer-widget/explorer.component.ts b/ui/src/app/data-explorer/explorer-widget/explorer.component.ts
index 741d8eb..f1e0a4b 100644
--- a/ui/src/app/data-explorer/explorer-widget/explorer.component.ts
+++ b/ui/src/app/data-explorer/explorer-widget/explorer.component.ts
@@ -25,7 +25,7 @@ import { Observable } from 'rxjs/Observable';
 import { map, startWith } from 'rxjs/operators';
 import { DataResult } from '../../core-model/datalake/DataResult';
 import { GroupedDataResult } from '../../core-model/datalake/GroupedDataResult';
-import { InfoResult } from '../../core-model/datalake/InfoResult';
+import { DataLakeMeasure } from '../../core-model/datalake/DataLakeMeasure';
 import { DatalakeRestService } from '../../core-services/datalake/datalake-rest.service';
 import { DataDownloadDialog } from './datadownloadDialog/dataDownload.dialog';
 
@@ -37,12 +37,12 @@ import { DataDownloadDialog } from './datadownloadDialog/dataDownload.dialog';
 export class ExplorerComponent implements OnInit {
 
     myControl = new FormControl();
-    infoResult: InfoResult[];
-    filteredIndexInfos: Observable<InfoResult[]>;
+    infoResult: DataLakeMeasure[];
+    filteredIndexInfos: Observable<DataLakeMeasure[]>;
 
     page = 0;
     // selectedIndex: string = '';
-    selectedInfoResult: InfoResult = undefined;
+    selectedInfoResult: DataLakeMeasure = undefined;
 
     // timeunit selection
     selectedTimeUnit = '1 Hour';
@@ -379,7 +379,7 @@ export class ExplorerComponent implements OnInit {
         });
     }
 
-    _filter(value: string): InfoResult[] {
+    _filter(value: string): DataLakeMeasure[] {
         const filterValue = value.toLowerCase();
 
         return this.infoResult.filter(option => option.measureName.toLowerCase().includes(filterValue));
diff --git a/ui/src/app/platform-services/tsonld-serializer.service.ts b/ui/src/app/platform-services/tsonld-serializer.service.ts
index b60bce7..f60dc66 100644
--- a/ui/src/app/platform-services/tsonld-serializer.service.ts
+++ b/ui/src/app/platform-services/tsonld-serializer.service.ts
@@ -97,6 +97,7 @@ import {DashboardWidgetSettings} from "../core-model/dashboard/DashboardWidgetSe
 import {ColorPickerStaticProperty} from "../connect/model/ColorPickerStaticProperty";
 import {MappingPropertyNary} from "../connect/model/MappingPropertyNary";
 import { DataExplorerWidgetModel } from "../core-model/datalake/DataExplorerWidgetModel";
+import { DataLakeMeasure } from "../core-model/datalake/DataLakeMeasure";
 
 
 @Injectable()
@@ -192,6 +193,7 @@ export class TsonLdSerializerService {
         tsonld.addClassMapping(ColorPickerStaticProperty);
 
         tsonld.addClassMapping(DataExplorerWidgetModel);
+        tsonld.addClassMapping(DataLakeMeasure);
 
 
         tsonld.addContext('sp', 'https://streampipes.org/vocabulary/v1/');