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;
10 import org.openecomp.sdc.versioning.types.ItemStatus;
12 import java.util.Collection;
14 import java.util.stream.Collectors;
16 public class ItemZusammenDaoImpl implements ItemDao {
18 private ZusammenAdaptor zusammenAdaptor;
20 public ItemZusammenDaoImpl(ZusammenAdaptor zusammenAdaptor) {
21 this.zusammenAdaptor = zusammenAdaptor;
25 public Collection<Item> list() {
26 return zusammenAdaptor.listItems(ZusammenUtil.createSessionContext())
27 .stream().map(this::mapFromZusammenItem)
28 .collect(Collectors.toList());
32 public Item get(Item item) {
33 return mapFromZusammenItem(
34 zusammenAdaptor.getItem(ZusammenUtil.createSessionContext(), new Id(item.getId())));
38 public Item create(Item item) {
39 Id itemId = zusammenAdaptor
40 .createItem(ZusammenUtil.createSessionContext(), mapToZusammenItemInfo(item));
41 item.setId(itemId.getValue());
46 public void delete(Item item){
47 zusammenAdaptor.deleteItem(ZusammenUtil.createSessionContext(),new Id(item.getId()));
51 public void update(Item item) {
53 .updateItem(ZusammenUtil.createSessionContext(), new Id(item.getId()),
54 mapToZusammenItemInfo(item));
57 private Item mapFromZusammenItem(com.amdocs.zusammen.datatypes.item.Item zusammenItem) {
58 if (zusammenItem == null) {
61 Item item = new Item();
62 item.setId(zusammenItem.getId().getValue());
63 item.setName(zusammenItem.getInfo().getName());
64 item.setDescription(zusammenItem.getInfo().getDescription());
66 zusammenItem.getInfo().getProperties().entrySet()
67 .forEach(property -> addPropertyToItem(property.getKey(), property.getValue(), item));
69 item.setCreationTime(zusammenItem.getCreationTime());
70 item.setModificationTime(zusammenItem.getModificationTime());
72 if(item.getStatus() == null){
73 item.setStatus(ItemStatus.ACTIVE);
80 private void addPropertyToItem(String propertyKey, Object propertyValue, Item item) {
81 switch (propertyKey) {
82 case InfoPropertyName.ITEM_TYPE:
83 item.setType((String) propertyValue);
85 case InfoPropertyName.ITEM_OWNER:
86 item.setOwner((String) propertyValue);
88 case InfoPropertyName.ITEM_STATUS:
89 item.setStatus(ItemStatus.valueOf((String)propertyValue));
91 case InfoPropertyName.ITEM_VERSIONS_STATUSES:
92 for (Map.Entry<String, Number> statusCounter :
93 ((Map<String, Number>) propertyValue).entrySet()) {
94 item.getVersionStatusCounters().put(VersionStatus.valueOf(statusCounter.getKey()),
95 statusCounter.getValue().intValue());
99 item.addProperty(propertyKey, propertyValue);
103 private Info mapToZusammenItemInfo(Item item) {
104 Info info = new Info();
105 info.setName(item.getName());
106 info.setDescription(item.getDescription());
107 info.addProperty(InfoPropertyName.ITEM_TYPE, item.getType());
108 info.addProperty(InfoPropertyName.ITEM_OWNER,item.getOwner());
109 if (item.getStatus() != null) {
110 info.addProperty(InfoPropertyName.ITEM_STATUS, item.getStatus());
112 info.addProperty(InfoPropertyName.ITEM_VERSIONS_STATUSES, item.getVersionStatusCounters());
113 item.getProperties().entrySet()
114 .forEach(property -> info.addProperty(property.getKey(), property.getValue()));
118 private static final class InfoPropertyName {
119 private static final String ITEM_TYPE = "item_type";
120 private static final String ITEM_VERSIONS_STATUSES = "item_versions_statuses";
121 private static final String ITEM_OWNER = "Owner";
122 private static final String ITEM_STATUS = "status";
124 private InfoPropertyName() {
125 throw new IllegalStateException("Constants class");