894716711d6987da0360be2db38dfc497b9e885a
[ccsdk/cds.git] /
1 import {Component, OnInit} from '@angular/core';
2 import {PackageCreationService} from '../package-creation.service';
3 import {PackageCreationUtils} from '../package-creation.utils';
4 import {Router} from '@angular/router';
5 import {FilesContent, FolderNodeElement, MetaDataFile, MetaDataTabModel} from '../mapping-models/metadata/MetaDataTab.model';
6 import * as JSZip from 'jszip';
7 import {PackageCreationStore} from '../package-creation.store';
8
9
10 @Component({
11     selector: 'app-metadata-tab',
12     templateUrl: './metadata-tab.component.html',
13     styleUrls: ['./metadata-tab.component.css']
14 })
15 export class MetadataTabComponent implements OnInit {
16
17     counter = 0;
18     modes: object[] = [
19         {name: 'Designer Mode', style: 'mode-icon icon-designer-mode'},
20         {name: 'Scripting Mode', style: 'mode-icon icon-scripting-mode'}];
21     private metaDataTab: MetaDataTabModel = new MetaDataTabModel();
22
23     private folder: FolderNodeElement = new FolderNodeElement();
24     private zipFile: JSZip = new JSZip();
25     private filesData: any = [];
26     private errorMessage: string;
27
28     constructor(private packageCreationService: PackageCreationService, private packageCreationUtils: PackageCreationUtils,
29                 private router: Router, private packageCreationStore: PackageCreationStore) {
30
31     }
32
33     ngOnInit() {
34         this.packageCreationStore.changeMetaData(this.metaDataTab);
35     }
36
37     saveMetaData() {
38         this.setModeType(this.metaDataTab);
39         this.setEntryPoint(this.metaDataTab);
40
41         this.addToscaMetaDataFile(this.metaDataTab);
42
43         // const vlbDefinition: VlbDefinition = new VlbDefinition();
44         // this.fillVLBDefinition(vlbDefinition, this.metaDataTab);
45
46         this.filesData.push(this.folder.TREE_DATA);
47         this.saveBluePrint();
48         this.packageCreationService.refreshPackages();
49         this.router.navigate(['/packages']);
50
51     }
52
53     addToscaMetaDataFile(metaDataTab: MetaDataTabModel) {
54         const filename = 'TOSCA.meta';
55         FilesContent.putData(filename, MetaDataFile.getObjectInstance(this.metaDataTab));
56     }
57
58     private setModeType(metaDataTab: MetaDataTabModel) {
59         if (metaDataTab.mode.startsWith('Scripting')) {
60             metaDataTab.mode = 'KOTLIN_SCRIPT';
61         } else if (metaDataTab.mode.startsWith('Designer')) {
62             metaDataTab.mode = 'DEFAULT';
63         } else {
64             metaDataTab.mode = 'GENERIC_SCRIPT';
65         }
66     }
67
68     saveBluePrint() {
69         this.create();
70         this.zipFile.generateAsync({type: 'blob'})
71             .then(blob => {
72                 this.packageCreationService.savePackage(blob);
73
74             });
75     }
76
77
78     create() {
79         this.folder.TREE_DATA.forEach((path) => {
80
81             const name = path.name;
82             if (path.children) {
83                 this.zipFile.folder(name);
84                 path.children.forEach(children => {
85                     const name2 = children.name;
86                     if (FilesContent.getMapOfFilesNamesAndContent().has(name2)) {
87                         this.zipFile.file(name + '/' + name2, FilesContent.getMapOfFilesNamesAndContent().get(name2));
88                     } else {
89                     }
90
91                 });
92
93             }
94         });
95     }
96
97     private setEntryPoint(metaDataTab: MetaDataTabModel) {
98         if (metaDataTab.mode.startsWith('DEFAULT')) {
99             metaDataTab.entryFileName = 'Definitions/vLB_CDS.json';
100         } else {
101             metaDataTab.entryFileName = '';
102         }
103
104
105     }
106
107     /* private fillVLBDefinition(vlbDefinition: VlbDefinition, metaDataTab: MetaDataTabModel) {
108
109          const metadata: Metadata = new Metadata();
110          metadata.template_author = 'Shaaban';
111          metadata.template_name = metaDataTab.templateName;
112          metadata.template_tags = metaDataTab.tags;
113
114          metadata.dictionary_group = 'default';
115          metadata.template_version = metaDataTab.version;
116          metadata['author-email'] = 'shaaban.altanany.ext@orange.com';
117          metadata['user-groups'] = 'ADMIN';
118          vlbDefinition.tosca_definitions_version = metaDataTab.version;
119          vlbDefinition.metadata = metadata;
120          const value = this.packageCreationUtils.transformToJson(vlbDefinition);
121          console.log(value);
122          FilesContent.putData('vLB_CDS.json', value);
123      }*/
124
125     validatePackageNameAndVersion() {
126         if (this.metaDataTab.name && this.metaDataTab.version) {
127             this.packageCreationService.checkBluePrintNameAndVersion(this.metaDataTab.name, this.metaDataTab.version).then(element => {
128                 if (element) {
129                     this.errorMessage = 'the package with name and version is exists';
130                 } else {
131                     this.errorMessage = ' ';
132                 }
133             });
134         }
135
136     }
137 }