--- /dev/null
+import {PackageCreationModes} from './PackageCreationModes';
+import {CBAPackage, Definition, Scripts} from '../mapping-models/CBAPacakge.model';
+import {FilesContent} from '../mapping-models/metadata/MetaDataTab.model';
+import {Import, Metadata, VlbDefinition} from '../mapping-models/definitions/VlbDefinition';
+import {PackageCreationUtils} from '../package-creation.utils';
+
+
+export class DesignerCreationMode extends PackageCreationModes {
+
+ constructor() {
+ super();
+ }
+
+ execute(cbaPackage: CBAPackage, packageCreationUtils: PackageCreationUtils) {
+ this.addToscaMetaDataFile(cbaPackage.metaData);
+ this.createDefinitionsFolder(cbaPackage.definitions, packageCreationUtils);
+ this.addScriptsFolder(cbaPackage.scripts);
+ }
+
+
+ /* private createDefinitionsFolder(definition: Definition) {
+ definition.imports.forEach((key, value) => {
+ console.log(key);
+ FilesContent.putData(key, value);
+ });
+
+ }*/
+
+ private addScriptsFolder(scripts: Scripts) {
+ scripts.files.forEach((key, value) => {
+ FilesContent.putData(key, value);
+ });
+ }
+
+ private createDefinitionsFolder(definition: Definition, packageCreationUtils: PackageCreationUtils) {
+ definition.imports.forEach((key, valueOfFile) => {
+ FilesContent.putData(key, valueOfFile);
+ });
+
+ const filenameEntry = 'Definitions/vLB_CDS.json';
+ const vlbDefinition: VlbDefinition = new VlbDefinition();
+ const metadata: Metadata = new Metadata();
+
+ metadata.template_author = 'Shaaban Ebrahim';
+ metadata.template_name = definition.metaDataTab.name;
+ metadata.template_tags = definition.metaDataTab.tags;
+ metadata.template_version = definition.metaDataTab.version;
+ metadata['author-email'] = 'shaaban.eltanany.ext@orange.com';
+ metadata['user-groups'] = 'test';
+ definition.metaDataTab.mapOfCustomKey.forEach((key, customKeyValue) => {
+ metadata[key] = customKeyValue;
+ });
+ vlbDefinition.metadata = metadata;
+ // const files = Import[definition.imports.size];
+ const files: Import[] = [];
+ definition.imports.forEach((key, valueOfFile) => {
+ files.push({file: valueOfFile});
+ });
+ console.log(vlbDefinition);
+ vlbDefinition.imports = files;
+ /* vlbDefinition.imports = this.definition.imports; /!*[{
+ this.this.definition.imports.forEach(key,value =>{
+
+ });
+ file: 'Definitions/data_types.json'
+ }]; */
+
+ const value = packageCreationUtils.transformToJson(vlbDefinition);
+ FilesContent.putData(filenameEntry, value);
+ console.log('hello there');
+ console.log(FilesContent.getMapOfFilesNamesAndContent());
+
+ }
+}
--- /dev/null
+/*import {CBAPackage} from '../mapping-models/CBAPacakge.model';
+import {PackageCreationModes} from './PackageCreationModes';
+
+export class GenericCreationMode extends PackageCreationModes {
+
+ execute(cbaPackage: CBAPackage) {
+ this.addToscaMetaDataFile(cbaPackage.metaData);
+ }
+
+
+}
+*/
+++ /dev/null
-import {CBAPackage} from '../mapping-models/CBAPacakge.model';
-
-export abstract class PackageCreation {
-
- abstract setModeType(cbaPackage: CBAPackage);
-
- abstract setEntryPoint(cbaPackage: CBAPackage);
-
- createToscaMetaData(cbaPackage: CBAPackage) {
-
- }
-
-}
--- /dev/null
+import {CBAPackage} from '../mapping-models/CBAPacakge.model';
+import {ModeType} from '../mapping-models/ModeType';
+import {DesignerCreationMode} from './DesignerCreationMode';
+import {PackageCreationModes} from './PackageCreationModes';
+
+
+export class PackageCreationBuilder {
+
+ constructor() {
+ }
+
+ public static getCreationMode(cbaPackage: CBAPackage): PackageCreationModes {
+ let creationMode: PackageCreationModes;
+ /*if (cbaPackage.metaData.mode.includes(ModeType.Generic)) {
+ creationMode = new GenericCreationMode();
+ } else */
+ if (cbaPackage.metaData.mode.includes(ModeType.Designer)) {
+ creationMode = new DesignerCreationMode();
+ } /*else if (cbaPackage.metaData.mode.includes(ModeType.Scripting)) {
+ creationMode = new ScriptingCreationMode();
+ }*/
+ return creationMode;
+ }
+}
--- /dev/null
+import {CBAPackage} from '../mapping-models/CBAPacakge.model';
+import {ModeType} from '../mapping-models/ModeType';
+import {FilesContent, MetaDataTabModel} from '../mapping-models/metadata/MetaDataTab.model';
+import {PackageCreationUtils} from '../package-creation.utils';
+
+
+export abstract class PackageCreationModes {
+
+ protected constructor() {
+ }
+
+ public static setEntryPoint(metaDataTab: MetaDataTabModel) {
+ if (metaDataTab.mode.startsWith(ModeType.Designer)) {
+ metaDataTab.entryFileName = 'Definitions/vLB_CDS.json';
+ } else {
+ // TODO Not implemented
+ metaDataTab.entryFileName = '';
+ }
+ return metaDataTab;
+ }
+
+ public static mapModeType(cbaPackage: CBAPackage) {
+ if (cbaPackage.metaData.mode.startsWith('Scripting')) {
+ cbaPackage.metaData.mode = ModeType.Scripting;
+ } else if (cbaPackage.metaData.mode.startsWith('Designer')) {
+ cbaPackage.metaData.mode = ModeType.Designer;
+ } else {
+ cbaPackage.metaData.mode = ModeType.Generic;
+ }
+ return cbaPackage;
+ }
+
+ getValueOfMetaData(metaDataTab: MetaDataTabModel): string {
+ return 'TOSCA-Meta-File-Version: 1.0.0\n' +
+ 'CSAR-Version: 1.0\n' +
+ 'Created-By: Shaaban Ebrahim <shaaban.eltanany.ext@orange.con>\n' +
+ 'Entry-Definitions:' + metaDataTab.entryFileName + '\n' +
+ 'Template-Name:' + metaDataTab.name + '\n' +
+ 'Template-Version:' + metaDataTab.version + '\n' +
+ 'Template-Type: ' + metaDataTab.mode + '\n' +
+ 'Template-Tags:' + metaDataTab.tags;
+
+ }
+
+ protected addToscaMetaDataFile(metaDataTab: MetaDataTabModel) {
+ const filename = 'TOSCA-Metadata/TOSCA.meta';
+ FilesContent.putData(this.getValueOfMetaData(metaDataTab), filename);
+ }
+
+
+ abstract execute(cbaPackage: CBAPackage, packageCreationUtils: PackageCreationUtils) ;
+
+
+}
--- /dev/null
+/*import {CBAPackage, Definition, Scripts} from '../mapping-models/CBAPacakge.model';
+import {PackageCreationModes} from './PackageCreationModes';
+import {FilesContent} from '../mapping-models/metadata/MetaDataTab.model';
+
+export class ScriptingCreationMode extends PackageCreationModes {
+ execute(cbaPackage: CBAPackage) {
+ }
+
+
+}
+*/
<button class="btn btn-link collapsed" data-toggle="collapse"
[attr.data-target]="'#id-'+mapIndex" aria-expanded="false"
[attr.aria-controls]="'id-'+mapIndex">
- <i class="icon-file-code"></i> Definitions/{{file.key}}
+ <i class="icon-file-code"></i> {{file.key}}
</button>
<a class="accordion-delete" (click)="removeFile(mapIndex)"><i class="icon-delete"></i></a>
</h5>
</div>
</div>
</div>
-</div>
\ No newline at end of file
+</div>
droppedFile.file((file: File) => {
const fileReader = new FileReader();
fileReader.onload = (e) => {
- this.packageCreationStore.addDefinition(droppedFile.name,
- this.packageCreationUtils.transformToJson(fileReader.result));
+ this.packageCreationStore.addDefinition('Definitions/' + droppedFile.name,
+ fileReader.result.toString());
};
fileReader.readAsText(file);
});
--- /dev/null
+export enum ModeType {
+ Scripting = 'KOTLIN_SCRIPT',
+ Designer = 'DEFAULT',
+ Generic = 'GENERIC_SCRIPT'
+}
export class MetaDataFile {
- static getValueOfMetaData(metaDataTab: MetaDataTabModel): string {
- return 'TOSCA-Meta-File-Version: 1.0.0\n' +
- 'CSAR-Version: 1.0\n' +
- 'Created-By: Shaaban Ebrahim <shaaban.eltanany.ext@orange.con>\n' +
- 'Entry-Definitions:' + metaDataTab.entryFileName + '\n' +
- 'Template-Name:' + metaDataTab.name + '\n' +
- 'Template-Version:' + metaDataTab.version + '\n' +
- 'Template-Type: ' + metaDataTab.mode + '\n' +
- 'Template-Tags:' + metaDataTab.tags;
-
- }
}
public static putData(fileName: string, content: string) {
FilesContent.mapOfFilesNamesAndContent.set(fileName, content);
}
+
+ public static clear() {
+ this.mapOfFilesNamesAndContent = new Map<string, string>();
+ }
}
*/
import {Component, OnInit} from '@angular/core';
-import {FilesContent, FolderNodeElement, MetaDataFile, MetaDataTabModel} from './mapping-models/metadata/MetaDataTab.model';
-// import {saveAs} from 'file-saver/dist/FileSaver';
+import {FilesContent, FolderNodeElement, MetaDataTabModel} from './mapping-models/metadata/MetaDataTab.model';
+
import * as JSZip from 'jszip';
import {PackageCreationStore} from './package-creation.store';
import {Definition} from './mapping-models/CBAPacakge.model';
+import {PackageCreationModes} from './creationModes/PackageCreationModes';
+import {PackageCreationBuilder} from './creationModes/PackageCreationBuilder';
+import {PackageCreationUtils} from './package-creation.utils';
+
@Component({
selector: 'app-package-creation',
private filesData: any = [];
private definition: Definition = new Definition();
- constructor(private packageCreationStore: PackageCreationStore) {
+ // adding initial referencing to designer mode
+
+
+ constructor(private packageCreationStore: PackageCreationStore, private packageCreationUtils: PackageCreationUtils) {
}
ngOnInit() {
this.packageCreationStore.state$.subscribe(
cbaPackage => {
console.log(cbaPackage);
- this.metaDataTab = cbaPackage.metaData;
- this.setModeType(this.metaDataTab);
- this.setEntryPoint(this.metaDataTab);
- this.addToscaMetaDataFile(this.metaDataTab);
-
- this.definition = cbaPackage.definitions;
- this.definition.metaDataTab = cbaPackage.metaData;
- this.createDefinitionsFolder(this.definition);
- // const vlbDefinition: VlbDefinition = new VlbDefinition();
- // this.fillVLBDefinition(vlbDefinition, this.metaDataTab);
-
+ FilesContent.clear();
+ let packageCreationModes: PackageCreationModes;
+ cbaPackage = PackageCreationModes.mapModeType(cbaPackage);
+ cbaPackage.metaData = PackageCreationModes.setEntryPoint(cbaPackage.metaData);
+ packageCreationModes = PackageCreationBuilder.getCreationMode(cbaPackage);
+ packageCreationModes.execute(cbaPackage, this.packageCreationUtils);
this.filesData.push(this.folder.TREE_DATA);
this.saveBluePrintToDataBase();
});
}
- private addToscaMetaDataFile(metaDataTab: MetaDataTabModel) {
- const filename = 'TOSCA-Metadata/TOSCA.meta';
- FilesContent.putData(filename, MetaDataFile.getValueOfMetaData(metaDataTab));
- }
-
-// TODO use enumerator
- private setModeType(metaDataTab: MetaDataTabModel) {
- if (metaDataTab.mode.startsWith('Scripting')) {
- metaDataTab.mode = 'KOTLIN_SCRIPT';
- } else if (metaDataTab.mode.startsWith('Designer')) {
- metaDataTab.mode = 'DEFAULT';
- } else {
- metaDataTab.mode = 'GENERIC_SCRIPT';
- }
- }
-
- private setEntryPoint(metaDataTab: MetaDataTabModel) {
- if (metaDataTab.mode.startsWith('DEFAULT')) {
- metaDataTab.entryFileName = 'Definitions/vLB_CDS.json';
- } else {
- metaDataTab.entryFileName = '';
- }
- }
saveBluePrintToDataBase() {
this.create();
create() {
- this.folder.TREE_DATA.forEach((path) => {
+ FilesContent.getMapOfFilesNamesAndContent().forEach((key, value) => {
+ this.zipFile.folder(key.split('/')[0]);
+ this.zipFile.file(key, value);
+ });
+ /*this.folder.TREE_DATA.forEach((path) => {
const name = path.name;
if (path.children) {
this.zipFile.folder(name);
if (FilesContent.getMapOfFilesNamesAndContent().has(name2)) {
this.zipFile.file(name + '/' + name2, FilesContent.getMapOfFilesNamesAndContent().get(name2));
} else {
+ // this.zipFile.file(name2, FilesContent.getMapOfFilesNamesAndContent().get(name2));
}
});
}
- });
+ });*/
}
- private createDefinitionsFolder(definition: Definition) {
- this.definition.imports.forEach((key, value) => {
- FilesContent.putData(key, value);
- });
-
- /*const filenameEntry = 'vLB_CDS.json';
- const vlbDefinition: VlbDefinition = new VlbDefinition();
- const metadata: MetaDataTabModel = new MetaDataTabModel();
-
- metadata.templateAuthor = ' lldkslds';
- metadata.templateName = ' lldkslds';
- metadata.templateTags = ' lldkslds';
- metadata.templateVersion = ' lldkslds';
- metadata['author-email'] = ' lldkslds';
- metadata['user-groups'] = ' lldkslds';
- vlbDefinition.metadata = metadata;
-
- vlbDefinition.imports = [{
- file: 'Definitions/data_types.json'
- }];
-
- const value = this.packageCreationUtils.transformToJson(vlbDefinition);
- FilesContent.putData(filenameEntry, value);*/
- }
}
<button [attr.aria-controls]="'id-'+mapIndex" [attr.data-target]="'#id-'+mapIndex"
aria-expanded="false" class="btn btn-link collapsed"
data-toggle="collapse">
- <i class="icon-file-code"></i> Definitions/{{file.key}}
+ <i class="icon-file-code"></i> {{file.key}}
</button>
<a (click)="removeFile(mapIndex)" class="accordion-delete"><i class="icon-delete"></i></a>
</h5>
droppedFile.file((file: File) => {
const fileReader = new FileReader();
fileReader.onload = (e) => {
- this.packageCreationStore.addScripts(droppedFile.name,
- this.packageCreationUtils.transformToJson(fileReader.result));
+ this.packageCreationStore.addScripts('Scripts/' + droppedFile.name,
+ fileReader.result.toString());
};
fileReader.readAsText(file);
});
<modules>
<module>client</module>
- <module>designer-client</module>
+ <!--<module>designer-client</module>-->
<module>server</module>
<module>application</module>
</modules>