Obtain and control VSP package upload status
[sdc.git] / openecomp-be / lib / openecomp-sdc-vendor-software-product-lib / openecomp-sdc-vendor-software-product-core / src / main / java / org / openecomp / sdc / vendorsoftwareproduct / dao / impl / VspUploadStatusRecordDaoIml.java
1 /*
2  * -
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
9  *
10  *       http://www.apache.org/licenses/LICENSE-2.0
11  *
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.
17  *
18  *  SPDX-License-Identifier: Apache-2.0
19  *  ============LICENSE_END=========================================================
20  */
21
22 package org.openecomp.sdc.vendorsoftwareproduct.dao.impl;
23
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;
38
39 /**
40  * Data access object for the package upload process status.
41  */
42 @Component("vsp-upload-status-record-dao-impl")
43 public class VspUploadStatusRecordDaoIml implements VspUploadStatusRecordDao {
44
45     private final Mapper<VspUploadStatusRecord> mapper;
46     private final VspUploadStatusRecordAccessor accessor;
47
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));
53     }
54
55     //for tests purpose
56     VspUploadStatusRecordDaoIml(final VspUploadStatusRecordAccessor accessor) {
57         this.accessor = accessor;
58         mapper = null;
59     }
60
61     @Override
62     public void create(final VspUploadStatusRecord vspUploadStatusRecord) {
63         mapper.save(vspUploadStatusRecord);
64     }
65
66     @Override
67     public void update(final VspUploadStatusRecord vspUploadStatusRecord) {
68         mapper.save(vspUploadStatusRecord);
69     }
70
71     @Override
72     public List<VspUploadStatusRecord> findAllByVspIdAndVersionId(final String vspId, final String vspVersionId) {
73         final Result<VspUploadStatusRecord> allByVspIdAndVspVersionId = accessor.findAllByVspIdAndVspVersionId(vspId, vspVersionId);
74         return allByVspIdAndVspVersionId.all();
75     }
76
77     @Override
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);
82     }
83
84     @Override
85     public List<VspUploadStatusRecord> findAllInProgress(final String vspId, final String vspVersionId) {
86         final Result<VspUploadStatusRecord> incompleteUploadList = accessor.findAllIncomplete(vspId, vspVersionId);
87         return incompleteUploadList.all();
88     }
89
90     @Override
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));
95     }
96
97 }