2e28ac94f88942ca8ba9552aa46eaf15fbc80800
[sdc.git] /
1 /*
2  * Copyright © 2016-2018 European Support Limited
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.openecomp.sdc.model.impl;
18
19 import com.datastax.driver.core.ResultSet;
20 import com.datastax.driver.core.UDTValue;
21 import com.datastax.driver.mapping.Mapper;
22 import com.datastax.driver.mapping.Result;
23 import com.datastax.driver.mapping.UDTMapper;
24 import com.datastax.driver.mapping.annotations.Accessor;
25 import com.datastax.driver.mapping.annotations.Query;
26 import java.util.Collection;
27 import java.util.List;
28 import java.util.stream.Collectors;
29 import org.openecomp.core.model.dao.EnrichedServiceTemplateDao;
30 import org.openecomp.core.model.types.EnrichedServiceTemplateEntity;
31 import org.openecomp.core.model.types.ServiceTemplate;
32 import org.openecomp.core.nosqldb.api.NoSqlDb;
33 import org.openecomp.core.nosqldb.factory.NoSqlDbFactory;
34 import org.openecomp.sdc.versioning.ActionVersioningManagerFactory;
35 import org.openecomp.sdc.versioning.dao.types.Version;
36 import org.openecomp.sdc.versioning.types.VersionableEntityMetadata;
37
38 public class EnrichedServiceTemplateDaoCassandraImpl implements EnrichedServiceTemplateDao {
39
40   private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface();
41   private static final Mapper<EnrichedServiceTemplateEntity> mapper =
42       noSqlDb.getMappingManager().mapper(
43           EnrichedServiceTemplateEntity.class);
44   private static final VspServiceTemplateAccessor accessor =
45       noSqlDb.getMappingManager().createAccessor(
46           VspServiceTemplateAccessor.class);
47   private static final UDTMapper<Version> versionMapper =
48       noSqlDb.getMappingManager().udtMapper(Version.class);
49
50   @Override
51   public void registerVersioning(String versionableEntityType) {
52     ActionVersioningManagerFactory.getInstance().createInterface().register(versionableEntityType,
53         new VersionableEntityMetadata(mapper.getTableMetadata().getName(),
54             mapper.getTableMetadata().getPartitionKey().get(0).getName(),
55             mapper.getTableMetadata().getPartitionKey().get(1).getName()));
56   }
57
58   @Override
59   public void create(ServiceTemplate entity) {
60     EnrichedServiceTemplateEntity vspEnrichedServiceTemplateEntity =
61         new EnrichedServiceTemplateEntity(entity);
62     mapper.save(vspEnrichedServiceTemplateEntity);
63   }
64
65   @Override
66   public void update(ServiceTemplate entity) {
67     EnrichedServiceTemplateEntity vspEnrichedServiceTemplateEntity =
68         new EnrichedServiceTemplateEntity(entity);
69     mapper.save(vspEnrichedServiceTemplateEntity);
70   }
71
72   @Override
73   public ServiceTemplate get(String vspId, Version version) {
74     return (mapper.get(getKeys(vspId, version))).getServiceTemplate();
75   }
76
77   @Override
78   public void delete(String vspId, Version version) {
79     mapper.delete(vspId, version);
80   }
81
82   @Override
83   public Object[] getKeys(String vspId, Version version) {
84     return new Object[]{vspId, versionMapper.toUDT(version)};
85   }
86
87   @Override
88   public ServiceTemplate getTemplateInfo(String vspId, Version version, String name) {
89     EnrichedServiceTemplateEntity enrichedServiceTemplateEntity = accessor.getTemplateInfo(vspId,
90         versionMapper.toUDT(version), name).one();
91     if (enrichedServiceTemplateEntity == null) {
92       return null;
93     }
94     return enrichedServiceTemplateEntity.getServiceTemplate();
95   }
96
97   @Override
98   public Collection<ServiceTemplate> list(String vspId, Version version) {
99
100     List<EnrichedServiceTemplateEntity> entityList = accessor.list(vspId, version).all();
101     return entityList.stream().map(entity -> entity.getServiceTemplate())
102         .collect(Collectors.toList());
103   }
104
105   @Override
106   public String getBase(String vspId, Version version) {
107     Result<EnrichedServiceTemplateEntity> element =
108         accessor.getBase(vspId, versionMapper.toUDT(version));
109     if (element != null) {
110       EnrichedServiceTemplateEntity vspEnrichedServiceTemplateEntity = element.one();
111       if (vspEnrichedServiceTemplateEntity != null) {
112         return element.one().getBaseName();
113       }
114     }
115     return null;
116   }
117
118   @Override
119   public void deleteAll(String vspId, Version version) {
120     accessor.deleteAll(vspId, versionMapper.toUDT(version));
121   }
122
123   @Accessor
124   interface VspServiceTemplateAccessor {
125
126     @Query(
127         "SELECT vsp_id, version, name, base_name ,content_data FROM vsp_enriched_service_template")
128     Result<EnrichedServiceTemplateEntity> listAll();
129
130     @Query(
131         "SELECT vsp_id, version, name, base_name ,content_data FROM "
132             + "vsp_enriched_service_template where vsp_id=? and version=?")
133     Result<EnrichedServiceTemplateEntity> list(String vspId, Version version);
134
135     @Query(
136         "SELECT vsp_id, version, name, base_name ,content_data FROM "
137             + "vsp_enriched_service_template where vsp_id=? and version=? and name=?")
138     Result<EnrichedServiceTemplateEntity> getTemplateInfo(String vspId, UDTValue version,
139         String name);
140
141     @Query(
142         "SELECT vsp_id, version, name, base_name  FROM "
143             + "vsp_enriched_service_template where vsp_id=? and version=?")
144     Result<EnrichedServiceTemplateEntity> getBase(String vspId, UDTValue version);
145
146     @Query("DELETE FROM vsp_enriched_service_template where vsp_id = ? and version = ?")
147     ResultSet deleteAll(String vspId, UDTValue version);
148   }
149
150 }