2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2020 Nordix Foundation.
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
20 package org.onap.so.etsi.nfvo.ns.lcm.database.service;
22 import java.util.List;
23 import java.util.Optional;
24 import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoJob;
25 import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNfInst;
26 import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNsInst;
27 import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NsLcmOpOcc;
28 import org.onap.so.etsi.nfvo.ns.lcm.database.repository.NSLcmOpOccRepository;
29 import org.onap.so.etsi.nfvo.ns.lcm.database.repository.NfvoJobRepository;
30 import org.onap.so.etsi.nfvo.ns.lcm.database.repository.NfvoNfInstRepository;
31 import org.onap.so.etsi.nfvo.ns.lcm.database.repository.NfvoNsInstRepository;
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
34 import org.springframework.beans.factory.annotation.Autowired;
35 import org.springframework.stereotype.Service;
36 import org.springframework.transaction.annotation.Isolation;
37 import org.springframework.transaction.annotation.Propagation;
38 import org.springframework.transaction.annotation.Transactional;
41 * @author Waqas Ikram (waqas.ikram@est.tech)
46 public class DatabaseServiceProvider {
47 private static final Logger logger = LoggerFactory.getLogger(DatabaseServiceProvider.class);
49 private final NfvoJobRepository nfvoJobRepository;
51 private final NfvoNsInstRepository nfvoNsInstRepository;
53 private final NfvoNfInstRepository nfvoNfInstRepository;
55 private final NSLcmOpOccRepository nsLcmOpOccRepository;
58 public DatabaseServiceProvider(final NfvoJobRepository nfvoJobRepository,
59 final NfvoNsInstRepository nfvoNsInstRepository, final NfvoNfInstRepository nfvoNfInstRepository,
60 final NSLcmOpOccRepository nsLcmOpOccRepository) {
61 this.nfvoJobRepository = nfvoJobRepository;
62 this.nfvoNsInstRepository = nfvoNsInstRepository;
63 this.nfvoNfInstRepository = nfvoNfInstRepository;
64 this.nsLcmOpOccRepository = nsLcmOpOccRepository;
67 public boolean addJob(final NfvoJob job) {
68 logger.info("Adding NfvoJob: {} to database", job);
69 return nfvoJobRepository.save(job) != null;
72 public Optional<NfvoJob> getJob(final String jobId) {
73 logger.info("Querying database for NfvoJob using jobId: {}", jobId);
74 return nfvoJobRepository.findById(jobId);
77 @Transactional(propagation = Propagation.REQUIRES_NEW, isolation = Isolation.REPEATABLE_READ, readOnly = true)
78 public Optional<NfvoJob> getRefreshedJob(final String jobId) {
79 logger.info("Querying database for NfvoJob using jobId: {}", jobId);
80 final Optional<NfvoJob> optional = getJob(jobId);
81 if (optional.isPresent()) {
82 nfvoJobRepository.refreshEntity(optional.get());
87 public Optional<NfvoJob> getJobByResourceId(final String resourceId) {
88 logger.info("Querying database for NfvoJob using resourceId: {}", resourceId);
89 return nfvoJobRepository.findByResourceId(resourceId);
92 public boolean isNsInstExists(final String name) {
93 logger.info("Checking if NfvoNsInst entry exists in database using name: {}", name);
94 return nfvoNsInstRepository.existsNfvoNsInstByName(name);
97 public boolean isNsInstExists(final String nsInstId, final String nfName) {
98 logger.info("Checking if NfvoNfInst entry exists in database using nsInstId: {} and nfName: {}", nsInstId,
100 return nfvoNfInstRepository.findByNsInstNsInstIdAndName(nsInstId, nfName).isEmpty();
103 public boolean saveNfvoNsInst(final NfvoNsInst nfvoNsInst) {
104 logger.info("Saving NfvoNsInst: {} to database", nfvoNsInst);
105 return nfvoNsInstRepository.save(nfvoNsInst) != null;
108 public Optional<NfvoNsInst> getNfvoNsInst(final String nsInstId) {
109 logger.info("Querying database for NfvoNsInst using nsInstId: {}", nsInstId);
110 return nfvoNsInstRepository.findById(nsInstId);
113 public Optional<NfvoNsInst> getNfvoNsInstByName(final String name) {
114 logger.info("Querying database for NfvoNsInst using name: {}", name);
115 return nfvoNsInstRepository.findByName(name);
118 public boolean saveNfvoNfInst(final NfvoNfInst nfvoNfInst) {
119 logger.info("Saving NfvoNfInst: {} to database", nfvoNfInst);
120 return nfvoNfInstRepository.save(nfvoNfInst) != null;
123 public List<NfvoNfInst> getNfvoNfInstByNsInstId(final String nsInstId) {
124 logger.info("Querying database for NfvoNfInst using nsInstId: {}", nsInstId);
125 return nfvoNfInstRepository.findByNsInstNsInstId(nsInstId);
128 public List<NfvoNfInst> getNfvoNfInstByNsInstIdAndNfName(final String nsInstId, final String name) {
129 logger.info("Querying database for NfvoNfInst using nsInstId: {} and name : {} ", nsInstId, name);
130 return nfvoNfInstRepository.findByNsInstNsInstIdAndName(nsInstId, name);
133 public Optional<NfvoNfInst> getNfvoNfInst(final String nfInstId) {
134 logger.info("Querying database for NfvoNfInst using nfInstId: {}", nfInstId);
135 return nfvoNfInstRepository.findByNfInstId(nfInstId);
138 public boolean isNfInstExists(final String nfInstId) {
139 logger.info("Checking if NfvoNfInst entry exists in database using nfInstId: {}", nfInstId);
140 return nfvoNfInstRepository.findByNfInstId(nfInstId).isPresent();
143 public void deleteNfvoNfInst(final String nfInstId) {
144 logger.info("Deleting NfvoNfInst with nfInstId: {} from database", nfInstId);
145 nfvoNfInstRepository.deleteById(nfInstId);
148 public boolean addNSLcmOpOcc(final NsLcmOpOcc nsLcmOpOcc) {
149 logger.info("Adding NSLcmOpOcc: {} to database", nsLcmOpOcc);
150 return nsLcmOpOccRepository.save(nsLcmOpOcc) != null;
153 public Optional<NsLcmOpOcc> getNsLcmOpOcc(final String id) {
154 logger.info("Querying database for NsLcmOpOcc using id: {}", id);
155 return nsLcmOpOccRepository.findById(id);
158 public void deleteNfvoNsInst(final String nsInstId) {
159 logger.info("Deleting NfvoNsInst with nsInstId: {}", nsInstId);
160 nfvoNsInstRepository.deleteById(nsInstId);