aa611c0bd23eae064eda7aa01b5c579c1c177cf7
[sdc.git] /
1 package org.openecomp.sdc.vendorsoftwareproduct.dao.impl;
2
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;
20
21 import java.util.Arrays;
22 import java.util.Collection;
23 import java.util.Collections;
24
25 public class ComponentDependencyModelDaoCassandraImpl extends CassandraBaseDao
26     <ComponentDependencyModelEntity> implements ComponentDependencyModelDao {
27
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);
36
37   @Override
38   protected Mapper<ComponentDependencyModelEntity> getMapper() {
39     return mapper;
40   }
41
42   @Override
43   protected Object[] getKeys(ComponentDependencyModelEntity entity) {
44     return new Object[]{entity.getVspId(), versionMapper.toUDT(entity.getVersion()),
45         entity.getId()};
46   }
47
48   @Override
49   public Collection<ComponentDependencyModelEntity> list(ComponentDependencyModelEntity entity) {
50     return accessor
51         .list(entity.getVspId(), versionMapper.toUDT(entity.getVersion())).all();
52   }
53
54   @Override
55   public void deleteAll(String vspId, Version version) {
56     accessor.deleteAll(vspId, versionMapper.toUDT(version));
57   }
58
59
60   @Override
61   public void registerVersioning(String versionableEntityType) {
62     VersionableEntityMetadata metadata = new VersionableEntityMetadata(
63         mapper.getTableMetadata().getName(),
64         mapper.getTableMetadata().getPartitionKey().get(0).getName(),
65         mapper.getTableMetadata().getPartitionKey().get(1).getName());
66
67     metadata.setUniqueValuesMetadata(Collections.singletonList(new UniqueValueMetadata(
68         VendorSoftwareProductConstants.UniqueValues.PROCESS_NAME,
69         Arrays.asList("vsp_id", "version", "component_id", "name"))));
70
71     VersioningManagerFactory.getInstance().createInterface()
72         .register(versionableEntityType, metadata);
73
74   }
75
76   @Accessor
77   interface ComponentDependencyModelAccessor {
78     @Query("delete from vsp_component_dependency_model where vsp_id=? and version=?")
79     ResultSet deleteAll(String vspId, UDTValue version);
80
81     @Query(
82         "select * from vsp_component_dependency_model where vsp_id=? and version=?")
83     Result<ComponentDependencyModelEntity> list(String vspId, UDTValue version);
84   }
85 }