diff options
author | Michael Lando <ml636r@att.com> | 2017-06-09 03:19:04 +0300 |
---|---|---|
committer | Michael Lando <ml636r@att.com> | 2017-06-09 03:19:04 +0300 |
commit | ed64b5edff15e702493df21aa3230b81593e6133 (patch) | |
tree | a4cb01fdaccc34930a8db403a3097c0d1e40914b /catalog-ui/src/app/ng2/services/data-type.service.ts | |
parent | 280f8015d06af1f41a3ef12e8300801c7a5e0d54 (diff) |
[SDC-29] catalog 1707 rebase commit.
Change-Id: I43c3dc5cf44abf5da817649bc738938a3e8388c1
Signed-off-by: Michael Lando <ml636r@att.com>
Diffstat (limited to 'catalog-ui/src/app/ng2/services/data-type.service.ts')
-rw-r--r-- | catalog-ui/src/app/ng2/services/data-type.service.ts | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/catalog-ui/src/app/ng2/services/data-type.service.ts b/catalog-ui/src/app/ng2/services/data-type.service.ts new file mode 100644 index 0000000000..e7ea1a8430 --- /dev/null +++ b/catalog-ui/src/app/ng2/services/data-type.service.ts @@ -0,0 +1,69 @@ +import { Injectable } from '@angular/core'; +import { DataTypeModel, DataTypesMap, PropertyBEModel, PropertyFEModel, DerivedFEProperty, DerivedFEPropertyMap } from "app/models"; +import { DataTypesService } from "app/services/data-types-service"; +import { PROPERTY_DATA, PROPERTY_TYPES } from "app/utils"; + +/** This is a new service for NG2, to eventually replace app/services/data-types-service.ts + * + * This service is a singleton that holds a map of all DataTypes, recieved from server on load. + * It also contains convenience methods to check if a string is a valid dataType, and to retrieve a dataType's properties recursively + */ + +@Injectable() +export class DataTypeService { + private dataTypes: DataTypesMap; + + constructor(private dataTypeService: DataTypesService) { + this.dataTypes = dataTypeService.getAllDataTypes(); //This should eventually be replaced by an NG2 call to the backend instead of utilizing Angular1 downgraded component. + } + + public getDataTypeByTypeName(typeName: string): DataTypeModel { + return this.dataTypes[typeName]; + } +/* + //if the dt derived from simple- return the first parent type, else- return null + public getTypeForDataTypeDerivedFromSimple = (dataTypeName:string):string => { + /////////temporary hack for tosca primitives/////////////////////// + if (!this.dataTypes[dataTypeName]) { + return PROPERTY_TYPES.STRING; + } + /////////////////////////////////////////////////////////////////// + if (this.dataTypes[dataTypeName].derivedFromName == PROPERTY_DATA.ROOT_DATA_TYPE || this.dataTypes[dataTypeName].properties) { + return null; + } + if (PROPERTY_DATA.SIMPLE_TYPES.indexOf(this.dataTypes[dataTypeName].derivedFromName) > -1) { + return this.dataTypes[dataTypeName].derivedFromName + } + return this.getTypeForDataTypeDerivedFromSimple(this.dataTypes[dataTypeName].derivedFromName); + }; + + /** + * The function returns all properties for the DataType passed in, and recurses through parent dataTypes (derivedFrom) to retrieve their properties as well + * @param dataTypeObj + * + public getDataTypePropertiesRecursively(dataTypeObj: DataTypeModel): Array<PropertyBEModel> { + let propertiesArray: Array<PropertyBEModel> = dataTypeObj.properties || []; + if (PROPERTY_DATA.ROOT_DATA_TYPE !== dataTypeObj.derivedFromName) { + propertiesArray = propertiesArray.concat(this.getDataTypePropertiesRecursively(dataTypeObj.derivedFrom)); + } + return propertiesArray; + } +*/ + + public getDerivedDataTypeProperties(dataTypeObj: DataTypeModel, propertiesArray: Array<DerivedFEProperty>, parentName: string) { + //push all child properties to array + if (dataTypeObj.properties) { + dataTypeObj.properties.forEach((derivedProperty) => { + propertiesArray.push(new DerivedFEProperty(derivedProperty, parentName)); + let derivedDataTypeObj: DataTypeModel = this.getDataTypeByTypeName(derivedProperty.type); + this.getDerivedDataTypeProperties(derivedDataTypeObj, propertiesArray, parentName + "#" + derivedProperty.name); + }); + } + //recurse parent (derivedFrom), in case one of parents contains properties + if (PROPERTY_DATA.ROOT_DATA_TYPE !== dataTypeObj.derivedFrom.name) { + this.getDerivedDataTypeProperties(dataTypeObj.derivedFrom, propertiesArray, parentName); + } + } + +} + |