Handle lazy init of activitySpecs
[so.git] / asdc-controller / src / main / java / org / onap / so / asdc / activity / DeployActivitySpecs.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.so.asdc.activity;
22
23 import java.util.ArrayList;
24 import java.util.List;
25 import org.springframework.beans.factory.annotation.Autowired;
26 import org.springframework.core.env.Environment;
27 import org.springframework.stereotype.Component;
28 import org.springframework.transaction.annotation.Transactional;
29 import org.onap.so.asdc.activity.beans.ActivitySpec;
30 import org.onap.so.asdc.activity.beans.Input;
31 import org.onap.so.asdc.activity.beans.Output;
32 import org.onap.so.db.catalog.beans.ActivitySpecActivitySpecCategories;
33 import org.onap.so.db.catalog.beans.ActivitySpecActivitySpecParameters;
34 import org.onap.so.db.catalog.beans.ActivitySpecParameters;
35 import org.onap.so.db.catalog.data.repository.ActivitySpecRepository;
36 import org.slf4j.Logger;
37 import org.slf4j.LoggerFactory;
38
39 @Component
40 public class DeployActivitySpecs {
41     @Autowired
42     private ActivitySpecsActions activitySpecsActions;
43
44     @Autowired
45     private Environment env;
46
47     @Autowired
48     private ActivitySpecRepository activitySpecRepository;
49
50     private static final String SDC_ENDPOINT = "mso.asdc.config.activity.endpoint";
51     private static final String DIRECTION_INPUT = "input";
52     private static final String DIRECTION_OUTPUT = "output";
53
54     protected static final Logger logger = LoggerFactory.getLogger(DeployActivitySpecs.class);
55
56     @Transactional
57     public void deployActivities() throws Exception {
58         String hostname = env.getProperty(SDC_ENDPOINT);
59         logger.debug("{} {}", "SDC ActivitySpec endpoint: ", hostname);
60         if (hostname == null || hostname.isEmpty()) {
61             return;
62         }
63         List<org.onap.so.db.catalog.beans.ActivitySpec> activitySpecsFromCatalog = activitySpecRepository.findAll();
64         for (org.onap.so.db.catalog.beans.ActivitySpec activitySpecFromCatalog : activitySpecsFromCatalog) {
65             logger.debug("{} {}", "Attempting to create activity ", activitySpecFromCatalog.getName());
66             ActivitySpec activitySpec = mapActivitySpecFromCatalogToSdc(activitySpecFromCatalog);
67             String activitySpecId = activitySpecsActions.createActivitySpec(hostname, activitySpec);
68             if (activitySpecId != null) {
69                 logger.info("{} {}", "Successfully created activitySpec", activitySpec.getName());
70                 boolean certificationResult = activitySpecsActions.certifyActivitySpec(hostname, activitySpecId);
71                 if (certificationResult) {
72                     logger.info("{} {}", "Successfully certified activitySpec", activitySpec.getName());
73                 } else {
74                     logger.info("{} {}", "Failed to certify activitySpec", activitySpec.getName());
75                 }
76             } else {
77                 logger.info("{} {}", "Failed to create activitySpec", activitySpec.getName());
78             }
79         }
80     }
81
82     public ActivitySpec mapActivitySpecFromCatalogToSdc(
83             org.onap.so.db.catalog.beans.ActivitySpec activitySpecFromCatalog) {
84         ActivitySpec activitySpec = new ActivitySpec();
85         activitySpec.setName(activitySpecFromCatalog.getName());
86         activitySpec.setDescription(activitySpecFromCatalog.getDescription());
87         mapCategoryList(activitySpecFromCatalog.getActivitySpecActivitySpecCategories(), activitySpec);
88         mapInputsAndOutputs(activitySpecFromCatalog.getActivitySpecActivitySpecParameters(), activitySpec);
89         return activitySpec;
90     }
91
92     private void mapCategoryList(List<ActivitySpecActivitySpecCategories> activitySpecActivitySpecCategories,
93             ActivitySpec activitySpec) {
94         if (activitySpecActivitySpecCategories == null || activitySpecActivitySpecCategories.size() == 0) {
95             return;
96         }
97         List<String> categoryList = new ArrayList<String>();
98         for (ActivitySpecActivitySpecCategories activitySpecCat : activitySpecActivitySpecCategories) {
99             if (activitySpecCat != null) {
100                 if (activitySpecCat.getActivitySpecCategories() != null) {
101                     categoryList.add(activitySpecCat.getActivitySpecCategories().getName());
102                 }
103             }
104         }
105         activitySpec.setCategoryList(categoryList);
106     }
107
108     private void mapInputsAndOutputs(List<ActivitySpecActivitySpecParameters> activitySpecActivitySpecParameters,
109             ActivitySpec activitySpec) {
110         if (activitySpecActivitySpecParameters == null || activitySpecActivitySpecParameters.size() == 0) {
111             return;
112         }
113         List<Input> inputs = new ArrayList<Input>();
114         List<Output> outputs = new ArrayList<Output>();
115         for (ActivitySpecActivitySpecParameters activitySpecParam : activitySpecActivitySpecParameters) {
116             if (activitySpecParam != null) {
117                 if (activitySpecParam.getActivitySpecParameters() != null) {
118                     ActivitySpecParameters activitySpecParameters = activitySpecParam.getActivitySpecParameters();
119                     if (activitySpecParameters != null) {
120                         if (activitySpecParameters.getDirection().equals(DIRECTION_INPUT)) {
121                             Input input = new Input();
122                             input.setName(activitySpecParameters.getName());
123                             input.setType(activitySpecParameters.getType());
124                             inputs.add(input);
125                         } else if (activitySpecParameters.getDirection().equals(DIRECTION_OUTPUT)) {
126                             Output output = new Output();
127                             output.setName(activitySpecParameters.getName());
128                             output.setType(activitySpecParameters.getType());
129                             outputs.add(output);
130                         }
131                     }
132                 }
133             }
134         }
135         activitySpec.setInputs(inputs);
136         activitySpec.setOutputs(outputs);
137         return;
138     }
139 }