1 package org.openecomp.sdc.versioning.dao.impl.zusammen;
3 import com.amdocs.zusammen.datatypes.Id;
4 import com.amdocs.zusammen.datatypes.item.Info;
5 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
6 import org.openecomp.core.zusammen.api.ZusammenUtil;
7 import org.openecomp.sdc.versioning.dao.ItemDao;
8 import org.openecomp.sdc.versioning.dao.types.VersionStatus;
9 import org.openecomp.sdc.versioning.types.Item;
11 import java.util.Collection;
13 import java.util.stream.Collectors;
15 public class ItemZusammenDaoImpl implements ItemDao {
17 private ZusammenAdaptor zusammenAdaptor;
19 public ItemZusammenDaoImpl(ZusammenAdaptor zusammenAdaptor) {
20 this.zusammenAdaptor = zusammenAdaptor;
24 public Collection<Item> list() {
25 return zusammenAdaptor.listItems(ZusammenUtil.createSessionContext())
26 .stream().map(this::mapFromZusammenItem)
27 .collect(Collectors.toList());
31 public Item get(Item item) {
32 return mapFromZusammenItem(
33 zusammenAdaptor.getItem(ZusammenUtil.createSessionContext(), new Id(item.getId())));
37 public Item create(Item item) {
38 Id itemId = zusammenAdaptor
39 .createItem(ZusammenUtil.createSessionContext(), mapToZusammenItemInfo(item));
40 item.setId(itemId.getValue());
45 public void update(Item item) {
47 .updateItem(ZusammenUtil.createSessionContext(), new Id(item.getId()),
48 mapToZusammenItemInfo(item));
51 private Item mapFromZusammenItem(com.amdocs.zusammen.datatypes.item.Item zusammenItem) {
52 if (zusammenItem == null) {
55 Item item = new Item();
56 item.setId(zusammenItem.getId().getValue());
57 item.setName(zusammenItem.getInfo().getName());
58 item.setDescription(zusammenItem.getInfo().getDescription());
60 zusammenItem.getInfo().getProperties().entrySet()
61 .forEach(property -> addPropertyToItem(property.getKey(), property.getValue(), item));
63 item.setCreationTime(zusammenItem.getCreationTime());
64 item.setModificationTime(zusammenItem.getModificationTime());
68 private void addPropertyToItem(String propertyKey, Object propertyValue, Item item) {
69 switch (propertyKey) {
70 case InfoPropertyName.ITEM_TYPE:
71 item.setType((String) propertyValue);
73 case InfoPropertyName.ITEM_VERSIONS_STATUSES:
74 for (Map.Entry<String, Number> statusCounter :
75 ((Map<String, Number>) propertyValue).entrySet()) {
76 item.getVersionStatusCounters().put(VersionStatus.valueOf(statusCounter.getKey()),
77 statusCounter.getValue().intValue());
81 item.addProperty(propertyKey, propertyValue);
85 private Info mapToZusammenItemInfo(Item item) {
86 Info info = new Info();
87 info.setName(item.getName());
88 info.setDescription(item.getDescription());
89 info.addProperty(InfoPropertyName.ITEM_TYPE, item.getType());
90 info.addProperty(InfoPropertyName.ITEM_VERSIONS_STATUSES, item.getVersionStatusCounters());
91 item.getProperties().entrySet()
92 .forEach(property -> info.addProperty(property.getKey(), property.getValue()));
96 private static final class InfoPropertyName {
97 private static final String ITEM_TYPE = "item_type";
98 private static final String ITEM_VERSIONS_STATUSES = "item_versions_statuses";
100 private InfoPropertyName() {
101 throw new IllegalStateException("Constants class");