Add default baseType to the substitution type 68/131768/2
authorimamSidero <imam.hussain@est.tech>
Mon, 24 Oct 2022 16:20:46 +0000 (17:20 +0100)
committerMichael Morris <michael.morris@est.tech>
Tue, 25 Oct 2022 13:05:19 +0000 (13:05 +0000)
Enabling default baseType in substitution type to be selected

Issue-ID: SDC-4229
Signed-off-by: Imam hussain <imam.hussain@est.tech>
Change-Id: I869ede4c4e030adc3c4418c28ed787b4c10248dd

catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ElementBusinessLogic.java
catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ElementServlet.java
catalog-be/src/test/java/org/openecomp/sdc/ElementOperationMock.java
catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IElementOperation.java
catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ElementOperation.java
catalog-ui/src/app/models/base-types.ts
catalog-ui/src/app/view-models/workspace/tabs/general/general-view-model.ts
common-app-api/src/main/java/org/openecomp/sdc/be/config/CategoryBaseTypeConfig.java

index caea46a..176cded 100644 (file)
@@ -1303,4 +1303,14 @@ public class ElementBusinessLogic extends BaseBusinessLogic {
     public boolean isBaseTypeRequired(final String categoryName) {
         return elementOperation.isBaseTypeRequired(categoryName);
     }
+
+    /**
+     * Fetches default baseType from the template.
+     *
+     * @param categoryName the category name
+     * @return defaultBaseType mapped to the corresponding category name.
+     */
+    public String getDefaultBaseType(final String categoryName) {
+        return elementOperation.getDefaultBaseType(categoryName);
+    }
 }
index e949b13..5e4085c 100644 (file)
@@ -217,6 +217,7 @@ public class ElementServlet extends BeGenericServlet {
                 final Map<String, Object> baseTypesMap = new HashMap<>();
                 baseTypesMap.put("baseTypes", either.left().value());
                 baseTypesMap.put("required", elementBL.isBaseTypeRequired(categoryName));
+                baseTypesMap.put("defaultBaseType",elementBL.getDefaultBaseType(categoryName));
 
                 return buildOkResponse(getComponentsUtils().getResponseFormat(ActionStatus.OK), baseTypesMap);
             }
index 1416707..d9e6e8e 100644 (file)
@@ -292,4 +292,9 @@ public class ElementOperationMock implements IElementOperation {
         return true;
     }
 
+    @Override
+    public String getDefaultBaseType(String categoryName) {
+        return "";
+    }
+
 }
index ebc5632..e942ee1 100644 (file)
@@ -96,6 +96,8 @@ public interface IElementOperation {
      */
     boolean isBaseTypeRequired(String categoryName);
 
+    String getDefaultBaseType(String categoryName);
+
     Either<CategoryDefinition, ActionStatus> getCategory(NodeTypeEnum nodeType, String categoryId);
 
     Either<SubCategoryDefinition, ActionStatus> getSubCategoryUniqueForType(NodeTypeEnum nodeType, String normalizedName);
index 127d778..bf74a26 100644 (file)
@@ -426,6 +426,18 @@ public class ElementOperation implements IElementOperation {
     private Configuration getConfiguration() {
         return ConfigurationManager.getConfigurationManager().getConfiguration();
     }
+    @Override
+    public String getDefaultBaseType(final String categoryName) {
+        final Map<String, CategoryBaseTypeConfig> categoriesSpecificBaseTypeMap = getConfiguration().getServiceBaseNodeTypes();
+        if (MapUtils.isEmpty(categoriesSpecificBaseTypeMap)) {
+            return null;
+        }
+        final CategoryBaseTypeConfig categoryBaseTypeConfig = categoriesSpecificBaseTypeMap.get(categoryName);
+        if (categoryBaseTypeConfig == null) {
+            return null;
+        }
+        return categoryBaseTypeConfig.getDefaultBaseType();
+    }
 
     @Override
     public boolean isBaseTypeRequired(final String categoryName) {
index 526355e..69aafa3 100644 (file)
@@ -21,6 +21,7 @@
 interface ListBaseTypesResponse {
   baseTypes: BaseTypeResponse[];
   required: boolean;
+  defaultBaseType: string;
 }
 
 interface BaseTypeResponse {
index 77c9330..2d029cd 100644 (file)
@@ -910,13 +910,19 @@ export class GeneralViewModel {
         this.$scope.isBaseTypeRequired = baseTypeResponseList.required;
         this.$scope.baseTypes = [];
         this.$scope.baseTypeVersions = [];
+        let defaultBaseType = baseTypeResponseList.defaultBaseType;
         baseTypeResponseList.baseTypes.forEach(baseType => this.$scope.baseTypes.push(baseType.toscaResourceName));
-        if (this.$scope.isBaseTypeRequired) {
-            const baseType = baseTypeResponseList.baseTypes[0];
-            baseType.versions.reverse().forEach(version => this.$scope.baseTypeVersions.push(version));
-            if(!this.$scope.component.derivedFromGenericType) {
-                this.$scope.component.derivedFromGenericType = baseType.toscaResourceName;
+        if (this.$scope.isBaseTypeRequired || defaultBaseType != null) {
+            let baseType = baseTypeResponseList.baseTypes[0];
+            if(defaultBaseType != null){
+                baseTypeResponseList.baseTypes.forEach(baseTypeObj => {
+                    if(baseTypeObj.toscaResourceName == defaultBaseType) {
+                        baseType = baseTypeObj;
+                    }
+                });
             }
+            baseType.versions.reverse().forEach(version => this.$scope.baseTypeVersions.push(version));
+            this.$scope.component.derivedFromGenericType = baseType.toscaResourceName;
             this.$scope.component.derivedFromGenericVersion = this.$scope.baseTypeVersions[0];
             this.$scope.showBaseTypeVersions = true;
             return