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.ComponentDependencyModelDao;
15 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentDependencyModelEntity;
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 ComponentDependencyModelDaoCassandraImpl extends CassandraBaseDao
26 <ComponentDependencyModelEntity> implements ComponentDependencyModelDao {
28 private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface();
29 private static final Mapper<ComponentDependencyModelEntity> mapper =
30 noSqlDb.getMappingManager().mapper(ComponentDependencyModelEntity.class);
31 private static final ComponentDependencyModelDaoCassandraImpl.ComponentDependencyModelAccessor
32 accessor = noSqlDb.getMappingManager().createAccessor(
33 ComponentDependencyModelDaoCassandraImpl.ComponentDependencyModelAccessor.class);
34 private static final UDTMapper<Version> versionMapper =
35 noSqlDb.getMappingManager().udtMapper(Version.class);
38 protected Mapper<ComponentDependencyModelEntity> getMapper() {
43 protected Object[] getKeys(ComponentDependencyModelEntity entity) {
44 return new Object[]{entity.getVspId(), versionMapper.toUDT(entity.getVersion()),
49 public Collection<ComponentDependencyModelEntity> list(ComponentDependencyModelEntity entity) {
51 .list(entity.getVspId(), versionMapper.toUDT(entity.getVersion())).all();
55 public void registerVersioning(String versionableEntityType) {
56 VersionableEntityMetadata metadata = new VersionableEntityMetadata(
57 mapper.getTableMetadata().getName(),
58 mapper.getTableMetadata().getPartitionKey().get(0).getName(),
59 mapper.getTableMetadata().getPartitionKey().get(1).getName());
61 metadata.setUniqueValuesMetadata(Collections.singletonList(new UniqueValueMetadata(
62 VendorSoftwareProductConstants.UniqueValues.PROCESS_NAME,
63 Arrays.asList("vsp_id", "version", "component_id", "name"))));
65 VersioningManagerFactory.getInstance().createInterface()
66 .register(versionableEntityType, metadata);
71 interface ComponentDependencyModelAccessor {
72 @Query("delete from vsp_component_dependency_model where vsp_id=? and version=?")
73 ResultSet deleteAll(String vspId, UDTValue version);
76 "select * from vsp_component_dependency_model where vsp_id=? and version=?")
77 Result<ComponentDependencyModelEntity> list(String vspId, UDTValue version);