File structure code separation 83/93883/1
authorEzhilarasi <ezhrajam@in.ibm.com>
Mon, 19 Aug 2019 15:24:41 +0000 (20:54 +0530)
committerEzhilarasi <ezhrajam@in.ibm.com>
Mon, 19 Aug 2019 15:24:50 +0000 (20:54 +0530)
Separated repeated code in the modules
Change-Id: I71a52e597ecd74798b7fec20a58773699448ebcd
Issue-ID: CCSDK-1275
Signed-off-by: Ezhilarasi <ezhrajam@in.ibm.com>
cds-ui/client/src/app/feature-modules/blueprint/blueprint.module.ts
cds-ui/client/src/app/feature-modules/blueprint/common-module/zipfile-extraction/zipfile-extraction.component.html [new file with mode: 0644]
cds-ui/client/src/app/feature-modules/blueprint/common-module/zipfile-extraction/zipfile-extraction.component.scss [new file with mode: 0644]
cds-ui/client/src/app/feature-modules/blueprint/common-module/zipfile-extraction/zipfile-extraction.component.spec.ts [new file with mode: 0644]
cds-ui/client/src/app/feature-modules/blueprint/common-module/zipfile-extraction/zipfile-extraction.component.ts [new file with mode: 0644]

index 27803ce..edbaca6 100644 (file)
@@ -32,10 +32,12 @@ import { DeployTemplateModule } from './deploy-template/deploy-template.module';
 import { TestTemplateModule } from './test-template/test-template.module';
 import { AppMaterialModule } from '../../../app/common/modules/app-material.module';
 import { ReactiveFormsModule } from '@angular/forms';
+import { ZipfileExtractionComponent } from './common-module/zipfile-extraction/zipfile-extraction.component';
 
 @NgModule({
   declarations: [
-    BlueprintComponent
+    BlueprintComponent,
+    ZipfileExtractionComponent
   ],
   imports: [
     CommonModule,
diff --git a/cds-ui/client/src/app/feature-modules/blueprint/common-module/zipfile-extraction/zipfile-extraction.component.html b/cds-ui/client/src/app/feature-modules/blueprint/common-module/zipfile-extraction/zipfile-extraction.component.html
new file mode 100644 (file)
index 0000000..9b7f44b
--- /dev/null
@@ -0,0 +1,20 @@
+<!--
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2019 IBM Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+============LICENSE_END============================================
+-->
\ No newline at end of file
diff --git a/cds-ui/client/src/app/feature-modules/blueprint/common-module/zipfile-extraction/zipfile-extraction.component.scss b/cds-ui/client/src/app/feature-modules/blueprint/common-module/zipfile-extraction/zipfile-extraction.component.scss
new file mode 100644 (file)
index 0000000..93f5c9d
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2019 IBM Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+============LICENSE_END============================================
+*/
\ No newline at end of file
diff --git a/cds-ui/client/src/app/feature-modules/blueprint/common-module/zipfile-extraction/zipfile-extraction.component.spec.ts b/cds-ui/client/src/app/feature-modules/blueprint/common-module/zipfile-extraction/zipfile-extraction.component.spec.ts
new file mode 100644 (file)
index 0000000..a6674ca
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2019 IBM Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+============LICENSE_END============================================
+*/
+
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ZipfileExtractionComponent } from './zipfile-extraction.component';
+
+describe('ZipfileExtractionComponent', () => {
+  let component: ZipfileExtractionComponent;
+  let fixture: ComponentFixture<ZipfileExtractionComponent>;
+
+  beforeEach(async(() => {
+    TestBed.configureTestingModule({
+      declarations: [ ZipfileExtractionComponent ]
+    })
+    .compileComponents();
+  }));
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(ZipfileExtractionComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/cds-ui/client/src/app/feature-modules/blueprint/common-module/zipfile-extraction/zipfile-extraction.component.ts b/cds-ui/client/src/app/feature-modules/blueprint/common-module/zipfile-extraction/zipfile-extraction.component.ts
new file mode 100644 (file)
index 0000000..2683ff5
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2019 IBM Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+============LICENSE_END============================================
+*/
+import { Component, OnInit } from '@angular/core';
+import * as JSZip from 'jszip';
+import { SortPipe } from '../../../../common/shared/pipes/sort.pipe';
+import { LoaderService } from '../../../../common/core/services/loader.service';
+
+@Component({
+  selector: 'app-zipfile-extraction',
+  templateUrl: './zipfile-extraction.component.html',
+  styleUrls: ['./zipfile-extraction.component.scss']
+})
+export class ZipfileExtractionComponent implements OnInit {
+  private paths = [];
+  private tree;
+  private zipFile: JSZip = new JSZip();
+  private fileObject: any;
+  private activationBlueprint: any;
+  private tocsaMetadaData: any;
+  private blueprintName: string;
+  private entryDefinition: string;
+  validfile: boolean = false;
+  uploadedFileName: string;
+
+  constructor(private loader: LoaderService) { }
+
+  ngOnInit() {
+  }
+  async buildFileViewData(zip) {
+    this.validfile = false;
+    this.paths = [];
+    console.log(zip.files);
+    for (var file in zip.files) {
+      console.log("name: " + zip.files[file].name);
+      this.fileObject = {
+        // nameForUIDisplay: this.uploadedFileName + '/' + zip.files[file].name,
+        // name: zip.files[file].name,
+        name: this.uploadedFileName + '/' + zip.files[file].name,
+        data: ''
+      };
+      const value = <any>await zip.files[file].async('string');
+      this.fileObject.data = value;
+      this.paths.push(this.fileObject);
+    }
+
+    if (this.paths) {
+      this.paths.forEach(path => {
+        if (path.name.includes("TOSCA.meta")) {
+          this.validfile = true
+        }
+      });
+    } else {
+      alert('Please update proper file');
+    }
+
+    if (this.validfile) {
+      this.fetchTOSACAMetadata();
+      this.paths = new SortPipe().transform(this.paths, 'asc', 'name');
+      this.tree = this.arrangeTreeData(this.paths);
+    } else {
+      alert('Please update proper file with TOSCA metadata');
+    }
+  }
+
+  arrangeTreeData(paths) {
+    const tree = [];
+
+    paths.forEach((path) => {
+
+      const pathParts = path.name.split('/');
+      // pathParts.shift();
+      let currentLevel = tree;
+
+      pathParts.forEach((part) => {
+        const existingPath = currentLevel.filter(level => level.name === part);
+
+        if (existingPath.length > 0) {
+          currentLevel = existingPath[0].children;
+        } else {
+          const newPart = {
+            name: part,
+            children: [],
+            data: path.data,
+            path: path.name
+          };
+          if (part.trim() == this.blueprintName.trim()) {
+            this.activationBlueprint = path.data;
+            newPart.data = JSON.parse(this.activationBlueprint.toString());
+            console.log('newpart', newPart);
+            this.entryDefinition = path.name.trim();
+          }
+          if (newPart.name !== '') {
+            currentLevel.push(newPart);
+            currentLevel = newPart.children;
+          }
+        }
+      });
+    });
+    this.loader.hideLoader();
+    return tree;
+  }
+
+  fetchTOSACAMetadata() {
+    let toscaData = {};
+    this.paths.forEach(file => {
+      if (file.name.includes('TOSCA.meta')) {
+        let keys = file.data.split("\n");
+        keys.forEach((key) => {
+          let propertyData = key.split(':');
+          toscaData[propertyData[0]] = propertyData[1];
+        });
+      }
+    });
+    this.blueprintName = (((toscaData['Entry-Definitions']).split('/'))[1]).toString();;
+    console.log(toscaData);
+  }
+
+}