Add collaboration feature
[sdc.git] / openecomp-be / lib / openecomp-healing-lib / openecomp-sdc-healing-impl / src / main / java / org / openecomp / sdc / healing / healers / VspOnboardingMethodHealer.java
1 package org.openecomp.sdc.healing.healers;
2
3
4 import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
5 import org.openecomp.sdc.healing.interfaces.Healer;
6 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
7 import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateCandidateDao;
8 import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateCandidateDaoFactory;
9 import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao;
10 import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDaoFactory;
11 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
12 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDaoFactory;
13 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OnboardingMethod;
14 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData;
15 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateEntity;
16 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
17 import org.openecomp.sdc.versioning.dao.types.Version;
18
19 import java.util.Objects;
20
21 public class VspOnboardingMethodHealer implements Healer {
22
23   private static final String DEFAULT_FILE_NAME = "Upload File";
24   private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
25   private VendorSoftwareProductInfoDao vendorSoftwareProductInfoDao;
26   private OrchestrationTemplateDao orchestrationTemplateDao;
27   private OrchestrationTemplateCandidateDao candidateDao;
28
29   public VspOnboardingMethodHealer(){
30     this(VendorSoftwareProductInfoDaoFactory.getInstance().createInterface(),
31         OrchestrationTemplateDaoFactory.getInstance().createInterface(),
32         OrchestrationTemplateCandidateDaoFactory.getInstance().createInterface());
33   }
34
35   public VspOnboardingMethodHealer(VendorSoftwareProductInfoDao vspInfoDao,
36                                    OrchestrationTemplateDao orchestrationTemplateDao,
37                                    OrchestrationTemplateCandidateDao candidateDao) {
38     this.vendorSoftwareProductInfoDao = vspInfoDao;
39     this.orchestrationTemplateDao = orchestrationTemplateDao;
40     this.candidateDao = candidateDao;
41   }
42
43   @Override
44   public Object heal(String vspId, Version version) throws Exception {
45     mdcDataDebugMessage.debugEntryMessage(null);
46
47     VspDetails vsp = vendorSoftwareProductInfoDao.get(new VspDetails(vspId, version));
48     healOnboardingMethod(vsp);
49
50     if (!OnboardingMethod.Manual.name().equals(vsp.getOnboardingMethod())) {
51       healOrchestrationTemplateFileName(vspId, version);
52       healOrchestrationTemplateCandidateFileName(vspId, version);
53     }
54
55     mdcDataDebugMessage.debugExitMessage(null);
56     return null;
57   }
58
59   private void healOnboardingMethod(VspDetails vsp) {
60     if (Objects.isNull(vsp.getOnboardingMethod()) || "HEAT".equals(vsp.getOnboardingMethod())) {
61       vsp.setOnboardingMethod(OnboardingMethod.NetworkPackage.name());
62       vendorSoftwareProductInfoDao.update(vsp);
63     }
64   }
65
66   private void healOrchestrationTemplateFileName(String vspId, Version version) {
67     OrchestrationTemplateEntity orchestrationTemplate =
68         orchestrationTemplateDao.get(vspId, version);
69
70     if (orchestrationTemplate == null || orchestrationTemplate.getContentData() == null ||
71         orchestrationTemplate.getFileSuffix() != null) {
72       return;
73     }
74     orchestrationTemplate.setFileSuffix(OnboardingTypesEnum.ZIP.toString());
75     orchestrationTemplate.setFileName(DEFAULT_FILE_NAME);
76
77     orchestrationTemplateDao.update(vspId, version, orchestrationTemplate);
78   }
79
80   private void healOrchestrationTemplateCandidateFileName(String vspId, Version version) {
81     OrchestrationTemplateCandidateData candidate = candidateDao.get(vspId, version);
82
83     if (candidate == null || candidate.getContentData() == null ||
84         candidate.getFileSuffix() != null) {
85       return;
86     }
87     candidate.setFileSuffix(OnboardingTypesEnum.ZIP.toString());
88     candidate.setFileName(DEFAULT_FILE_NAME);
89
90     candidateDao.update(vspId, version, candidate);
91   }
92 }