3 * ============LICENSE_START=======================================================
4 * Copyright (C) 2022 Nordix Foundation.
5 * ================================================================================
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 * SPDX-License-Identifier: Apache-2.0
19 * ============LICENSE_END=========================================================
22 package org.openecomp.sdc.vendorsoftwareproduct.dao.impl;
24 import com.datastax.driver.extras.codecs.enums.EnumNameCodec;
25 import com.datastax.driver.mapping.Mapper;
26 import com.datastax.driver.mapping.MappingManager;
27 import com.datastax.driver.mapping.Result;
28 import java.util.Comparator;
29 import java.util.List;
30 import java.util.Optional;
31 import java.util.UUID;
32 import org.openecomp.core.nosqldb.factory.NoSqlDbFactory;
33 import org.openecomp.sdc.vendorsoftwareproduct.dao.VspUploadStatusRecordAccessor;
34 import org.openecomp.sdc.vendorsoftwareproduct.dao.VspUploadStatusRecordDao;
35 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspUploadStatusRecord;
36 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspUploadStatus;
37 import org.springframework.stereotype.Component;
40 * Data access object for the package upload process status.
42 @Component("vsp-upload-status-record-dao-impl")
43 public class VspUploadStatusRecordDaoIml implements VspUploadStatusRecordDao {
45 private final Mapper<VspUploadStatusRecord> mapper;
46 private final VspUploadStatusRecordAccessor accessor;
48 public VspUploadStatusRecordDaoIml() {
49 final MappingManager mappingManager = NoSqlDbFactory.getInstance().createInterface().getMappingManager();
50 mapper = mappingManager.mapper(VspUploadStatusRecord.class);
51 accessor = mappingManager.createAccessor(VspUploadStatusRecordAccessor.class);
52 mappingManager.getSession().getCluster().getConfiguration().getCodecRegistry().register(new EnumNameCodec<>(VspUploadStatus.class));
56 VspUploadStatusRecordDaoIml(final VspUploadStatusRecordAccessor accessor) {
57 this.accessor = accessor;
62 public void create(final VspUploadStatusRecord vspUploadStatusRecord) {
63 mapper.save(vspUploadStatusRecord);
67 public void update(final VspUploadStatusRecord vspUploadStatusRecord) {
68 mapper.save(vspUploadStatusRecord);
72 public List<VspUploadStatusRecord> findAllByVspIdAndVersionId(final String vspId, final String vspVersionId) {
73 final Result<VspUploadStatusRecord> allByVspIdAndVspVersionId = accessor.findAllByVspIdAndVspVersionId(vspId, vspVersionId);
74 return allByVspIdAndVspVersionId.all();
78 public Optional<VspUploadStatusRecord> findByVspIdAndVersionIdAndLockId(final String vspId, final String vspVersionId, final UUID lockId) {
79 final Result<VspUploadStatusRecord> vspUploadStatusRecordResult = accessor.findByVspIdAndVersionIdAndLockId(vspId, vspVersionId, lockId);
80 final VspUploadStatusRecord vspUploadStatusRecord = vspUploadStatusRecordResult.one();
81 return Optional.ofNullable(vspUploadStatusRecord);
85 public List<VspUploadStatusRecord> findAllInProgress(final String vspId, final String vspVersionId) {
86 final Result<VspUploadStatusRecord> incompleteUploadList = accessor.findAllIncomplete(vspId, vspVersionId);
87 return incompleteUploadList.all();
91 public Optional<VspUploadStatusRecord> findLatest(final String vspId, final String vspVersionId) {
92 final List<VspUploadStatusRecord> vspUploadStatusRecordList = accessor.findAllByVspIdAndVspVersionId(vspId, vspVersionId).all();
93 vspUploadStatusRecordList.sort(Comparator.comparing(VspUploadStatusRecord::getCreated).reversed());
94 return vspUploadStatusRecordList.isEmpty() ? Optional.empty() : Optional.ofNullable(vspUploadStatusRecordList.get(0));