Support default value for category specific metadata 63/119363/4
authordavsad <david.sadlier@est.tech>
Mon, 15 Mar 2021 08:37:18 +0000 (08:37 +0000)
committerChristophe Closset <christophe.closset@intl.att.com>
Wed, 17 Mar 2021 12:07:40 +0000 (12:07 +0000)
Issue-ID: SDC-3513
Signed-off-by: davsad <david.sadlier@est.tech>
Change-Id: I4697b66c6d59c1464cf81f9c68fe76b6ca24472c

catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CategoriesImportManager.java
catalog-ui/src/app/models/category.ts
catalog-ui/src/app/view-models/workspace/tabs/general/general-view-model.ts
catalog-ui/src/app/view-models/workspace/tabs/general/general-view.html
common-be/src/main/java/org/openecomp/sdc/be/datatypes/category/MetadataKeyDataDefinition.java
common-be/src/main/java/org/openecomp/sdc/be/datatypes/enums/MetadataKeyEnum.java

index 84b23fe..754420d 100644 (file)
@@ -255,6 +255,7 @@ public class CategoriesImportManager {
             metadataKeyDef.setMandatory(mandatory);
             List<String> validValues = (List<String>) metadataKeyInfo.get(MetadataKeyEnum.VALID_VALUES.getName());
             metadataKeyDef.setValidValues(validValues);
+            metadataKeyDef.setDefaultValue((String) metadataKeyInfo.get(MetadataKeyEnum.DEFAULT.getName()));
             metadataKeyDefs.add(metadataKeyDef);
         }
         return metadataKeyDefs;
index 64588d0..2c1bc21 100644 (file)
@@ -50,6 +50,7 @@ export interface IGroup extends ICategoryBase {
 
 export interface IMetadataKey {
        name:string;
-       mandatory:boolean
+       mandatory:boolean;
        validValues: string[];
+       defaultValue: string;
 }
index 54caa42..1065404 100644 (file)
@@ -634,14 +634,14 @@ export class GeneralViewModel {
             if (this.$scope.component.categories[0].metadataKeys) {
                 for (let metadataKey of this.$scope.component.categories[0].metadataKeys) {
                     if (!this.$scope.component.categorySpecificMetadata[metadataKey.name]) {
-                        this.$scope.component.categorySpecificMetadata[metadataKey.name] = "";
+                        this.$scope.component.categorySpecificMetadata[metadataKey.name] = metadataKey.defaultValue ? metadataKey.defaultValue : "";
                    }
                 }
             }
             if (this.$scope.component.categories[0].subcategories && this.$scope.component.categories[0].subcategories[0].metadataKeys) {
                 for (let metadataKey of this.$scope.component.categories[0].subcategories[0].metadataKeys) {
                     if (!this.$scope.component.categorySpecificMetadata[metadataKey.name]) {
-                        this.$scope.component.categorySpecificMetadata[metadataKey.name] = "";
+                        this.$scope.component.categorySpecificMetadata[metadataKey.name] = metadataKey.defaultValue ? metadataKey.defaultValue : "";
                    }
                 }
             }
@@ -678,9 +678,17 @@ export class GeneralViewModel {
             return this.getMetadataKey(this.$scope.component.categories, key) != null;
         }
 
-       this.$scope.isCategoryServiceMetadataKey = (key: string): boolean => {
+        this.$scope.isCategoryServiceMetadataKey = (key: string): boolean => {
             return this.isServiceMetadataKey(key);
         }
+
+        this.$scope.isMetadataKeyForComponentCategoryService = (key: string, attribute: string): boolean => {
+            let metadatakey = this.getMetadataKey(this.$scope.component.categories, key);
+            if (metadatakey && (!this.$scope.component[attribute] || !metadatakey.validValues.find(v => v === this.$scope.component[attribute]))) {
+                this.$scope.component[attribute] = metadatakey.defaultValue;
+            }
+            return metadatakey != null;
+         }
     }
 
     private setUnsavedChanges = (hasChanges: boolean): void => {
index cb661f7..40300c8 100644 (file)
 
                     <!--------------------- NAMING POLICY  -------------------->
                     <div ng-if="component.isService()" class="i-sdc-form-item" data-ng-class="{'error': validateField(editForm.namingPolicy)}">
-                        <div ng-if="component.selectedCategory && isMetadataKeyForComponentCategory('Naming Policy')">
+                        <div ng-if="component.selectedCategory && isMetadataKeyForComponentCategoryService('Naming Policy', 'namingPolicy')">
                                <div ng-if="isMetadataKeyMandatory('Naming Policy')">
                                 <label class="i-sdc-form-label required">Naming Policy</label>
                                </div>
                                <div ng-if="!isMetadataKeyMandatory('Naming Policy')">
-                                <label class="i-sdc-form-label" translate="GENERAL_TAB_LABEL_NAMING_POLICY"></label>
+                                <label class="i-sdc-form-label">Naming Policy</label>
                                </div>
                                <select class="i-sdc-form-input" type="text"
                                       ng-required="isMetadataKeyMandatory('Naming Policy')"
                     <div ng-if="component.isService()"
                          class="i-sdc-form-item"
                          data-ng-class="{'error': validateField(editForm.serviceFunctionType)}">
-                        <div ng-if="component.selectedCategory && isMetadataKeyForComponentCategory('Service Type')">
+                        <div ng-if="component.selectedCategory && isMetadataKeyForComponentCategoryService('Service Type', 'serviceType')">
                                <div ng-if="isMetadataKeyMandatory('Service Type')">
                                 <label class="i-sdc-form-label required" translate="GENERAL_TAB_LABEL_SERVICE_TYPE"></label>
                             </div>
                     <div ng-if="component.isService()"
                          class="i-sdc-form-item"
                          data-ng-class="{'error': validateField(editForm.serviceRole)}">
-                        <div ng-if="component.selectedCategory && isMetadataKeyForComponentCategory('Service Role')">
+                        <div ng-if="component.selectedCategory && isMetadataKeyForComponentCategoryService('Service Role', 'serviceRole')">
                                <div ng-if="isMetadataKeyMandatory('Service Role')">
                                 <label class="i-sdc-form-label required" translate="GENERAL_TAB_LABEL_SERVICE_ROLE"></label>
                                </div>
                     <div ng-if="component.isService()"
                          class="i-sdc-form-item"
                          data-ng-class="{'error': validateField(editForm.serviceFunction)}">
-                        <label class="i-sdc-form-label required" translate="GENERAL_TAB_LABEL_SERVICE_FUNCTION"></label>
-                        <div ng-if="component.selectedCategory && isMetadataKeyForComponentCategory('Service Function')">
+                        <div ng-if="component.selectedCategory && isMetadataKeyForComponentCategoryService('Service Function', 'serviceFunction')">
+                            <div ng-if="isMetadataKeyMandatory('Service Function')">
+                                <label class="i-sdc-form-label required" translate="GENERAL_TAB_LABEL_SERVICE_FUNCTION"></label>
+                            </div>
+                            <div ng-if="!isMetadataKeyMandatory('Service Function')">
+                                <label class="i-sdc-form-label" translate="GENERAL_TAB_LABEL_SERVICE_FUNCTION"></label>
+                            </div>
                                <select class="i-sdc-form-input" type="text"
-                                      data-required
+                                      ng-required="isMetadataKeyMandatory('Service Function')"
                                       data-ng-class="{'view-mode': isViewMode()}"
                                       data-ng-model="component.serviceFunction"
                                       data-ng-model-options="{ debounce: 500 }"
                                </select>
                         </div>
                         <div ng-if="!component.selectedCategory || !isMetadataKeyForComponentCategory('Service Function')">
+                              <label class="i-sdc-form-label" translate="GENERAL_TAB_LABEL_SERVICE_FUNCTION"></label>
                               <input class="i-sdc-form-input" type="text"
                                       data-ng-class="{'view-mode': isViewMode()}"
                                       data-ng-model="component.serviceFunction"
                                       name="serviceFunction"
                                       data-tests-id="serviceFunction"
-                                      data-ng-maxlength="256"
-                                      data-ng-pattern="validation.ServiceTypeAndRoleValidationPattern"
+                                      data-ng-maxlength="256"
+                                      data-ng-pattern="validation.ServiceTypeAndRoleValidationPattern"
                                />
                         </div>
                         <div class="input-error" data-ng-show="validateField(editForm.serviceFunction)">
index 4d8a197..3278ec6 100644 (file)
@@ -35,10 +35,12 @@ public class MetadataKeyDataDefinition extends ToscaDataDefinition {
     private String name;
     private List<String> validValues;
     private boolean mandatory;
+    private String defaultValue;
     
     public MetadataKeyDataDefinition(MetadataKeyDataDefinition metadataKeyDataDefinition) {
         this.name = metadataKeyDataDefinition.name;
         this.validValues = metadataKeyDataDefinition.validValues;
         this.mandatory = metadataKeyDataDefinition.mandatory;
+        this.defaultValue = metadataKeyDataDefinition.defaultValue;
     }
 }
index 138c60b..aab37d1 100644 (file)
@@ -27,7 +27,8 @@ public enum MetadataKeyEnum {
     METADATA_KEYS("metadataKeys"),
     NAME("name"),
     MANDATORY("mandatory"),
-    VALID_VALUES("validValues");
+    VALID_VALUES("validValues"),
+    DEFAULT("default");
 
     private final String name;