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.vendorsoftwareproduct.dao.type.ComponentEntity;
17 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity;
18 import org.openecomp.sdc.versioning.VersioningManagerFactory;
19 import org.openecomp.sdc.versioning.dao.types.Version;
20 import org.openecomp.sdc.versioning.types.UniqueValueMetadata;
21 import org.openecomp.sdc.versioning.types.VersionableEntityMetadata;
23 import java.util.Arrays;
24 import java.util.Collection;
25 import java.util.Collections;
27 public class ComponentDependencyModelDaoCassandraImpl extends CassandraBaseDao
28 <ComponentDependencyModelEntity> implements ComponentDependencyModelDao {
30 private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface();
31 private static final Mapper<ComponentDependencyModelEntity> mapper =
32 noSqlDb.getMappingManager().mapper(ComponentDependencyModelEntity.class);
33 private static final ComponentDependencyModelDaoCassandraImpl.ComponentDependencyModelAccessor
34 accessor = noSqlDb.getMappingManager().createAccessor(
35 ComponentDependencyModelDaoCassandraImpl.ComponentDependencyModelAccessor.class);
36 private static final UDTMapper<Version> versionMapper =
37 noSqlDb.getMappingManager().udtMapper(Version.class);
40 protected Mapper<ComponentDependencyModelEntity> getMapper() {
45 protected Object[] getKeys(ComponentDependencyModelEntity entity) {
46 return new Object[]{entity.getVspId(), versionMapper.toUDT(entity.getVersion()),
51 public Collection<ComponentDependencyModelEntity> list(ComponentDependencyModelEntity entity) {
53 .list(entity.getVspId(), versionMapper.toUDT(entity.getVersion())).all();
57 public void deleteAll(String vspId, Version version) {
58 accessor.deleteAll(vspId, versionMapper.toUDT(version));
63 public void registerVersioning(String versionableEntityType) {
64 VersionableEntityMetadata metadata = new VersionableEntityMetadata(
65 mapper.getTableMetadata().getName(),
66 mapper.getTableMetadata().getPartitionKey().get(0).getName(),
67 mapper.getTableMetadata().getPartitionKey().get(1).getName());
69 metadata.setUniqueValuesMetadata(Collections.singletonList(new UniqueValueMetadata(
70 VendorSoftwareProductConstants.UniqueValues.PROCESS_NAME,
71 Arrays.asList("vsp_id", "version", "component_id", "name"))));
73 VersioningManagerFactory.getInstance().createInterface()
74 .register(versionableEntityType, metadata);
79 interface ComponentDependencyModelAccessor {
80 @Query("delete from vsp_component_dependency_model where vsp_id=? and version=?")
81 ResultSet deleteAll(String vspId, UDTValue version);
84 "select * from vsp_component_dependency_model where vsp_id=? and version=?")
85 Result<ComponentDependencyModelEntity> list(String vspId, UDTValue version);