1 package org.openecomp.core.zusammen.plugin.dao.impl.cassandra;
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;
14 import java.util.Date;
15 import java.util.Optional;
17 public class VersionStageRepositoryImpl implements VersionStageRepository {
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));
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());
44 public void delete(SessionContext context, VersionContext entityContext, VersionEntity entity) {
45 getAccessor(context).delete(entityContext.getSpace(), entityContext.getItemId().toString(),
46 entity.getId().toString());
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)));
57 private VersionStageAccessor getAccessor(SessionContext context) {
58 return CassandraDaoUtils.getAccessor(context, VersionStageAccessor.class);
62 interface VersionStageAccessor {
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);
70 @Query("DELETE FROM version_stage WHERE space=? AND item_id=? AND version_id=?")
71 void delete(String space, String itemId, String versionId);
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);
78 private static final class VersionStageField {
79 private static final String PUBLISH_TIME = "publish_time";
80 private static final String ACTION = "action";