[SDC-29] Amdocs OnBoard 1707 initial commit.
[sdc.git] / openecomp-be / lib / openecomp-sdc-translator-lib / openecomp-sdc-translator-core / src / main / java / org / openecomp / sdc / translator / services / heattotosca / ResourceTranslationFactory.java
index 730c2dd..ab8230d 100644 (file)
 package org.openecomp.sdc.translator.services.heattotosca;
 
 
-import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
+import org.openecomp.config.api.Configuration;
+import org.openecomp.config.api.ConfigurationManager;
+import org.openecomp.core.utilities.CommonMethods;
+import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
 import org.openecomp.sdc.heat.datatypes.model.Resource;
+import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.ResourceTranslationBase;
 
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationBase;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationCinderVolumeAttachmentImpl;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationCinderVolumeImpl;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationContrailAttachPolicyImpl;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationContrailNetworkPolicyImpl;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationContrailServiceInstanceImpl;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationContrailServiceTemplateImpl;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationContrailV2NetworkPolicyImpl;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationContrailV2VirtualNetworkImpl;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationContrailV2VmInterfaceImpl;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationContrailVirtualNetworkImpl;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationDefaultImpl;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationNestedImpl;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationNeutronNetImpl;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationNeutronPortImpl;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationNeutronSecurityGroupImpl;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationNeutronSubnetImpl;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationNovaServerGroupsImpl;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationNovaServerImpl;
-import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationResourceGroupImpl;
+import java.util.Map;
 
-import java.util.Objects;
 
 public class ResourceTranslationFactory {
+  private static Map<String, ImplementationConfiguration> resourceTranslationImplMap;
+
+  static {
+    Configuration config = ConfigurationManager.lookup();
+    resourceTranslationImplMap = config.populateMap(ConfigConstants.TRANSLATOR_NAMESPACE,
+        ConfigConstants.RESOURCE_TRANSLATION_IMPL_KEY, ImplementationConfiguration.class);
+    resourceTranslationImplMap.putAll(config.populateMap(ConfigConstants.MANDATORY_TRANSLATOR_NAMESPACE,
+        ConfigConstants.RESOURCE_TRANSLATION_IMPL_KEY, ImplementationConfiguration.class));
+  }
 
   /**
-   * Gets instance.
+   * Gets resource translation instance.
    *
    * @param resource the resource
    * @return the instance
    */
   public static ResourceTranslationBase getInstance(Resource resource) {
-    HeatResourcesTypes heatResource = HeatResourcesTypes.findByHeatResource(resource.getType());
-    if (Objects.isNull(heatResource)) {
-      if (HeatToToscaUtil.isYmlFileType(resource.getType())) {
-        return new ResourceTranslationNestedImpl();
-      }
-      return new ResourceTranslationDefaultImpl();
-    }
-    switch (heatResource) {
-      case NOVA_SERVER_RESOURCE_TYPE:
-        return new ResourceTranslationNovaServerImpl();
-      case NOVA_SERVER_GROUP_RESOURCE_TYPE:
-        return new ResourceTranslationNovaServerGroupsImpl();
-      case NEUTRON_SECURITY_GROUP_RESOURCE_TYPE:
-        return new ResourceTranslationNeutronSecurityGroupImpl();
-      case NEUTRON_PORT_RESOURCE_TYPE:
-        return new ResourceTranslationNeutronPortImpl();
-      case CONTRAIL_VIRTUAL_NETWORK_RESOURCE_TYPE:
-        return new ResourceTranslationContrailVirtualNetworkImpl();
-      case CONTRAIL_V2_VIRTUAL_NETWORK_RESOURCE_TYPE:
-        return new ResourceTranslationContrailV2VirtualNetworkImpl();
-      case CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE:
-        return new ResourceTranslationContrailV2VmInterfaceImpl();
-      case CINDER_VOLUME_RESOURCE_TYPE:
-        return new ResourceTranslationCinderVolumeImpl();
-      case CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE:
-        return new ResourceTranslationCinderVolumeAttachmentImpl();
-      case NEUTRON_NET_RESOURCE_TYPE:
-        return new ResourceTranslationNeutronNetImpl();
-      case NEUTRON_SUBNET_RESOURCE_TYPE:
-        return new ResourceTranslationNeutronSubnetImpl();
-      case CONTRAIL_NETWORK_RULE_RESOURCE_TYPE:
-        return new ResourceTranslationContrailNetworkPolicyImpl();
-      case CONTRAIL_V2_NETWORK_RULE_RESOURCE_TYPE:
-        return new ResourceTranslationContrailV2NetworkPolicyImpl();
-      case CONTRAIL_NETWORK_ATTACH_RULE_RESOURCE_TYPE:
-        return new ResourceTranslationContrailAttachPolicyImpl();
-      case RESOURCE_GROUP_RESOURCE_TYPE:
-        return new ResourceTranslationResourceGroupImpl();
-      case CONTRAIL_SERVICE_TEMPLATE:
-        return new ResourceTranslationContrailServiceTemplateImpl();
-      case CONTRAIL_SERVICE_INSTANCE:
-        return new ResourceTranslationContrailServiceInstanceImpl();
-      default:
-        return new ResourceTranslationDefaultImpl();
+    if (isSupportedResource(resource.getType())) {
+      return getResourceTranslationImpl(resource.getType());
+    } else if (HeatToToscaUtil.isYmlFileType(resource.getType())) {
+      return getResourceTranslationImpl(ConfigConstants.NESTED_RESOURCE_TRANSLATION_IMPL_KEY);
     }
+    return getResourceTranslationImpl(ConfigConstants.DEFAULT_RESOURCE_TRANSLATION_IMPL_KEY);
+  }
+
+  private static ResourceTranslationBase getResourceTranslationImpl(String resourceImplKey) {
+    String resourceTranslationImplClassName = resourceTranslationImplMap
+        .get(resourceImplKey).getImplementationClass();
+    return CommonMethods
+        .newInstance(resourceTranslationImplClassName, ResourceTranslationBase.class);
   }
 
+  private static boolean isSupportedResource(String resourceType) {
+    if (resourceTranslationImplMap.containsKey(resourceType)
+        && resourceTranslationImplMap.get(resourceType).isEnable()) {
+      return true;
+    }
+    return false;
+  }
 
 }
+