Add collaboration feature
[sdc.git] / openecomp-be / lib / openecomp-healing-lib / openecomp-sdc-healing-impl / src / main / java / org / openecomp / sdc / healing / healers / HeatToToscaTranslationHealer.java
1 package org.openecomp.sdc.healing.healers;
2
3
4 import org.openecomp.core.model.dao.ServiceModelDao;
5 import org.openecomp.core.model.dao.ServiceModelDaoFactory;
6 import org.openecomp.core.model.types.ServiceElement;
7 import org.openecomp.core.translator.datatypes.TranslatorOutput;
8 import org.openecomp.core.utilities.file.FileContentHandler;
9 import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
10 import org.openecomp.sdc.common.utils.CommonUtil;
11 import org.openecomp.sdc.healing.interfaces.Healer;
12 import org.openecomp.sdc.logging.api.Logger;
13 import org.openecomp.sdc.logging.api.LoggerFactory;
14 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
15 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
16 import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
17 import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao;
18 import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDaoFactory;
19 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateEntity;
20 import org.openecomp.sdc.versioning.dao.types.Version;
21
22 import java.util.Objects;
23 import java.util.Optional;
24
25 public class HeatToToscaTranslationHealer implements Healer {
26
27   private static final OrchestrationTemplateDao orchestrationTemplateDao =
28       OrchestrationTemplateDaoFactory.getInstance().createInterface();
29   private static final ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDao =
30       ServiceModelDaoFactory.getInstance().createInterface();
31   private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
32
33   private final Logger log = (Logger) LoggerFactory.getLogger(this.getClass().getName());
34
35   public HeatToToscaTranslationHealer() {
36
37   }
38
39   @Override
40   public Object heal(String vspId, Version version) throws Exception {
41     mdcDataDebugMessage.debugEntryMessage(null);;
42
43     OrchestrationTemplateEntity uploadData =
44         orchestrationTemplateDao.get(vspId, version);
45
46     if (Objects.isNull(uploadData) || Objects.isNull(uploadData.getContentData())) {
47       return Optional.empty();
48     }
49
50     FileContentHandler fileContentHandler;
51     TranslatorOutput translatorOutput;
52     try {
53       fileContentHandler =
54           CommonUtil.validateAndUploadFileContent(OnboardingTypesEnum.ZIP, uploadData
55               .getContentData().array());
56       translatorOutput =
57           HeatToToscaUtil.loadAndTranslateTemplateData(fileContentHandler);
58     } catch (Exception e) {
59       log.debug("", e);
60       return Optional.empty();
61     }
62
63     if (Objects.isNull(translatorOutput)) {
64       return Optional.empty();
65     } else {
66
67       if (translatorOutput.getToscaServiceModel() == null) {
68         return Optional.empty();
69       }
70       //templateDao.deleteAll(vspId, version);
71       serviceModelDao.deleteAll(vspId, version);
72       serviceModelDao.storeServiceModel(vspId, version, translatorOutput.getToscaServiceModel());
73       mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
74
75       return translatorOutput;
76     }
77
78   }
79 }