You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampipes.apache.org by ri...@apache.org on 2020/09/15 18:44:18 UTC

[incubator-streampipes] 02/02: [STREAMPIPES-217] Add delete feature to file management

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

riemer pushed a commit to branch rel/0.67.0
in repository https://gitbox.apache.org/repos/asf/incubator-streampipes.git

commit 0964daca5c65783ef8318938d5692d5ab87bd7ae
Author: Dominik Riemer <ri...@fzi.de>
AuthorDate: Tue Sep 15 20:43:59 2020 +0200

    [STREAMPIPES-217] Add delete feature to file management
---
 .../streampipes/rest/api/IPipelineElementFile.java |  2 ++
 .../streampipes/rest/impl/PipelineElementFile.java |  7 ++++++
 .../file-overview/file-overview.component.html     |  6 +-----
 .../file-overview/file-overview.component.ts       | 25 +++++++++++++++++++---
 ui/src/app/files/files.module.ts                   |  2 ++
 ui/src/app/platform-services/apis/files.service.ts |  4 ++++
 6 files changed, 38 insertions(+), 8 deletions(-)

diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/api/IPipelineElementFile.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/api/IPipelineElementFile.java
index feb7c38..79c52d6 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/api/IPipelineElementFile.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/api/IPipelineElementFile.java
@@ -28,4 +28,6 @@ public interface IPipelineElementFile {
 
   Response getFileInfo(String filteredFiletypes);
 
+  Response deleteFile(String fileId);
+
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementFile.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementFile.java
index bb94a69..8d4e670 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementFile.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementFile.java
@@ -47,6 +47,13 @@ public class PipelineElementFile extends AbstractRestInterface implements IPipel
     }
   }
 
+  @DELETE
+  @Path("{fileId}")
+  public Response deleteFile(@PathParam("fileId") String fileId) {
+    FileManager.deleteFile(fileId);
+    return ok();
+  }
+
   @GET
   @Produces(MediaType.APPLICATION_JSON)
   @Override
diff --git a/ui/src/app/files/components/file-overview/file-overview.component.html b/ui/src/app/files/components/file-overview/file-overview.component.html
index 7402504..af32a8b 100644
--- a/ui/src/app/files/components/file-overview/file-overview.component.html
+++ b/ui/src/app/files/components/file-overview/file-overview.component.html
@@ -40,14 +40,10 @@
         <ng-container matColumnDef="action">
             <th mat-header-cell *matHeaderCellDef> Action</th>
             <td mat-cell *matCellDef="let fileMetadata">
-                <div fxLayout="row">
-                    <span fxFlex fxFlexOrder="3" fxLayout="row" fxLayoutAlign="center center">
-                    <button color="primary" mat-button mat-icon-button matTooltip="Delete pipeline" matTooltipPosition="above"
+                    <button color="primary" mat-button mat-icon-button matTooltip="Delete file" matTooltipPosition="above"
                             (click)="deleteFile(fileMetadata)">
                         <i class="material-icons">delete</i>
                     </button>
-                </span>
-                </div>
             </td>
         </ng-container>
 
diff --git a/ui/src/app/files/components/file-overview/file-overview.component.ts b/ui/src/app/files/components/file-overview/file-overview.component.ts
index e2ec5ea..80f53f7 100644
--- a/ui/src/app/files/components/file-overview/file-overview.component.ts
+++ b/ui/src/app/files/components/file-overview/file-overview.component.ts
@@ -21,6 +21,9 @@ import {FilesService} from "../../../platform-services/apis/files.service";
 import {FileMetadata} from "../../../core-model/gen/streampipes-model-client";
 import {MatTableDataSource} from "@angular/material/table";
 import {MatPaginator} from "@angular/material/paginator";
+import {DialogService} from "../../../core-ui/dialog/base-dialog/base-dialog.service";
+import {ConfirmDialogComponent} from "../../../core-ui/dialog/confirm-dialog/confirm-dialog.component";
+import {MatDialog} from "@angular/material/dialog";
 
 @Component({
   selector: 'file-overview',
@@ -37,7 +40,8 @@ export class FileOverviewComponent implements OnInit {
   @ViewChild(MatPaginator) paginator: MatPaginator;
   pageSize: number = 1;
 
-  constructor(private filesService: FilesService) {
+  constructor(private filesService: FilesService,
+              private dialog: MatDialog) {
 
   }
 
@@ -46,9 +50,7 @@ export class FileOverviewComponent implements OnInit {
   }
 
   refreshFiles() {
-    console.log("refreshing files");
     this.filesService.getFileMetadata().subscribe(fm => {
-      console.log(fm);
       this.dataSource = new MatTableDataSource<FileMetadata>(fm);
       this.filesAvailable = true;
       setTimeout(() => {
@@ -58,6 +60,23 @@ export class FileOverviewComponent implements OnInit {
   }
 
   deleteFile(fileMetadata: FileMetadata) {
+    let dialogRef = this.dialog.open(ConfirmDialogComponent, {
+      width: '500px',
+      data: {
+        "title": "Do you really want to delete this file?",
+        "subtitle": "This cannot be undone.",
+        "cancelTitle": "No",
+        "okTitle": "Yes",
+        "confirmAndCancel": true
+      },
+    });
 
+    dialogRef.afterClosed().subscribe(ev => {
+      if (ev) {
+        this.filesService.deleteFile(fileMetadata.fileId).subscribe(response => {
+          this.refreshFiles();
+        });
+      }
+    })
   }
 }
\ No newline at end of file
diff --git a/ui/src/app/files/files.module.ts b/ui/src/app/files/files.module.ts
index 398caeb..e7b238e 100644
--- a/ui/src/app/files/files.module.ts
+++ b/ui/src/app/files/files.module.ts
@@ -38,6 +38,7 @@ import {FileOverviewComponent} from "./components/file-overview/file-overview.co
 import {MatTableModule} from "@angular/material/table";
 import {MatPaginatorModule} from "@angular/material/paginator";
 import {MatChipsModule} from "@angular/material/chips";
+import {MatTooltipModule} from "@angular/material/tooltip";
 
 @NgModule({
   imports: [
@@ -58,6 +59,7 @@ import {MatChipsModule} from "@angular/material/chips";
     MatProgressBarModule,
     MatTableModule,
     MatTabsModule,
+    MatTooltipModule,
     PlatformServicesModule,
     ServicesModule
   ],
diff --git a/ui/src/app/platform-services/apis/files.service.ts b/ui/src/app/platform-services/apis/files.service.ts
index f07a1bf..017f193 100644
--- a/ui/src/app/platform-services/apis/files.service.ts
+++ b/ui/src/app/platform-services/apis/files.service.ts
@@ -56,4 +56,8 @@ export class FilesService {
           return (response as any[]).map(fm => FileMetadata.fromData(fm));
         }));
   }
+
+  deleteFile(fileId: string) {
+    return this.http.delete(this.platformServicesCommons.authUserBasePath() + "/files/" + fileId);
+  }
 }
\ No newline at end of file