1 package org.openecomp.sdc.vendorsoftwareproduct.dao.impl;
3 import com.datastax.driver.core.ResultSet;
4 import com.datastax.driver.core.UDTValue;
5 import com.datastax.driver.mapping.Mapper;
6 import com.datastax.driver.mapping.Result;
7 import com.datastax.driver.mapping.UDTMapper;
8 import com.datastax.driver.mapping.annotations.Accessor;
9 import com.datastax.driver.mapping.annotations.Query;
10 import org.openecomp.core.dao.impl.CassandraBaseDao;
11 import org.openecomp.core.nosqldb.api.NoSqlDb;
12 import org.openecomp.core.nosqldb.factory.NoSqlDbFactory;
13 import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants;
14 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComputeDao;
15 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComputeEntity;
16 import org.openecomp.sdc.versioning.VersioningManagerFactory;
17 import org.openecomp.sdc.versioning.dao.types.Version;
18 import org.openecomp.sdc.versioning.types.UniqueValueMetadata;
19 import org.openecomp.sdc.versioning.types.VersionableEntityMetadata;
21 import java.util.Arrays;
22 import java.util.Collection;
23 import java.util.Collections;
25 public class ComputeDaoCassandraImpl extends CassandraBaseDao<ComputeEntity> implements
28 private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface();
29 private static final Mapper<ComputeEntity> mapper =
30 noSqlDb.getMappingManager().mapper(ComputeEntity.class);
31 private static final ComputeAccessor accessor =
32 noSqlDb.getMappingManager().createAccessor(ComputeDaoCassandraImpl.ComputeAccessor.class);
33 private static final UDTMapper<Version> versionMapper =
34 noSqlDb.getMappingManager().udtMapper(Version.class);
37 public void registerVersioning(String versionableEntityType) {
38 VersionableEntityMetadata metadata = new VersionableEntityMetadata(
39 mapper.getTableMetadata().getName(),
40 mapper.getTableMetadata().getPartitionKey().get(0).getName(),
41 mapper.getTableMetadata().getPartitionKey().get(1).getName());
44 metadata.setUniqueValuesMetadata(Collections.singletonList(new UniqueValueMetadata(
45 VendorSoftwareProductConstants.UniqueValues.COMPUTE_NAME,
46 Arrays.asList("vsp_id", "version", "component_id", "name"))));
48 VersioningManagerFactory.getInstance().createInterface()
49 .register(versionableEntityType, metadata);
53 public Collection<ComputeEntity> list(ComputeEntity entity) {
54 return accessor.listByComponentId(entity.getVspId(),
55 versionMapper.toUDT(entity.getVersion()), entity.getComponentId()).all();
59 protected Mapper<ComputeEntity> getMapper() {
64 protected Object[] getKeys(ComputeEntity entity) {
65 return new Object[]{entity.getVspId(), versionMapper.toUDT(entity.getVersion()),
66 entity.getComponentId(), entity.getId()};
70 public Collection<ComputeEntity> listByVsp(String vspId, Version version) {
71 return accessor.listByVspId(vspId, versionMapper.toUDT(version)).all();
75 public void update(ComputeEntity entity) {
76 accessor.updateCompositionData(entity.getCompositionData(), entity.getVspId(), versionMapper
77 .toUDT(entity.getVersion()), entity.getComponentId(), entity.getId());
81 public void updateQuestionnaireData(String vspId, Version version, String componentId,
82 String computeId, String questionnaireData) {
83 accessor.updateQuestionnaireData(questionnaireData, vspId, versionMapper.toUDT(version),
84 componentId, computeId);
88 public void deleteAll(String vspId, Version version) {
89 accessor.deleteAll(vspId, version);
93 public ComputeEntity getQuestionnaireData(String vspId, Version version, String componentId,
99 interface ComputeAccessor {
101 @Query("select * from vsp_component_compute where vsp_id=? and version=? and component_id=?")
102 Result<ComputeEntity> listByComponentId(String vspId, UDTValue version, String componentId);
104 @Query("select * from vsp_component_compute where vsp_id=? and version=?")
105 Result<ComputeEntity> listByVspId(String vspId, UDTValue version);
107 @Query("update vsp_component_compute set composition_data=? where vsp_id=? and version=?"
108 + " and component_id=? and compute_id=?")
109 ResultSet updateCompositionData(String compositionData, String vspId, UDTValue version,
110 String componentId, String computeId);
112 @Query("update vsp_component_compute set questionnaire_data=? where vsp_id=? and version=?"
113 + " and component_id=? and compute_id=?")
114 ResultSet updateQuestionnaireData(String questionnaireData, String vspId, UDTValue version,
115 String componentId, String computeId);
117 @Query("delete from vsp_component_compute where vsp_id=? and version=?")
118 ResultSet deleteAll(String vspId, Version version);