/*- * ============LICENSE_START======================================================= * SDC * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END========================================================= */ package org.openecomp.sdc.translator.services.heattotosca; import java.util.Map; import org.onap.config.api.Configuration; import org.onap.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; public class ResourceTranslationFactory { private static Map 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 resource translation instance. * * @param resource the resource * @return the instance */ public static ResourceTranslationBase getInstance(Resource resource) { 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; } }