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");