From 1c192d2dd68724e292b6a30f463085a262e1e813 Mon Sep 17 00:00:00 2001 From: Patrick Brady Date: Wed, 15 Feb 2017 23:11:26 -0800 Subject: Moving all files to root directory Change-Id: Ica5535fd6ec85f350fe1640b42137b49f83f10f0 Signed-off-by: Patrick Brady --- .../licmgr/impl/LicenseDataAccessServiceImpl.java | 177 +++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 appc-dispatcher/appc-license-manager/appc-license-manager-core/src/main/java/org/openecomp/appc/licmgr/impl/LicenseDataAccessServiceImpl.java (limited to 'appc-dispatcher/appc-license-manager/appc-license-manager-core/src/main/java/org/openecomp/appc/licmgr/impl/LicenseDataAccessServiceImpl.java') diff --git a/appc-dispatcher/appc-license-manager/appc-license-manager-core/src/main/java/org/openecomp/appc/licmgr/impl/LicenseDataAccessServiceImpl.java b/appc-dispatcher/appc-license-manager/appc-license-manager-core/src/main/java/org/openecomp/appc/licmgr/impl/LicenseDataAccessServiceImpl.java new file mode 100644 index 000000000..2aff1ffb9 --- /dev/null +++ b/appc-dispatcher/appc-license-manager/appc-license-manager-core/src/main/java/org/openecomp/appc/licmgr/impl/LicenseDataAccessServiceImpl.java @@ -0,0 +1,177 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : APP-C + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.appc.licmgr.impl; + +import org.openecomp.appc.licmgr.Constants; +import org.openecomp.appc.licmgr.LicenseDataAccessService; +import org.openecomp.appc.licmgr.exception.DataAccessException; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import org.openecomp.sdnc.sli.resource.dblib.DbLibService; +import org.osgi.framework.BundleContext; +import org.osgi.framework.FrameworkUtil; +import org.osgi.framework.ServiceReference; + +import javax.sql.rowset.CachedRowSet; + +import static org.openecomp.appc.licmgr.Constants.ASDC_ARTIFACTS_FIELDS; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + + +@SuppressWarnings("JavaDoc") +class LicenseDataAccessServiceImpl implements LicenseDataAccessService { + + private static EELFLogger logger = EELFManager.getInstance().getLogger(LicenseDataAccessServiceImpl.class); + + public void setSchema(String schema) { + this.schema = schema; + } + + private String schema; + + private DbLibService dbLibService; + + private void checkDbLibService() throws DataAccessException { + if (null != dbLibService) {return;} + + //get dblib service and send it to DAService + BundleContext bctx = FrameworkUtil.getBundle(LicenseManagerImpl.class).getBundleContext(); + ServiceReference sref = bctx.getServiceReference(DbLibService.class.getName()); + dbLibService = (DbLibService)bctx.getService(sref); + + } + + /** + * empty constructor + */ + public LicenseDataAccessServiceImpl(){} + + @Override + public Map retrieveLicenseModelData(String vnfType, String vnfVersion, String... fields) throws + DataAccessException { + + checkDbLibService(); + + Map result = new HashMap<>(); + if (null == fields || 0 == fields.length) fields = new String[]{ASDC_ARTIFACTS_FIELDS.ARTIFACT_CONTENT.name()}; + + String queryString = buildQueryStatement(); + + ArrayList argList = new ArrayList<>(); + argList.add(vnfType); + argList.add(vnfVersion); + argList.add(Constants.VF_LICENSE); + + try { + + final CachedRowSet data = dbLibService.getData(queryString, argList, Constants.NETCONF_SCHEMA); + + if (data.first()) { + for (String field : fields) { + result.put(field, data.getString(field)); + } + } else { + String msg = "Missing license model for VNF_TYPE: " + vnfType + " and VNF_VERSION: " + vnfVersion + " in table " + Constants.ASDC_ARTIFACTS_TABLE_NAME; + logger.info(msg); + } + } catch (SQLException e) { + logger.error("Error Accessing Database " + e); + throw new DataAccessException(e); + } + + return result; + } + + private String buildQueryStatement() { + return "select * " + "from " + Constants.ASDC_ARTIFACTS_TABLE_NAME + " " + + "where " + ASDC_ARTIFACTS_FIELDS.RESOURCE_NAME.name() + " = ?" + + " AND " + ASDC_ARTIFACTS_FIELDS.RESOURCE_VERSION.name() + " = ?" + + " AND " + ASDC_ARTIFACTS_FIELDS.ARTIFACT_TYPE.name() + " = ?"; + } + + /** + * Implementation of storeArtifactPayload() + * @see LicenseDataAccessService + */ + @Override + public void storeArtifactPayload(Map parameters) throws RuntimeException { + + checkDbLibService(); + + if(parameters == null || parameters.isEmpty()) { + throw new RuntimeException("No parameters for insert are provided"); + } + + String insertStr = "INSERT INTO " + Constants.ASDC_ARTIFACTS_TABLE_NAME + "("; + String valuesStr = "VALUES("; + String insertStatementStr; + + ArrayList params = new ArrayList<>(); + boolean firstTime = true; + for(Map.Entry entry : parameters.entrySet()) { + if(!firstTime) { + insertStr += ","; + valuesStr += ","; + } + else { + firstTime = false; + } + insertStr += entry.getKey(); + valuesStr += "?"; + + params.add(entry.getValue()); + } + + insertStr += ")"; + valuesStr += ")"; + insertStatementStr = insertStr + " " + valuesStr; + + executeStoreArtifactPayload(insertStatementStr, params); + } + + /** + * Exexutes insert statement for artifact payload + * @param insertStatementStr + * @param params + * @throws RuntimeException + */ + private void executeStoreArtifactPayload(String insertStatementStr, ArrayList params) throws RuntimeException { + + try { + logger.info("used schema=" + this.schema); + logger.info("insert statement=" + insertStatementStr); + + dbLibService.writeData(insertStatementStr, params, this.schema); + + logger.info("finished to execute insert"); + + } catch (SQLException e) { + logger.error("Storing Artifact payload failed - " + insertStatementStr); + throw new RuntimeException("Storing Artifact payload failed - " + insertStatementStr); + } + } + +} -- cgit 1.2.3-korg