Updating licenses in all files
[appc.git] / appc-dispatcher / appc-license-manager / appc-license-manager-core / src / main / java / org / openecomp / appc / licmgr / impl / LicenseDataAccessServiceImpl.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * APPC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * Copyright (C) 2017 Amdocs
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  * 
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  * 
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
21  */
22
23 package org.openecomp.appc.licmgr.impl;
24
25 import javax.sql.rowset.CachedRowSet;
26
27 import org.openecomp.appc.licmgr.Constants;
28 import org.openecomp.appc.licmgr.LicenseDataAccessService;
29 import org.openecomp.appc.licmgr.exception.DataAccessException;
30 import com.att.eelf.configuration.EELFLogger;
31 import com.att.eelf.configuration.EELFManager;
32 import org.openecomp.sdnc.sli.resource.dblib.DbLibService;
33
34 import static org.openecomp.appc.licmgr.Constants.ASDC_ARTIFACTS_FIELDS;
35
36 import java.sql.SQLException;
37 import java.util.ArrayList;
38 import java.util.HashMap;
39 import java.util.Map;
40
41
42 @SuppressWarnings("JavaDoc")
43 public class LicenseDataAccessServiceImpl implements LicenseDataAccessService {
44
45     private static EELFLogger logger = EELFManager.getInstance().getLogger(LicenseDataAccessServiceImpl.class);
46
47     public void setSchema(String schema) {
48         this.schema = schema;
49     }
50
51     private String schema;
52
53     public void setDbLibService(DbLibService dbLibService) {
54         this.dbLibService = dbLibService;
55     }
56
57     private DbLibService dbLibService;
58
59
60     /**
61      * empty constructor
62      */
63     public LicenseDataAccessServiceImpl(){}
64
65     @Override
66     public Map<String,String> retrieveLicenseModelData(String vnfType, String vnfVersion, String... fields) throws
67                     DataAccessException {
68
69         Map<String,String> result = new HashMap<>();
70         if (null == fields || 0 == fields.length) fields = new String[]{ASDC_ARTIFACTS_FIELDS.ARTIFACT_CONTENT.name()};
71
72         String queryString = buildQueryStatement();
73
74         ArrayList<String> argList = new ArrayList<>();
75         argList.add(vnfType);
76         argList.add(vnfVersion);
77         argList.add(Constants.VF_LICENSE);
78
79         try {
80
81             final CachedRowSet data = dbLibService.getData(queryString, argList, Constants.NETCONF_SCHEMA);
82
83             if (data.first()) {
84                 for (String field : fields) {
85                     result.put(field, data.getString(field));
86                 }
87             } else {
88                 String msg = "Missing license model for VNF_TYPE: " + vnfType + " and VNF_VERSION: " + vnfVersion + " in table " + Constants.ASDC_ARTIFACTS_TABLE_NAME;
89                 logger.info(msg);
90             }
91         } catch (SQLException e) {
92             logger.error("Error Accessing Database " + e);
93             throw new DataAccessException(e);
94         }
95
96         return result;
97     }
98
99     private String buildQueryStatement() {
100         return "select * " + "from " + Constants.ASDC_ARTIFACTS_TABLE_NAME + " " +
101             "where " + ASDC_ARTIFACTS_FIELDS.RESOURCE_NAME.name() + " = ?" +
102              " AND " + ASDC_ARTIFACTS_FIELDS.RESOURCE_VERSION.name() + " = ?" +
103              " AND " + ASDC_ARTIFACTS_FIELDS.ARTIFACT_TYPE.name() + " = ?";
104     }
105
106     /**
107      * Implementation of storeArtifactPayload()
108      * @see LicenseDataAccessService
109      */
110     @Override
111     public void storeArtifactPayload(Map<String, String> parameters) throws RuntimeException {
112
113         if(parameters == null || parameters.isEmpty()) {
114             throw new RuntimeException("No parameters for insert are provided");
115         }
116
117         String insertStr = "INSERT INTO " + Constants.ASDC_ARTIFACTS_TABLE_NAME + "(";
118         String valuesStr = "VALUES(";
119         String insertStatementStr;
120
121         ArrayList<String> params = new ArrayList<>();
122         boolean firstTime = true;
123         for(Map.Entry<String, String> entry : parameters.entrySet()) {
124             if(!firstTime) {
125                 insertStr += ",";
126                 valuesStr += ",";
127             }
128             else {
129                 firstTime = false;
130             }
131             insertStr += entry.getKey();
132             valuesStr += "?";
133
134             params.add(entry.getValue());
135         }
136
137         insertStr += ")";
138         valuesStr += ")";
139         insertStatementStr = insertStr + " " + valuesStr;
140
141         executeStoreArtifactPayload(insertStatementStr, params);
142     }
143
144     /**
145      * Exexutes insert statement for artifact payload
146      * @param insertStatementStr
147      * @param params
148      * @throws RuntimeException
149      */
150     private void executeStoreArtifactPayload(String insertStatementStr, ArrayList<String> params) throws RuntimeException {
151
152         try {
153             logger.info("used schema=" + this.schema);
154             logger.info("insert statement=" + insertStatementStr);
155
156             dbLibService.writeData(insertStatementStr, params, this.schema);
157
158             logger.info("finished to execute insert");
159
160         } catch (SQLException e) {
161             logger.error("Storing Artifact payload failed - " + insertStatementStr);
162             throw new RuntimeException("Storing Artifact payload failed - " + insertStatementStr);
163         }
164     }
165
166 }