Add collaboration feature
[sdc.git] / openecomp-be / lib / openecomp-conflict-lib / openecomp-conflict-core / src / main / java / org / openecomp / conflicts / dao / impl / zusammen / ItemVersionConflictConvertorFromZusammen.java
1 package org.openecomp.conflicts.dao.impl.zusammen;
2
3
4 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementConflictInfo;
5 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
6 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ItemVersionConflict;
7 import com.amdocs.zusammen.datatypes.Id;
8 import com.amdocs.zusammen.datatypes.item.ItemVersion;
9 import com.amdocs.zusammen.datatypes.item.ItemVersionData;
10 import com.amdocs.zusammen.datatypes.item.ItemVersionDataConflict;
11 import org.openecomp.conflicts.types.Conflict;
12 import org.openecomp.conflicts.types.ConflictInfo;
13 import org.openecomp.sdc.datatypes.model.ElementType;
14 import org.openecomp.sdc.versioning.dao.impl.zusammen.convertor.ItemVersionToVersionConvertor;
15 import org.openecomp.sdc.versioning.dao.types.Version;
16 import org.openecomp.types.ElementPropertyName;
17
18 import java.util.stream.Collectors;
19
20 public class ItemVersionConflictConvertorFromZusammen {
21   public org.openecomp.conflicts.types.ItemVersionConflict convert(String itemId, Version version,
22                                                                    ItemVersionConflict source) {
23     org.openecomp.conflicts.types.ItemVersionConflict target =
24         new org.openecomp.conflicts.types.ItemVersionConflict();
25
26     target.setVersionConflict(
27         convertVersionDataConflict(itemId, version, source.getVersionDataConflict()));
28     target.setElementConflicts(source.getElementConflictInfos().stream()
29         .map(this::convertElementConflictInfo)
30         .collect(Collectors.toList()));
31
32     return target;
33   }
34
35
36   private Conflict<Version> convertVersionDataConflict(String itemId, Version version,
37                                                        ItemVersionDataConflict versionDataConflict) {
38     if (versionDataConflict == null) {
39       return null;
40     }
41
42     Conflict<Version> conflict =
43         new Conflict<>(version.getId(), ElementType.itemVersion, null);
44
45     ItemVersionToVersionConvertor convertor = new ItemVersionToVersionConvertor();
46     conflict.setYours(convertor.convert(
47         getItemVersion(version.getId(), versionDataConflict.getLocalData())));
48     conflict.setTheirs(convertor.convert(
49         getItemVersion(version.getId(), versionDataConflict.getRemoteData())));
50     return conflict;
51   }
52
53   private ItemVersion getItemVersion(String versionId, ItemVersionData versionData) {
54     if (versionData == null) {
55       return null;
56     }
57     ItemVersion itemVersion = new ItemVersion();
58     itemVersion.setId(new Id(versionId));
59     itemVersion.setData(versionData);
60     return itemVersion;
61   }
62
63   private ConflictInfo convertElementConflictInfo(ElementConflictInfo elementConflictInfo) {
64     ElementInfo elementInfo = elementConflictInfo.getLocalElementInfo() == null
65         ? elementConflictInfo.getRemoteElementInfo()
66         : elementConflictInfo.getLocalElementInfo();
67
68     return new ConflictInfo(elementInfo.getId().getValue(),
69         ElementType
70             .valueOf(elementInfo.getInfo().getProperty(ElementPropertyName.elementType.name())),
71         elementInfo.getInfo().getName());
72   }
73 }