tenthe commented on code in PR #3804:
URL: https://github.com/apache/streampipes/pull/3804#discussion_r2399088729


##########
ui/src/app/connect/dialog/adapter-started/adapter-started-dialog.component.ts:
##########
@@ -214,6 +242,92 @@ export class AdapterStartedDialog implements OnInit {
         this.shepherdService.trigger('confirm_adapter_started_button');
     }
 
+    async addToAsset(): Promise<void> {
+        this.pollingActive = false;

Review Comment:
   It seems this is a legacy variable, can we remove it form this class?



##########
ui/projects/streampipes/platform-services/src/lib/model/assets/asset.model.ts:
##########
@@ -43,6 +43,13 @@ export interface AssetLink {
     navigationActive: boolean;
 }
 
+export interface LinkageData {

Review Comment:
   Can you please add a small comment what this class is used for?



##########
ui/src/app/connect/dialog/adapter-started/adapter-started-dialog.component.ts:
##########
@@ -214,6 +242,92 @@ export class AdapterStartedDialog implements OnInit {
         this.shepherdService.trigger('confirm_adapter_started_button');
     }
 
+    async addToAsset(): Promise<void> {
+        this.pollingActive = false;
+
+        try {
+            const adapter = await this.getAdapter();
+            const linkageData: LinkageData[] = this.createLinkageData(adapter);
+
+            if (this.saveInDataLake) {
+                await this.addDataLakeLinkageData(adapter, linkageData);
+            }
+
+            await this.saveAssets(linkageData);
+            this.setSuccessMessage(linkageData);
+        } catch (err) {
+            console.error('Error in addToAsset:', err);
+        }
+    }
+
+    private async getAdapter(): Promise<AdapterDescription> {
+        return await this.adapterService
+            .getAdapter(this.adapterElementId)
+            .toPromise();
+    }
+
+    private createLinkageData(adapter: AdapterDescription): LinkageData[] {
+        return [
+            {
+                type: 'adapter',
+                id: this.adapterElementId,
+                name: adapter.name,
+            },
+            {
+                type: 'data-source',
+                id: adapter.correspondingDataStreamElementId,
+                name: adapter.name,
+            },
+        ];
+    }
+
+    private async addDataLakeLinkageData(
+        adapter: AdapterDescription,
+        linkageData: LinkageData[],
+    ): Promise<void> {
+        const pipelineId = `persist-${this.adapter.name.replaceAll(' ', '-')}`;
+        linkageData.push({
+            type: 'pipeline',
+            id: pipelineId,
+            name: pipelineId,
+        });
+
+        const res = await this.dataLakeService
+            .getMeasurementByName(adapter.name)
+            .toPromise();
+
+        linkageData.push({
+            type: 'measurement',
+            id: res.elementId,
+            name: adapter.name,
+        });
+    }
+
+    private async saveAssets(linkageData: LinkageData[]): Promise<void> {
+        await this.assetSaveService.saveSelectedAssets(
+            this.selectedAssets,
+            linkageData,
+        );
+    }
+
+    private setSuccessMessage(linkageData: LinkageData[]): void {
+        const assetTypesList = this.formatWithAnd(
+            linkageData.map(data => data.type),
+        );
+
+        const assetIdsList = this.formatWithAnd(
+            this.selectedAssets.map(asset => asset.assetName),
+        );
+
+        this.addToAssetText = `Your ${assetTypesList} were successfully added 
to ${assetIdsList}.`;

Review Comment:
   Can you please add support for multiple languages here.



##########
ui/src/app/connect/dialog/adapter-started/adapter-started-dialog.component.ts:
##########
@@ -214,6 +242,92 @@ export class AdapterStartedDialog implements OnInit {
         this.shepherdService.trigger('confirm_adapter_started_button');
     }
 
+    async addToAsset(): Promise<void> {
+        this.pollingActive = false;
+
+        try {
+            const adapter = await this.getAdapter();
+            const linkageData: LinkageData[] = this.createLinkageData(adapter);
+
+            if (this.saveInDataLake) {
+                await this.addDataLakeLinkageData(adapter, linkageData);
+            }
+
+            await this.saveAssets(linkageData);
+            this.setSuccessMessage(linkageData);
+        } catch (err) {
+            console.error('Error in addToAsset:', err);
+        }
+    }
+
+    private async getAdapter(): Promise<AdapterDescription> {
+        return await this.adapterService
+            .getAdapter(this.adapterElementId)
+            .toPromise();

Review Comment:
   Looks like `.toPromise()` is deprecated — you might want to use 
`firstValueFrom(...)` here instead:
   
   ```
   return await 
firstValueFrom(this.adapterService.getAdapter(this.adapterElementId));
   ```
   
   



##########
ui/src/app/connect/dialog/adapter-started/adapter-started-dialog.component.ts:
##########
@@ -214,6 +242,92 @@ export class AdapterStartedDialog implements OnInit {
         this.shepherdService.trigger('confirm_adapter_started_button');
     }
 
+    async addToAsset(): Promise<void> {
+        this.pollingActive = false;
+
+        try {
+            const adapter = await this.getAdapter();
+            const linkageData: LinkageData[] = this.createLinkageData(adapter);
+
+            if (this.saveInDataLake) {
+                await this.addDataLakeLinkageData(adapter, linkageData);
+            }
+
+            await this.saveAssets(linkageData);

Review Comment:
   ```suggestion
              this.saveAssets(linkageData);
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to