Create new VSP, onboard from TOSCA file - UI
[sdc.git] / openecomp-be / backend / openecomp-sdc-vendor-software-product-manager / src / main / java / org / openecomp / sdc / vendorsoftwareproduct / impl / orchestration / process / OrchestrationProcessFactory.java
1 package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process;
2
3 import org.openecomp.config.api.Configuration;
4 import org.openecomp.config.api.ConfigurationManager;
5 import org.openecomp.core.utilities.CommonMethods;
6 import org.openecomp.core.utilities.file.FileUtils;
7 import org.openecomp.core.utilities.json.JsonUtil;
8 import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
9 import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
10 import org.openecomp.sdc.vendorsoftwareproduct.types.ConfigConstants;
11
12 import java.util.HashMap;
13 import java.util.Map;
14 import java.util.Optional;
15 import java.util.concurrent.ConcurrentHashMap;
16
17 import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationUtil.ORCHESTRATION_CONFIG_NAMESPACE;
18 public class OrchestrationProcessFactory {
19
20   private static final String confFile = "config-orchestration.json";
21   private static Map<String, ImplementationConfiguration> processImplMap;
22
23   static {
24     Configuration config = ConfigurationManager.lookup();
25     processImplMap = new ConcurrentHashMap<>(config.populateMap(ORCHESTRATION_CONFIG_NAMESPACE,
26         ConfigConstants.processImplKey, ImplementationConfiguration.class));
27
28   }
29
30   public static Optional<OrchestrationTemplateProcessHandler> getInstance(String filePrefix) {
31     filePrefix = filePrefix == null ? null : filePrefix.toLowerCase().trim();
32     if (filePrefix == null) {
33       return Optional.empty();
34     }
35
36     OnboardingTypesEnum onboardingTypesEnum = OnboardingTypesEnum.getOnboardingTypesEnum(filePrefix);
37     if (onboardingTypesEnum == null) {
38       return Optional.empty();
39     }
40
41     try {
42       return Optional.of(createInstance(processImplMap.get(onboardingTypesEnum.toString())));
43     }catch (Exception e){
44       return Optional.empty();
45     }
46   }
47
48   private static Map<String, String> getOrchestrationImplMap(){
49     try {
50       return FileUtils.readViaInputStream(confFile,
51               stream -> JsonUtil.json2Object(stream, Map.class));
52     }catch (Exception e){
53       return new HashMap<>();
54     }
55   }
56
57   private static OrchestrationTemplateProcessHandler createInstance(ImplementationConfiguration implClass)
58       throws Exception {
59     OrchestrationTemplateProcessHandler handler;
60     handler =
61         CommonMethods.newInstance(implClass.getImplementationClass(), OrchestrationTemplateProcessHandler.class);
62     return handler;
63   }
64 }