Add collaboration feature
[sdc.git] / openecomp-be / lib / openecomp-sdc-vendor-license-lib / openecomp-sdc-vendor-license-core / src / main / java / org / openecomp / sdc / vendorlicense / dao / impl / zusammen / convertor / ElementToFeatureGroupConvertor.java
1 package org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor;
2
3 import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
4 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
5 import com.amdocs.zusammen.datatypes.item.Info;
6 import com.amdocs.zusammen.datatypes.item.Relation;
7 import org.openecomp.convertor.ElementConvertor;
8 import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.RelationType;
9 import org.openecomp.sdc.vendorlicense.dao.types.FeatureGroupEntity;
10
11 import java.util.Collection;
12 import java.util.HashSet;
13 import java.util.Set;
14
15
16 public class ElementToFeatureGroupConvertor extends ElementConvertor {
17   @Override
18   public FeatureGroupEntity convert(Element element) {
19     if (element == null) {
20       return null;
21     }
22     return mapElementToFeatureGroupEntity(element);
23
24   }
25
26   @Override
27   public FeatureGroupEntity convert(ElementInfo elementInfo) {
28     if (elementInfo == null) {
29       return null;
30     }
31     return mapElementInfoToFeatureGroupEntity(elementInfo);
32
33   }
34
35
36   private FeatureGroupEntity mapElementToFeatureGroupEntity(Element element) {
37     FeatureGroupEntity featureGroup =
38         new FeatureGroupEntity();
39     featureGroup.setId(element.getElementId().getValue());
40     mapInfoToFeatureGroup(featureGroup, element.getInfo());
41     mapRelationsToFeatureGroup(featureGroup, element.getRelations());
42     return featureGroup;
43   }
44
45
46   private FeatureGroupEntity mapElementInfoToFeatureGroupEntity(ElementInfo elementInfo) {
47     FeatureGroupEntity featureGroup = new FeatureGroupEntity();
48     featureGroup.setId(elementInfo.getId().getValue());
49     mapInfoToFeatureGroup(featureGroup, elementInfo.getInfo());
50     mapRelationsToFeatureGroup(featureGroup, elementInfo.getRelations());
51     return featureGroup;
52   }
53
54   private void mapInfoToFeatureGroup(FeatureGroupEntity featureGroup, Info info) {
55     featureGroup.setName(info.getName());
56     featureGroup.setDescription(info.getDescription());
57     featureGroup.setPartNumber(info.getProperty("partNumber"));
58     featureGroup.setManufacturerReferenceNumber(info.getProperty("manufacturerReferenceNumber"));
59   }
60
61   private void mapRelationsToFeatureGroup(FeatureGroupEntity featureGroup,
62                                           Collection<Relation> relations) {
63     Set<String> entitlementPoolIds = new HashSet<>();
64     Set<String> licenseAgreements = new HashSet<>();
65     Set<String> licenseKeyGroupIds = new HashSet<>();
66
67     if (relations != null) {
68       for (Relation relation : relations) {
69         if (RelationType.FeatureGroupToEntitlmentPool.name().equals(relation.getType())) {
70           entitlementPoolIds.add(relation.getEdge2().getElementId().getValue());
71         } else if (RelationType.FeatureGroupToLicenseKeyGroup.name().equals(relation.getType())) {
72           licenseKeyGroupIds.add(relation.getEdge2().getElementId().getValue());
73         } else if (RelationType.FeatureGroupToReferencingLicenseAgreement.name()
74             .equals(relation.getType())) {
75           licenseAgreements.add(relation.getEdge2().getElementId().getValue());
76         }
77       }
78     }
79     featureGroup.setEntitlementPoolIds(entitlementPoolIds);
80     featureGroup.setLicenseKeyGroupIds(licenseKeyGroupIds);
81     featureGroup.setReferencingLicenseAgreements(licenseAgreements);
82   }
83 }