Unit Tests
[sdc.git] / openecomp-be / lib / openecomp-core-lib / openecomp-zusammen-lib / openecomp-zusammen-plugin / src / main / java / org / openecomp / core / zusammen / plugin / dao / impl / cassandra / VersionStageRepositoryImpl.java
1 package org.openecomp.core.zusammen.plugin.dao.impl.cassandra;
2
3 import com.amdocs.zusammen.datatypes.SessionContext;
4 import com.amdocs.zusammen.datatypes.item.Action;
5 import com.datastax.driver.core.ResultSet;
6 import com.datastax.driver.core.Row;
7 import com.datastax.driver.mapping.annotations.Accessor;
8 import com.datastax.driver.mapping.annotations.Query;
9 import org.openecomp.core.zusammen.plugin.dao.VersionStageRepository;
10 import org.openecomp.core.zusammen.plugin.dao.types.StageEntity;
11 import org.openecomp.core.zusammen.plugin.dao.types.VersionContext;
12 import org.openecomp.core.zusammen.plugin.dao.types.VersionEntity;
13
14 import java.util.Date;
15 import java.util.Optional;
16
17 public class VersionStageRepositoryImpl implements VersionStageRepository {
18
19   @Override
20   public Optional<StageEntity<VersionEntity>> get(SessionContext context,
21                                                   VersionContext entityContext,
22                                                   VersionEntity entity) {
23     Row row = getAccessor(context)
24         .get(entityContext.getSpace(), entityContext.getItemId().toString(),
25             entity.getId().toString()).one();
26     return row == null ? Optional.empty() : Optional.of(convertToVersionStage(entity, row));
27   }
28
29   @Override
30   public void create(SessionContext context, VersionContext entityContext,
31                      StageEntity<VersionEntity> stageEntity) {
32     VersionEntity entity = stageEntity.getEntity();
33     getAccessor(context).create(entityContext.getSpace(),
34         entityContext.getItemId().toString(),
35         entity.getId().toString(),
36         entity.getBaseId() == null ? null : entity.getBaseId().toString(),
37         entity.getCreationTime() == null ? null : entity.getCreationTime(),
38         entity.getModificationTime() == null ? null : entity.getModificationTime(),
39         stageEntity.getPublishTime(),
40         stageEntity.getAction());
41   }
42
43   @Override
44   public void delete(SessionContext context, VersionContext entityContext, VersionEntity entity) {
45     getAccessor(context).delete(entityContext.getSpace(), entityContext.getItemId().toString(),
46         entity.getId().toString());
47   }
48
49   private StageEntity<VersionEntity> convertToVersionStage(VersionEntity version, Row row) {
50     StageEntity<VersionEntity> versionStage =
51         new StageEntity<>(VersionDaoImpl.enrichVersionEntity(version, row),
52             row.getDate(VersionStageField.PUBLISH_TIME));
53     versionStage.setAction(Action.valueOf(row.getString(VersionStageField.ACTION)));
54     return versionStage;
55   }
56
57   private VersionStageAccessor getAccessor(SessionContext context) {
58     return CassandraDaoUtils.getAccessor(context, VersionStageAccessor.class);
59   }
60
61   @Accessor
62   interface VersionStageAccessor {
63
64     @Query("INSERT INTO version_stage (space, item_id, version_id, base_version_id, " +
65         "creation_time, modification_time, publish_time, action) " +
66         "VALUES (?, ?, ?, ?, ?, ?, ?, ?)")
67     void create(String space, String itemId, String versionId, String baseVersionId,
68                 Date creationTime, Date modificationTime, Date publishTime, Action action);
69
70     @Query("DELETE FROM version_stage WHERE space=? AND item_id=? AND version_id=?")
71     void delete(String space, String itemId, String versionId);
72
73     @Query("SELECT base_version_id, creation_time, modification_time, publish_time, action " +
74         "FROM  version_stage WHERE space=? AND item_id=? AND version_id=?")
75     ResultSet get(String space, String itemId, String versionId);
76   }
77
78   private static final class VersionStageField {
79     private static final String PUBLISH_TIME = "publish_time";
80     private static final String ACTION = "action";
81   }
82 }