Code Improvements-Vnfsdk-refrepo sonar issue fixes
[vnfsdk/refrepo.git] / vnfmarket-be / vnf-sdk-marketplace / src / main / java / org / onap / vnfsdk / marketplace / db / resource / PackageManager.java
1 /**
2  * Copyright 2017 Huawei Technologies Co., Ltd.
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 package org.onap.vnfsdk.marketplace.db.resource;
17
18
19 import java.util.HashMap;
20 import java.util.List;
21 import java.util.Map;
22
23 import org.onap.vnfsdk.marketplace.db.common.Parameters;
24 import org.onap.vnfsdk.marketplace.db.entity.PackageData;
25 import org.onap.vnfsdk.marketplace.db.exception.MarketplaceResourceException;
26 import org.onap.vnfsdk.marketplace.db.util.MarketplaceDbUtil;
27 import org.onap.vnfsdk.marketplace.db.wrapper.PackageHandler;
28 import org.slf4j.Logger;
29 import org.slf4j.LoggerFactory;
30
31 public class PackageManager {
32     private static final Logger LOGGER = LoggerFactory.getLogger(PackageManager.class);
33     private static PackageManager manager;
34     PackageHandler handler = new PackageHandler();
35
36     /**
37      * get PackageManager instance.
38      * @return PackageManager instance
39      */
40     public static synchronized PackageManager getInstance() {
41         if (manager == null) {
42             manager = new PackageManager();
43         }
44         return manager;
45     }
46
47     /**
48      * private PackageManager() {}
49
50      * add package.
51      * @param packageData package data
52      * @return PackageData
53      * @throws MarketplaceResourceException e
54      */
55     public PackageData addPackage(PackageData packageData) throws MarketplaceResourceException {
56         String jsonPackageData = MarketplaceDbUtil.objectToString(packageData);
57         LOGGER.info("start add package info  to db.info:{}" , jsonPackageData);
58         PackageData data = handler.create(packageData);
59         String jsonData = MarketplaceDbUtil.objectToString(data);
60         LOGGER.info(" package info  to db end.info:{}" , jsonData);
61         return data;
62     }
63
64     /**
65      * query package by package id.
66      * @param csarId package id
67      * @return package data list
68      * @throws MarketplaceResourceException e
69      */
70     public List<PackageData> queryPackageByCsarId(String csarId)
71             throws MarketplaceResourceException {
72         LOGGER.info("start query package info by csarid.{}" , csarId);
73         List<PackageData> data = handler.queryByID(csarId);
74         String jsonData = MarketplaceDbUtil.objectToString(data);
75         LOGGER.info("query package info end.size:{} detail:{}", data.size(), jsonData);
76         return data;
77     }
78
79     /**
80      * query package by condition.
81      * @param name package name
82      * @param provider package provider
83      * @param version package version
84      * @param deletionPending deletionPending
85      * @param type package type
86      * @return package data list
87      * @throws MarketplaceResourceException e
88      */
89     public List<PackageData> queryPackage(String name, String provider, String version,
90             String deletionPending, String type) throws MarketplaceResourceException {
91         LOGGER.info("start query package info.name:{} provider:{} version:{} type:{}", name , provider , version, type);
92         Map<String, String> queryParam = new HashMap<>();
93         if (MarketplaceDbUtil.isNotEmpty(name)) {
94             queryParam.put(Parameters.NAME.name(), name);
95         }
96         if (MarketplaceDbUtil.isNotEmpty(version)) {
97             queryParam.put(Parameters.VERSION.name(), version);
98         }
99         if (MarketplaceDbUtil.isNotEmpty(deletionPending)) {
100             queryParam.put(Parameters.DELETIONPENDING.name(), deletionPending);
101         }
102         if (MarketplaceDbUtil.isNotEmpty(type)) {
103             queryParam.put(Parameters.TYPE.name(), type);
104         }
105         if (MarketplaceDbUtil.isNotEmpty(provider)) {
106             queryParam.put(Parameters.PROVIDER.name(), provider);
107         }
108         List<PackageData> data = handler.query(queryParam);
109         String jsonData = MarketplaceDbUtil.objectToString(data);
110         LOGGER.info("query package info end.size:{} detail:{}", data.size(), jsonData);
111         return data;
112     }
113
114     /**
115      * delete package according package id.
116      * @param packageId package id
117      * @throws MarketplaceResourceException e
118      */
119     public void deletePackage(String packageId) throws MarketplaceResourceException {
120         LOGGER.info("start delete package info by id.{}" , packageId);
121         handler.delete(packageId);
122         LOGGER.info(" delete package info end id.{}" , packageId);
123     }
124
125     /**
126      * update download count of package according package id.
127      * @param packageId package id
128      * @throws MarketplaceResourceException e
129      */
130     public void updateDownloadCount(String packageId) throws MarketplaceResourceException
131     {
132         LOGGER.info("Request received for Updating down load count for ID:{}" , packageId);
133
134         //STEP 1: Get the Existing download  count from DB
135         //-------------------------------------------------
136         List<PackageData> data = handler.queryByID(packageId);
137         if(data.isEmpty())
138         {
139             LOGGER.info("Package Info not foun for ID:{}" , packageId);
140             return;
141         }
142
143         //STEP 2: Increment download Count in DB
144         //--------------------------------------
145         PackageData oPackageData = data.get(0);
146         int idownloadcount = oPackageData.getDownloadCount();
147         oPackageData.setDownloadCount(++idownloadcount);
148
149         handler.update(oPackageData);
150
151         LOGGER.info("Download count updated to :{}" , idownloadcount);
152     }
153 }
154