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';
11 selector: 'app-metadata-tab',
12 templateUrl: './metadata-tab.component.html',
13 styleUrls: ['./metadata-tab.component.css']
15 export class MetadataTabComponent implements OnInit {
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();
23 private folder: FolderNodeElement = new FolderNodeElement();
24 private zipFile: JSZip = new JSZip();
25 private filesData: any = [];
26 private errorMessage: string;
28 constructor(private packageCreationService: PackageCreationService, private packageCreationUtils: PackageCreationUtils,
29 private router: Router, private packageCreationStore: PackageCreationStore) {
34 this.packageCreationStore.changeMetaData(this.metaDataTab);
38 this.setModeType(this.metaDataTab);
39 this.setEntryPoint(this.metaDataTab);
41 this.addToscaMetaDataFile(this.metaDataTab);
43 // const vlbDefinition: VlbDefinition = new VlbDefinition();
44 // this.fillVLBDefinition(vlbDefinition, this.metaDataTab);
46 this.filesData.push(this.folder.TREE_DATA);
48 this.packageCreationService.refreshPackages();
49 this.router.navigate(['/packages']);
53 addToscaMetaDataFile(metaDataTab: MetaDataTabModel) {
54 const filename = 'TOSCA.meta';
55 FilesContent.putData(filename, MetaDataFile.getObjectInstance(this.metaDataTab));
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';
64 metaDataTab.mode = 'GENERIC_SCRIPT';
70 this.zipFile.generateAsync({type: 'blob'})
72 this.packageCreationService.savePackage(blob);
79 this.folder.TREE_DATA.forEach((path) => {
81 const name = path.name;
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));
97 private setEntryPoint(metaDataTab: MetaDataTabModel) {
98 if (metaDataTab.mode.startsWith('DEFAULT')) {
99 metaDataTab.entryFileName = 'Definitions/vLB_CDS.json';
101 metaDataTab.entryFileName = '';
107 /* private fillVLBDefinition(vlbDefinition: VlbDefinition, metaDataTab: MetaDataTabModel) {
109 const metadata: Metadata = new Metadata();
110 metadata.template_author = 'Shaaban';
111 metadata.template_name = metaDataTab.templateName;
112 metadata.template_tags = metaDataTab.tags;
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);
122 FilesContent.putData('vLB_CDS.json', value);
125 validatePackageNameAndVersion() {
126 if (this.metaDataTab.name && this.metaDataTab.version) {
127 this.packageCreationService.checkBluePrintNameAndVersion(this.metaDataTab.name, this.metaDataTab.version).then(element => {
129 this.errorMessage = 'the package with name and version is exists';
131 this.errorMessage = ' ';