Initial commit for appc-data-services bundle 61/7661/8
authorSkip Wonnell <kw5258@att.com>
Tue, 15 Aug 2017 22:05:27 +0000 (17:05 -0500)
committerPatrick Brady <pb071s@att.com>
Thu, 17 Aug 2017 06:15:20 +0000 (06:15 +0000)
This bundle contains the generic execute nodes that
interact with the database.

Issue-ID: APPC-58
Change-Id: Ib1447443ed259f4133cd33d554a5ac43f2c3dd1b
Signed-off-by: Skip Wonnell <kw5258@att.com>
24 files changed:
appc-config/appc-data-services/.gitignore [new file with mode: 0644]
appc-config/appc-data-services/features/.gitignore [new file with mode: 0644]
appc-config/appc-data-services/features/pom.xml [new file with mode: 0644]
appc-config/appc-data-services/features/src/main/resources/features.xml [new file with mode: 0644]
appc-config/appc-data-services/installer/pom.xml [new file with mode: 0644]
appc-config/appc-data-services/installer/src/assembly/assemble_installer_zip.xml [new file with mode: 0644]
appc-config/appc-data-services/installer/src/assembly/assemble_mvnrepo_zip.xml [new file with mode: 0644]
appc-config/appc-data-services/installer/src/main/resources/scripts/install-feature.sh [new file with mode: 0644]
appc-config/appc-data-services/pom.xml [new file with mode: 0644]
appc-config/appc-data-services/provider/.gitignore [new file with mode: 0644]
appc-config/appc-data-services/provider/pom.xml [new file with mode: 0644]
appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/AppcDataServiceActivator.java [new file with mode: 0644]
appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/AppcDataServiceConstant.java [new file with mode: 0644]
appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/db/DGGeneralDBService.java [new file with mode: 0644]
appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/db/GeneralDataService.java [new file with mode: 0644]
appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/node/ConfigResourceNode.java [new file with mode: 0644]
appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/utils/EscapeUtils.java [new file with mode: 0644]
appc-config/appc-data-services/provider/src/test/java/org/openecomp/appc/data/services/db/TestDGGeneralDBService.java [new file with mode: 0644]
appc-config/appc-data-services/provider/src/test/java/org/openecomp/appc/data/services/db/TestSQLSaveQuery.java [new file with mode: 0644]
appc-config/appc-data-services/provider/src/test/resources/query/message3.txt [new file with mode: 0644]
appc-config/appc-data-services/provider/src/test/resources/query/sampledata.txt [new file with mode: 0644]
appc-config/appc-data-services/provider/src/test/resources/svclogic.properties [new file with mode: 0644]
appc-config/pom.xml
pom.xml

diff --git a/appc-config/appc-data-services/.gitignore b/appc-config/appc-data-services/.gitignore
new file mode 100644 (file)
index 0000000..b83d222
--- /dev/null
@@ -0,0 +1 @@
+/target/
diff --git a/appc-config/appc-data-services/features/.gitignore b/appc-config/appc-data-services/features/.gitignore
new file mode 100644 (file)
index 0000000..b83d222
--- /dev/null
@@ -0,0 +1 @@
+/target/
diff --git a/appc-config/appc-data-services/features/pom.xml b/appc-config/appc-data-services/features/pom.xml
new file mode 100644 (file)
index 0000000..ca74c67
--- /dev/null
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+       <modelVersion>4.0.0</modelVersion>
+       <parent>
+               <artifactId>appc-config-data-services</artifactId>
+               <groupId>org.openecomp.appc</groupId>
+               <version>1.1.0-SNAPSHOT</version>
+       </parent>
+       <artifactId>appc-config-data-services-features</artifactId>
+       <name>APPC Data Services Plugin - Features</name>
+
+       <packaging>jar</packaging>
+
+       <dependencies>
+               <dependency>
+                       <groupId>org.openecomp.appc</groupId>
+                       <artifactId>appc-config-data-services-provider</artifactId>
+                       <version>${project.version}</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>commons-lang</groupId>
+                       <artifactId>commons-lang</artifactId>
+                       <version>2.6</version>
+                       <scope>compile</scope>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.opendaylight.mdsal</groupId>
+                       <artifactId>features-mdsal</artifactId>
+                       <version>${odl.mdsal.version}</version>
+                       <classifier>features</classifier>
+                       <type>xml</type>
+
+                       <scope>runtime</scope>
+               </dependency>
+
+
+               <!-- dependency for opendaylight-karaf-empty for use by testing -->
+               <dependency>
+                       <groupId>org.opendaylight.controller</groupId>
+                       <artifactId>opendaylight-karaf-empty</artifactId>
+                       <version>${odl.karaf.empty.distro.version}</version>
+                       <type>zip</type>
+               </dependency>
+
+
+               <dependency>
+                       <!-- Required for launching the feature tests -->
+                       <groupId>org.opendaylight.odlparent</groupId>
+                       <artifactId>features-test</artifactId>
+                       <version>${odl.commons.opendaylight.version}</version>
+                       <scope>test</scope>
+               </dependency>
+
+       </dependencies>
+
+       <build>
+               <resources>
+                       <resource>
+                               <filtering>true</filtering>
+                               <directory>src/main/resources</directory>
+                       </resource>
+               </resources>
+               <plugins>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-resources-plugin</artifactId>
+                               <executions>
+                                       <execution>
+                                               <id>filter</id>
+                                               <goals>
+                                                       <goal>resources</goal>
+                                               </goals>
+                                               <phase>generate-resources</phase>
+                                       </execution>
+                               </executions>
+                       </plugin>
+                       <!-- launches the feature test, which validates that your karaf feature 
+                               can be installed inside of a karaf container. It doesn't validate that your 
+                               functionality works correctly, just that you have all of the dependent bundles 
+                               defined correctly. <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> 
+                               <version>2.16</version> <configuration> <systemPropertyVariables> <karaf.distro.groupId>org.opendaylight.controller</karaf.distro.groupId> 
+                               <karaf.distro.artifactId>opendaylight-karaf-empty</karaf.distro.artifactId> 
+                               <karaf.distro.version>${odl.karaf.empty.distro.version}</karaf.distro.version> 
+                               </systemPropertyVariables> <dependenciesToScan> <dependency>org.opendaylight.yangtools:features-test</dependency> 
+                               </dependenciesToScan> </configuration> </plugin> -->
+                       <plugin>
+                               <groupId>org.codehaus.mojo</groupId>
+                               <artifactId>build-helper-maven-plugin</artifactId>
+                               <executions>
+                                       <execution>
+                                               <id>attach-artifacts</id>
+                                               <goals>
+                                                       <goal>attach-artifact</goal>
+                                               </goals>
+                                               <phase>package</phase>
+                                               <configuration>
+                                                       <artifacts>
+                                                               <artifact>
+                                                                       <file>${project.build.directory}/classes/${features.file}</file>
+                                                                       <type>xml</type>
+                                                                       <classifier>features</classifier>
+                                                               </artifact>
+                                                       </artifacts>
+                                               </configuration>
+                                       </execution>
+                               </executions>
+                       </plugin>
+               </plugins>
+       </build>
+</project>
diff --git a/appc-config/appc-data-services/features/src/main/resources/features.xml b/appc-config/appc-data-services/features/src/main/resources/features.xml
new file mode 100644 (file)
index 0000000..296a509
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ============LICENSE_START=======================================================
+  ONAP : 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=========================================================
+  -->
+
+
+<features name="appc-config-data-services-${project.version}"
+       xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
+
+       <repository>mvn:org.opendaylight.mdsal/features-mdsal/${odl.mdsal.version}/xml/features</repository>
+
+       <feature name='appc-config-data-services' description="Application Controller Config Data Service"
+               version='${project.version}'>
+               <!-- Most applications will have a dependency on the ODL MD-SAL Broker -->
+               <feature version="${broker-mdsal.version}">odl-mdsal-broker</feature>
+               
+               <feature version="${sdnc.dblib.version}">sdnc-dblib</feature>
+               <feature version="${sdnc.sli.version}">sdnc-sli</feature>
+               <feature version="${openecomp.sdnc.sql-resource.version}">sdnc-sql-resource</feature>
+               
+               <bundle>mvn:commons-lang/commons-lang/2.6</bundle>
+               
+               <bundle>mvn:commons-collections/commons-collections/3.2.1</bundle>
+
+               <bundle>wrap:mvn:com.att.eelf/eelf-core/${eelf.version}</bundle>
+               <bundle>mvn:ch.qos.logback/logback-core/${logback.version}</bundle>
+               <bundle>mvn:ch.qos.logback/logback-classic/${logback.version}</bundle>
+               <bundle>mvn:org.openecomp.appc/appc-data-services-provider/${project.version}</bundle>
+       </feature>
+</features>
diff --git a/appc-config/appc-data-services/installer/pom.xml b/appc-config/appc-data-services/installer/pom.xml
new file mode 100644 (file)
index 0000000..eaed61a
--- /dev/null
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ============LICENSE_START=======================================================
+  APPC
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+  Copyright (C) 2017 Amdocs
+  ================================================================================
+  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=========================================================
+  ECOMP is a trademark and service mark of AT&T Intellectual Property.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.openecomp.appc</groupId>
+        <artifactId>appc-config-data-services</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>appc-config-data-services-installer</artifactId>
+    <name>Config Component Data Services - Installer</name>
+    <packaging>pom</packaging>
+    <properties>
+        <application.name>appc-config-data-services</application.name>
+        <features.boot>appc-config-data-services</features.boot>
+        <features.repositories>mvn:org.openecomp.appc/appc-config-data-services-features/${project.version}/xml/features</features.repositories>
+        <include.transitive.dependencies>false</include.transitive.dependencies>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.openecomp.appc</groupId>
+            <artifactId>appc-config-data-services-features</artifactId>
+            <classifier>features</classifier>
+            <type>xml</type>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.appc</groupId>
+            <artifactId>appc-config-data-services-provider</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>maven-repo-zip</id>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <phase>package</phase>
+                        <configuration>
+                               <appendAssemblyId>false</appendAssemblyId>
+                            <attach>false</attach>
+                            <finalName>stage/${application.name}-${project.version}</finalName>
+                            <descriptors>
+                                <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor>
+                            </descriptors>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>installer-zip</id>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <phase>package</phase>
+                        <configuration>
+                               <appendAssemblyId>false</appendAssemblyId>
+                            <attach>true</attach>
+                            <finalName>${application.name}-${project.version}</finalName>
+                            <descriptors>
+                                <descriptor>src/assembly/assemble_installer_zip.xml</descriptor>
+                            </descriptors>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy-dependencies</id>
+                        <goals>
+                            <goal>copy-dependencies</goal>
+                        </goals>
+                        <phase>prepare-package</phase>
+                        <configuration>
+                            <transitive>false</transitive>
+                            <outputDirectory>${project.build.directory}/assembly/system</outputDirectory>
+                            <overWriteReleases>false</overWriteReleases>
+                            <overWriteSnapshots>true</overWriteSnapshots>
+                            <overWriteIfNewer>true</overWriteIfNewer>
+                            <useRepositoryLayout>true</useRepositoryLayout>
+                            <addParentPoms>false</addParentPoms>
+                            <copyPom>false</copyPom>
+                            <excludeGroupIds>org.opendaylight</excludeGroupIds>
+                            <scope>provided</scope>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy-version</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/stage</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/resources/scripts</directory>
+                                    <includes>
+                                        <include>install-feature.sh</include>
+                                    </includes>
+                                    <filtering>true</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/appc-config/appc-data-services/installer/src/assembly/assemble_installer_zip.xml b/appc-config/appc-data-services/installer/src/assembly/assemble_installer_zip.xml
new file mode 100644 (file)
index 0000000..8769cdb
--- /dev/null
@@ -0,0 +1,59 @@
+<!--
+  ============LICENSE_START=======================================================
+  ONAP : 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=========================================================
+  ECOMP is a trademark and service mark of AT&T Intellectual Property.
+  -->
+
+<!-- Defines how we build the .zip file which is our distribution. -->
+
+<assembly
+       xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+       <id>data-services</id>
+       <formats>
+               <format>zip</format>
+       </formats>
+
+       <!--  we want "system" and related files right at the root level
+                 as this file is suppose to be unzip on top of a karaf
+                 distro. -->
+       <includeBaseDirectory>false</includeBaseDirectory>
+
+       <fileSets>
+               <fileSet>
+                       <directory>target/stage/</directory>
+                       <outputDirectory>${application.name}</outputDirectory>
+                       <fileMode>755</fileMode>
+                       <includes>
+                               <include>*.sh</include>
+                       </includes>
+               </fileSet>
+               <fileSet>
+                       <directory>target/stage/</directory>
+                       <outputDirectory>${application.name}</outputDirectory>
+                       <fileMode>644</fileMode>
+                       <excludes>
+                               <exclude>*.sh</exclude>
+                       </excludes>
+               </fileSet>
+       </fileSets>
+
+
+
+</assembly>
diff --git a/appc-config/appc-data-services/installer/src/assembly/assemble_mvnrepo_zip.xml b/appc-config/appc-data-services/installer/src/assembly/assemble_mvnrepo_zip.xml
new file mode 100644 (file)
index 0000000..afc6ce3
--- /dev/null
@@ -0,0 +1,47 @@
+<!--
+  ============LICENSE_START=======================================================
+  ONAP : 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=========================================================
+  ECOMP is a trademark and service mark of AT&T Intellectual Property.
+  -->
+
+<!-- Defines how we build the .zip file which is our distribution. -->
+
+<assembly
+       xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+       <id>data-services</id>
+       <formats>
+               <format>zip</format>
+       </formats>
+
+       <!--  we want "system" and related files right at the root level
+                 as this file is suppose to be unzip on top of a karaf
+                 distro. -->
+       <includeBaseDirectory>false</includeBaseDirectory>
+
+       <fileSets>
+               <fileSet>
+                       <directory>target/assembly/</directory>
+                       <outputDirectory>.</outputDirectory>
+                       <excludes>
+                       </excludes>
+               </fileSet>
+       </fileSets>
+
+</assembly>
diff --git a/appc-config/appc-data-services/installer/src/main/resources/scripts/install-feature.sh b/appc-config/appc-data-services/installer/src/main/resources/scripts/install-feature.sh
new file mode 100644 (file)
index 0000000..d3d2ea6
--- /dev/null
@@ -0,0 +1,40 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP : 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=========================================================
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+###
+
+#!/bin/bash
+
+ODL_HOME=${ODL_HOME:-/opt/opendaylight/current}
+ODL_KARAF_CLIENT=${ODL_KARAF_CLIENT:-${ODL_HOME}/bin/client}
+ODL_KARAF_CLIENT_OPTS=${ODL_KARAF_CLIENT_OPTS:-"-u karaf"}
+INSTALLERDIR=$(dirname $0)
+
+REPOZIP=${INSTALLERDIR}/${features.boot}-${project.version}.zip
+
+if [ -f ${REPOZIP} ]
+then
+       unzip -n -d ${ODL_HOME} ${REPOZIP}
+else
+       echo "ERROR : repo zip ($REPOZIP) not found"
+       exit 1
+fi
+
+${ODL_KARAF_CLIENT} ${ODL_KARAF_CLIENT_OPTS} feature:repo-add ${features.repositories}
+${ODL_KARAF_CLIENT} ${ODL_KARAF_CLIENT_OPTS} feature:install ${features.boot}
diff --git a/appc-config/appc-data-services/pom.xml b/appc-config/appc-data-services/pom.xml
new file mode 100644 (file)
index 0000000..bca3ad0
--- /dev/null
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+       <parent>
+               <groupId>org.openecomp.appc</groupId>
+               <artifactId>appc-config</artifactId>
+               <version>1.1.0-SNAPSHOT</version>
+       </parent>
+
+       <modelVersion>4.0.0</modelVersion>
+       <packaging>pom</packaging>
+       <artifactId>appc-config-data-services</artifactId>
+
+       <name>APPC Data Services for Node</name>
+       <description>Common Utilities for DG</description>
+       
+       <properties>
+               <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>              
+       </properties>
+
+       <dependencyManagement>
+               <dependencies>
+                       <dependency>
+                               <groupId>org.openecomp.appc</groupId>
+                               <artifactId>appc-config-data-services-features</artifactId>
+                               <classifier>features</classifier>
+                               <type>xml</type>
+                               <version>${project.version}</version>
+                       </dependency>
+
+                       <dependency>
+                               <groupId>org.openecomp.appc</groupId>
+                               <artifactId>appc-config-data-services-provider</artifactId>
+                               <version>${project.version}</version>
+                       </dependency>
+               </dependencies>
+
+
+       </dependencyManagement>
+
+
+       <modules>
+               <module>provider</module>
+               <module>features</module>
+               <module>installer</module>
+       </modules>
+
+</project>
diff --git a/appc-config/appc-data-services/provider/.gitignore b/appc-config/appc-data-services/provider/.gitignore
new file mode 100644 (file)
index 0000000..b83d222
--- /dev/null
@@ -0,0 +1 @@
+/target/
diff --git a/appc-config/appc-data-services/provider/pom.xml b/appc-config/appc-data-services/provider/pom.xml
new file mode 100644 (file)
index 0000000..9de2e7b
--- /dev/null
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+       <modelVersion>4.0.0</modelVersion>
+       <parent>
+               <groupId>org.openecomp.appc</groupId>
+               <artifactId>appc-config-data-services</artifactId>
+               <version>1.1.0-SNAPSHOT</version>
+       </parent>
+       <artifactId>appc-config-data-services-provider</artifactId>
+       <packaging>bundle</packaging>
+       <name>APPC Data Services - Provider</name>
+       <url>http://maven.apache.org</url>
+       <properties>
+               <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+       </properties>
+       <dependencies>
+               <dependency>
+                       <groupId>equinoxSDK381</groupId>
+                       <artifactId>org.eclipse.osgi</artifactId>
+                       <version>${equinox.osgi.version}</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.openecomp.sdnc.core</groupId>
+                       <artifactId>sli-provider</artifactId>
+                       <scope>compile</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.openecomp.sdnc.adaptors</groupId>
+                       <artifactId>sql-resource-provider</artifactId>
+                       <version>${openecomp.sdnc.sql-resource.version}</version>
+                       <scope>compile</scope>
+               </dependency>
+
+               <dependency>
+                       <groupId>commons-io</groupId>
+                       <artifactId>commons-io</artifactId>
+               </dependency>
+
+               <dependency>
+                       <groupId>com.att.eelf</groupId>
+                       <artifactId>eelf-core</artifactId>
+               </dependency>
+
+               <dependency>
+                       <groupId>junit</groupId>
+                       <artifactId>junit</artifactId>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>com.fasterxml.jackson.core</groupId>
+                       <artifactId>jackson-databind</artifactId>
+               </dependency>
+
+       </dependencies>
+       <build>
+               <plugins>
+                       <plugin>
+                               <artifactId>maven-resources-plugin</artifactId>
+                               <executions>
+                                       <execution>
+                                               <id>copy-xsl</id>
+                                               <goals>
+                                                       <goal>copy-resources</goal>
+                                               </goals>
+                                               <phase>validate</phase>
+                                               <configuration>
+                                                       <outputDirectory>${basedir}/target/templates/xslt/sbg</outputDirectory>
+                                                       <resources>
+                                                               <resource>
+                                                                       <directory>src/main/resources/xsl</directory>
+                                                                       <includes>
+                                                                               <include>*</include>
+                                                                       </includes>
+                                                                       <filtering>true</filtering>
+                                                               </resource>
+                                                       </resources>
+                                               </configuration>
+                                       </execution>
+                                       <execution>
+                                               <id>copy-properties</id>
+                                               <goals>
+                                                       <goal>copy-resources</goal>
+                                               </goals>
+                                               <phase>validate</phase>
+                                               <configuration>
+                                                       <outputDirectory>${basedir}/target/properties/</outputDirectory>
+                                                       <resources>
+                                                               <resource>
+                                                                       <directory>src/main/resources</directory>
+                                                                       <includes>
+                                                                               <include>*.properties</include>
+                                                                       </includes>
+                                                                       <filtering>true</filtering>
+                                                               </resource>
+                                                       </resources>
+                                               </configuration>
+                                       </execution>
+                               </executions>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.felix</groupId>
+                               <artifactId>maven-bundle-plugin</artifactId>
+                               <version>${bundle.plugin.version}</version>
+                               <extensions>true</extensions>
+                               <configuration>
+                                       <instructions>
+                                               <Bundle-SymbolicName>appc-config-data-services</Bundle-SymbolicName>
+                                               <Bundle-Activator>org.openecomp.appc.config.data.services.AppcDataServiceActivator</Bundle-Activator>
+                                               <Export-Package>org.openecomp.appc.data.services</Export-Package>
+                                               <Import-Package>*</Import-Package>
+                                               <DynamicImport-Package>*</DynamicImport-Package>
+                                       </instructions>
+                                       <manifestLocation>${project.basedir}/src/main/resources/META-INF</manifestLocation>
+                               </configuration>
+                       </plugin>
+               </plugins>
+               <pluginManagement>
+                       <plugins>
+                               <!--This plugin's configuration is used to store Eclipse m2e settings 
+                                       only. It has no influence on the Maven build itself. -->
+                               <plugin>
+                                       <groupId>org.eclipse.m2e</groupId>
+                                       <artifactId>lifecycle-mapping</artifactId>
+                                       <version>1.0.0</version>
+                                       <configuration>
+                                               <lifecycleMappingMetadata>
+                                                       <pluginExecutions>
+                                                               <pluginExecution>
+                                                                       <pluginExecutionFilter>
+                                                                               <groupId>
+                                                                                       com.brocade.developer
+                                                                               </groupId>
+                                                                               <artifactId>
+                                                                                       providermodule-plugin
+                                                                               </artifactId>
+                                                                               <versionRange>
+                                                                                       [1.2.0.100-SNAPSHOT,)
+                                                                               </versionRange>
+                                                                               <goals>
+                                                                                       <goal>process</goal>
+                                                                               </goals>
+                                                                       </pluginExecutionFilter>
+                                                                       <action>
+                                                                               <ignore />
+                                                                       </action>
+                                                               </pluginExecution>
+                                                       </pluginExecutions>
+                                               </lifecycleMappingMetadata>
+                                       </configuration>
+                               </plugin>
+                       </plugins>
+               </pluginManagement>
+       </build>
+</project>
diff --git a/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/AppcDataServiceActivator.java b/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/AppcDataServiceActivator.java
new file mode 100644 (file)
index 0000000..0ccc2b7
--- /dev/null
@@ -0,0 +1,59 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : 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.data.services;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Properties;
+
+import org.openecomp.appc.data.services.node.ConfigResourceNode;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+
+public class AppcDataServiceActivator implements BundleActivator {
+
+       private static final EELFLogger log = EELFManager.getInstance().getLogger(AppcDataServiceActivator.class);
+       private List<ServiceRegistration> registrations = new LinkedList<ServiceRegistration>();
+       
+       @Override
+       public void start(BundleContext ctx) throws Exception {
+               
+               ConfigResourceNode configResourceNode = new ConfigResourceNode();
+               log.info("Registering service-- " + configResourceNode.getClass().getName());
+               registrations.add(ctx.registerService(configResourceNode.getClass().getName(), configResourceNode, null));
+
+               
+               
+               
+       }
+
+       @Override
+       public void stop(BundleContext arg0) throws Exception {
+               for (ServiceRegistration registration : registrations) {
+                       registration.unregister();
+                       registration = null;
+               }
+       }
+}
diff --git a/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/AppcDataServiceConstant.java b/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/AppcDataServiceConstant.java
new file mode 100644 (file)
index 0000000..87e0f2c
--- /dev/null
@@ -0,0 +1,46 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : 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.data.services;
+
+public class AppcDataServiceConstant {
+
+
+       
+
+       public static String INPUT_PARAM_RESPONSE_PREFIX = "responsePrefix";
+       public static String OUTPUT_STATUS_SUCCESS = "success";
+       public static String OUTPUT_STATUS_FAILURE = "failure";
+       public static final String INPUT_PARAM_MESSAGE = "message";
+       public static final String INPUT_PARAM_MESSAGE_TYPE = "messageType";
+       public static String OUTPUT_PARAM_STATUS = "status";
+       public static String OUTPUT_PARAM_ERROR_MESSAGE = "error-message";
+       public static final String INPUT_PARAM_FILE_CATEGORY = "fileCategory";
+       public static final String INPUT_PARAM_VM_INSTANCE = "vmInstance";
+       public static final String INPUT_PARAM_ASDC_ARTIFACT_IND = "asdcArtifactInd";
+       public static final Object INPUT_PARAM_VNF_ID = "vnfId";
+       public static final Object INPUT_PARAM_VM_NAME = "vmName";
+       
+       public static final String INPUT_PARAM_FILE_ID = "fileId";
+       
+       public static String INPUT_PARAM_UPLOAD_CONFIG_ID= "uploadConfigId";
+       
+       
+}
diff --git a/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/db/DGGeneralDBService.java b/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/db/DGGeneralDBService.java
new file mode 100644 (file)
index 0000000..3ec42f6
--- /dev/null
@@ -0,0 +1,443 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : 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.data.services.db;
+
+import java.util.Set;
+
+import org.apache.commons.lang3.StringUtils;
+
+import org.openecomp.sdnc.sli.SvcLogicContext;
+import org.openecomp.sdnc.sli.SvcLogicException;
+import org.openecomp.sdnc.sli.SvcLogicResource;
+import org.openecomp.sdnc.sli.SvcLogicResource.QueryStatus;
+import org.openecomp.sdnc.sli.resource.sql.SqlResource;
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+
+public class DGGeneralDBService {
+
+       private static final EELFLogger log = EELFManager.getInstance().getLogger(DGGeneralDBService.class);
+       private SvcLogicResource serviceLogic;
+       private static DGGeneralDBService dgGeneralDBService = null;
+
+       public static DGGeneralDBService initialise() {
+               if (dgGeneralDBService == null) {
+                       dgGeneralDBService = new DGGeneralDBService();
+               }
+               return dgGeneralDBService;
+       }
+
+       private DGGeneralDBService() {
+               if (serviceLogic == null) {
+                       serviceLogic = new SqlResource();
+               }
+       }
+
+       public QueryStatus getDeviceProtocolByVnfType(SvcLogicContext ctx, String prefix) throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       String key = "SELECT * FROM DEVICE_INTERFACE_PROTOCOL WHERE vnf_type = $vnf-type ;";
+                       status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx);
+               }
+               return status;
+       }
+
+       public QueryStatus getDeviceAuthenticationByVnfType(SvcLogicContext ctx, String prefix) throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       String key = "SELECT * FROM DEVICE_AUTHENTICATION WHERE vnf_type = $vnf-type ;";
+                       status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx);
+
+               }
+               return status;
+       }
+
+       public QueryStatus getConfigFileReferenceByVnfType(SvcLogicContext ctx, String prefix) throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       String key = "SELECT * FROM CONFIG_FILE_REFERENCE WHERE vnf_type = $vnf-type ;";
+                       status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx);
+               }
+               return status;
+       }
+
+       public QueryStatus getConfigFileReferenceByFileTypeNVnfType(SvcLogicContext ctx, String prefix, String fileType)
+                       throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       String key = "SELECT * FROM CONFIG_FILE_REFERENCE  WHERE file_type = '" + fileType
+                                       + "' and vnf_type = $vnf-type ;";
+                       status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx);
+               }
+               return status;
+       }
+
+       public QueryStatus getTemplate(SvcLogicContext ctx, String prefix, String fileCategory) throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       String key = "SELECT artifact_content file_content , asdc_artifacts_id config_file_id "
+                                       + " FROM ASDC_ARTIFACTS "
+                                       + " WHERE asdc_artifacts_id = ( SELECT MAX(a.asdc_artifacts_id) configfileid  "
+                                       + " FROM ASDC_ARTIFACTS a, ASDC_REFERENCE b " + " WHERE a.artifact_name = b.artifact_name "
+                                       + " AND file_category =  '" + fileCategory + "'" + " AND action =  $request-action "
+                                       + " AND vnf_type =  $vnf-type  " + " AND vnfc_type =   $vnfc-type ) ; ";
+                       status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx);
+               }
+               return status;
+       }
+
+       public QueryStatus getTemplateByVnfTypeNAction(SvcLogicContext ctx, String prefix, String fileCategory)
+                       throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       String key = "SELECT artifact_content file_content , asdc_artifacts_id config_file_id "
+                                       + " FROM ASDC_ARTIFACTS "
+                                       + " WHERE asdc_artifacts_id = (SELECT MAX(a.asdc_artifacts_id) configfileid  "
+                                       + " FROM ASDC_ARTIFACTS a, ASDC_REFERENCE b " + " WHERE a.artifact_name = b.artifact_name "
+                                       + " AND file_category =  '" + fileCategory + "'" + " AND action =  $request-action "
+                                       + " AND vnf_type =  $vnf-type ) ; ";
+
+                       status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx);
+               }
+               return status;
+       }
+
+       public QueryStatus getTemplateByVnfType(SvcLogicContext ctx, String prefix, String fileCategory)
+                       throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       String key = "SELECT artifact_content file_content , asdc_artifacts_id config_file_id "
+                                       + " FROM ASDC_ARTIFACTS "
+                                       + " WHERE asdc_artifacts_id = (SELECT MAX(a.asdc_artifacts_id) configfileid  "
+                                       + " FROM ASDC_ARTIFACTS a, ASDC_REFERENCE b " + " WHERE a.artifact_name = b.artifact_name "
+                                       + " AND file_category =  '" + fileCategory + "'" + " AND vnf_type =  $vnf-type ) ; ";
+
+                       status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx);
+               }
+               return status;
+       }
+
+       public QueryStatus getTemplateByTemplateName(SvcLogicContext ctx, String prefix, String templateName)
+                       throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       String key = "SELECT artifact_content file_content , asdc_artifacts_id config_file_id "
+                                       + " FROM ASDC_ARTIFACTS "
+                                       + " WHERE asdc_artifacts_id = (SELECT MAX(asdc_artifacts_id) configfileid  "
+                                       + " FROM ASDC_ARTIFACTS  " + " WHERE artifact_name = '" + templateName + "' ) ; ";
+
+                       status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx);
+               }
+               return status;
+       }
+
+       public QueryStatus getConfigureActionDGByVnfTypeNAction(SvcLogicContext ctx, String prefix)
+                       throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       String key = "SELECT * " + " FROM CONFIGURE_ACTION_DG "
+                                       + " where vnf_type = $vnf-type and action = $request-action ; ";
+
+                       status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx);
+               }
+               return status;
+       }
+
+       public QueryStatus getConfigureActionDGByVnfType(SvcLogicContext ctx, String prefix) throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       String key = "SELECT * " + " FROM CONFIGURE_ACTION_DG "
+                                       + " where vnf_type = $vnf-type and action IS NULL ; ";
+
+                       status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx);
+               }
+               return status;
+       }
+
+       public QueryStatus getMaxConfigFileId(SvcLogicContext ctx, String prefix, String fileCategory)
+                       throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       String key = "SELECT MAX(config_file_id) configfileid " + " FROM CONFIGFILES " + " WHERE file_category = '"
+                                       + fileCategory + "'" + " AND vnf_id =  $vnf-id  AND vm_name = $vm-name ; ";
+
+                       status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx);
+               }
+               return status;
+       }
+
+       public QueryStatus saveConfigFiles(SvcLogicContext ctx, String prefix) throws SvcLogicException {
+
+               QueryStatus status = null;
+
+               if (serviceLogic != null && ctx != null) {
+                       String key = "INSERT INTO CONFIGFILES " + " SET data_source        = $data-source , "
+                                       + " service_instance_id =  $service-instance-id ," + " action              =   $request-action ,"
+                                       + " vnf_type            =       $vnf-type ," + " vnfc_type           =  $vnfc-type ,"
+                                       + " vnf_id              =   $vnf-id , " + " vnf_name            =   $vnf-name ,"
+                                       + " vm_name            =   $vm-name ," + " file_category                =  $file-category ,"
+                                       + " file_content        =  $file-content ; ";
+
+                       status = serviceLogic.save("SQL", false, false, key, null, prefix, ctx);
+
+               }
+               return status;
+
+       }
+
+       public QueryStatus savePrepareRelationship(SvcLogicContext ctx, String prefix, String fileId, String asdcInd)
+                       throws SvcLogicException {
+
+               QueryStatus status = null;
+               String key = null;
+
+               if (serviceLogic != null && ctx != null) {
+
+                       if ("Y".equals(asdcInd))
+
+                               key = "INSERT INTO PREPARE_FILE_RELATIONSHIP " + " SET service_instance_id =  $service-instance-id , "
+                                               + "   request_id         = $request-id , " + "  asdc_artifacts_id        =  " + fileId + " ;";
+                       else
+                               key = "INSERT INTO PREPARE_FILE_RELATIONSHIP " + " SET service_instance_id =  $service-instance-id , "
+                                               + "   request_id         = $request-id , " + "  config_file_id        =  " + fileId + " ;";
+
+                       status = serviceLogic.save("SQL", false, false, key, null, prefix, ctx);
+
+                       log.info("DGGeneralDBService.savePrepareRelationship()" + ctx.getAttributeKeySet());
+               }
+               return status;
+
+       }
+
+       public void cleanContextPropertyByPrefix(SvcLogicContext ctx, String prefix) {
+               if (ctx != null && ctx.getAttributeKeySet() != null && StringUtils.isNotBlank(prefix)) {
+
+                       Set<String> keySet = ctx.getAttributeKeySet();
+                       for (String key : keySet) {
+                               if (StringUtils.isNotBlank(key) && key.startsWith(prefix = ".")) {
+                                       ctx.getAttributeKeySet().remove(key);
+                               }
+                       }
+               }
+       }
+
+       public QueryStatus saveUploadConfig(SvcLogicContext ctx, String prefix) throws SvcLogicException {
+
+               QueryStatus status = null;
+
+               if (serviceLogic != null && ctx != null) {
+                       String key = "INSERT INTO UPLOAD_CONFIG " + " SET request_id = $request-id , "
+                                       + " action = $request-action , " + " originator_id = $originator-id , " + " vnf_id =  $vnf-id , "
+                                       + " vnf_name = $vnf-name ,  " + " vm_name =  $vm-name ,  "
+                                       + " host_ip_address = $vnf-host-ip-address , " + " vnf_type            =        $vnf-type , "
+                                       + " vnfc_type           =       $vnfc-type , " + " config_indicator             =  'Current' , "
+                                       + " content        =  $tmp.escaped.devicerunningconfig ; ";
+
+                       status = serviceLogic.save("SQL", false, false, key, null, prefix, ctx);
+
+                       log.info("DGGeneralDBService.saveUploadConfig()" + ctx.getAttributeKeySet());
+
+               }
+               return status;
+
+       }
+
+       /*public QueryStatus getMaxUploadConfigFileId(SvcLogicContext ctx, String prefix) throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       String key = "SELECT MAX(upload_config_id) uploadconfigid " + " FROM UPLOAD_CONFIG "
+                                       + " WHERE vnf_id =  $vnf-id  AND vm_name = $vm-name ; ";
+
+                       status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx);
+                       log.info("DGGeneralDBService.getMaxUploadConfigFileId()" + ctx.getAttributeKeySet());
+               }
+               return status;
+       }*/
+
+       public QueryStatus updateUploadConfig(SvcLogicContext ctx, String prefix, int maxId) throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       String key = "UPDATE UPLOAD_CONFIG " + " SET  config_indicator          =  null "
+                                       + " WHERE upload_config_id != " + maxId + " AND config_indicator                =  'Current' "
+                                       + " AND vnf_id = $vnf-id " + " AND vm_name =  $vm-name ; ";
+
+                       status = serviceLogic.save("SQL", false, false, key, null, prefix, ctx);
+
+                       log.info("DGGeneralDBService.updateUploadConfig()" + ctx.getAttributeKeySet());
+
+               }
+               return status;
+
+       }
+
+       
+       public QueryStatus getTemplateByArtifactType(SvcLogicContext ctx, String prefix, String fileCategory, String artifactType)
+                       throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       String key = "SELECT artifact_content file_content , asdc_artifacts_id config_file_id "
+                                       + " FROM ASDC_ARTIFACTS "
+                                       + " WHERE asdc_artifacts_id = (SELECT MAX(a.asdc_artifacts_id) configfileid  "
+                                       + " FROM ASDC_ARTIFACTS a, ASDC_REFERENCE b " + " WHERE a.artifact_name = b.artifact_name "
+                                       + " AND file_category =  '" + fileCategory + "'" + " AND action =  $request-action "
+                                       + " AND artifactType =  '" + artifactType + "'" + " AND vnf_type =  $vnf-type ) ; ";
+
+                       status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx);
+               }
+               return status;
+       }
+       
+       
+       public QueryStatus getConfigFilesByVnfVmNCategory(SvcLogicContext ctx, String prefix, String fileCategory, String vnfId, String vmName)
+                       throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       
+                       String key = "SELECT  file_content ,  config_file_id "
+                                       + " FROM CONFIGFILES "
+                                       + " WHERE config_file_id = ( SELECT MAX(config_file_id) configfileid " + " FROM CONFIGFILES " 
+                                       + " WHERE file_category = '"    + fileCategory + "'" 
+                                       + " AND vnf_id =  '" + vnfId + "'" 
+                                       + " AND vm_name = '" + vmName + "' ) ; ";
+                       
+                       
+                       status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx);
+               }
+               return status;
+       }
+       
+       
+       public QueryStatus getDownloadConfigTemplateByVnf(SvcLogicContext ctx, String prefix)
+                       throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       String key = "SELECT * FROM DOWNLOAD_CONFIG_TEMPLATE  WHERE vnf_type = $vnf-type ; ";
+                       status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx);
+               }
+               return status;
+       }
+       
+       
+       
+       public QueryStatus saveConfigTransactionLog(SvcLogicContext ctx, String prefix) throws SvcLogicException {
+
+               QueryStatus status = null;
+
+               if (serviceLogic != null && ctx != null) {
+                               
+               
+                               String key = "INSERT INTO CONFIG_TRANSACTION_LOG " + " SET request_id = $request-id , "
+                               + " message_type = $log-message-type , "
+                               + " message = $log-message ;";
+
+
+                               status = serviceLogic.save("SQL", false, false, key, null, prefix, ctx);
+
+               
+
+               }
+               return status;
+
+       }
+
+       
+       public QueryStatus getVnfcReferenceByVnfcTypeNAction(SvcLogicContext ctx, String prefix)
+                       throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       
+                       String key = "SELECT  * "
+                                       + " FROM VNFC_REFERENCE "
+                                       + " WHERE vnf_type =  $vnf-type " 
+                                       + " AND vnfc_type = $vnfc-type "
+                                       + " AND action =  $request-action "
+                                       + " ORDER BY vm_instance, vnfc_instance ; ";
+                       
+                       
+                       status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx);
+               }
+               return status;
+       }
+
+       
+       public QueryStatus getVnfcReferenceByVnfTypeNAction(SvcLogicContext ctx, String prefix)
+                       throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       
+                       String key = "SELECT  * "
+                                       + " FROM VNFC_REFERENCE "
+                                       + " WHERE vnf_type =  $vnf-type " 
+                                       + " AND action =  $request-action   "
+                                       + " ORDER BY vm_instance, vnfc_instance ; ";
+                       
+                       status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx);
+               }
+               return status;
+       }
+       
+       
+       public QueryStatus getUploadConfigInfo(SvcLogicContext ctx, String prefix)
+                       throws SvcLogicException {
+               QueryStatus status = null;
+               if (serviceLogic != null && ctx != null) {
+                       
+                       String key = "SELECT  * , UNIX_TIMESTAMP(UPLOAD_DATE) UPLOAD_TIMESTAMP "
+                                       + " FROM UPLOAD_CONFIG "
+                                       + " WHERE upload_config_id = " + 
+                                       "( SELECT MAX(upload_config_id) uploadconfigid " + " FROM UPLOAD_CONFIG "
+                                       + " WHERE vnf_id =  $vnf-id  AND vm_name = $vm-name ) ; ";
+                               
+                       status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx);
+               }
+               return status;
+       }
+        public String getCapability(SvcLogicContext ctx, String vnf_type) throws SvcLogicException {
+
+         //{"capabilities":{"vnfc":[],"vm":[],"vf-module":[],"vnf":["ConfigureTest","ConfigModify","HealthCheck"]}}
+         String fn = "getCapability ";
+         QueryStatus status = null;
+         SvcLogicContext localContext = new SvcLogicContext();
+         localContext.setAttribute("vnf-type", vnf_type);
+         if (serviceLogic != null && localContext  != null) {
+                 String queryString = "select max(internal_version) as maxInternalVersion, artifact_name as artifactName from ASDC_ARTIFACTS " +
+                                  " where artifact_name in (select artifact_name from ASDC_REFERENCE  where vnf_type= $vnf-type "  +
+                             " and file_category = 'capability' )" ;
+
+                 log.info(fn + "Query String : " + queryString);
+                 status = serviceLogic.query("SQL", false, null, queryString, null, null, localContext);
+
+                 if(status.toString().equals("FAILURE"))
+                         throw new SvcLogicException("Error - while getting capabilitiesData ");
+
+                 String queryString1 = "select artifact_content from ASDC_ARTIFACTS  "  +
+                                 " where artifact_name = $artifactName  and internal_version = $maxInternalVersion ";
+
+                 log.debug(fn + "Query String : " + queryString1);
+                 status = serviceLogic.query("SQL", false, null, queryString1, null, null, localContext);
+                 if(status.toString().equals("FAILURE"))
+                         throw new SvcLogicException("Error - while getting capabilitiesData ");
+         }
+
+         return localContext.getAttribute("artifact-content");
+ }
+
+}
diff --git a/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/db/GeneralDataService.java b/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/db/GeneralDataService.java
new file mode 100644 (file)
index 0000000..1f920be
--- /dev/null
@@ -0,0 +1,80 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : 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.data.services.db;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.lang3.StringUtils;
+
+import org.openecomp.sdnc.sli.SvcLogicContext;
+import org.openecomp.sdnc.sli.SvcLogicException;
+import org.openecomp.sdnc.sli.SvcLogicResource;
+import org.openecomp.sdnc.sli.SvcLogicResource.QueryStatus;
+import org.openecomp.sdnc.sli.resource.sql.SqlResource;
+
+import org.openecomp.appc.data.services.AppcDataServiceConstant;
+import org.openecomp.appc.data.services.utils.EscapeUtils;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+
+public class GeneralDataService {
+
+       private static final EELFLogger log = EELFManager.getInstance().getLogger(GeneralDataService.class);
+       
+       public void saveTransactionLog(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException 
+       {
+               SvcLogicContext logger = new SvcLogicContext();
+               String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX);
+               String messageType = inParams.get(AppcDataServiceConstant.INPUT_PARAM_MESSAGE_TYPE);
+               String message = inParams.get(AppcDataServiceConstant.INPUT_PARAM_MESSAGE);
+               try 
+               {
+                       
+                       String escapedMessage = EscapeUtils.escapeSql(message);
+                       logger.setAttribute("request-id", ctx.getAttribute("request-id"));
+                       logger.setAttribute("log-message-type", messageType);
+                       logger.setAttribute("log-message", escapedMessage);
+
+                       responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
+                       DGGeneralDBService db = DGGeneralDBService.initialise();
+                       QueryStatus status = db.saveConfigTransactionLog( logger, responsePrefix);
+
+                       logger.setAttribute("log-message", null);
+                       logger.setAttribute("log-message-type", null);
+                       logger.setAttribute("request-id", null);
+
+                       if (status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to insert into config_transaction_log");
+
+
+               } 
+               catch (Exception e) 
+               {
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                       AppcDataServiceConstant.OUTPUT_STATUS_FAILURE);
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
+                       throw new SvcLogicException(e.getMessage());
+               }
+       }
+       
+}
diff --git a/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/node/ConfigResourceNode.java b/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/node/ConfigResourceNode.java
new file mode 100644 (file)
index 0000000..9424939
--- /dev/null
@@ -0,0 +1,757 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : 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.data.services.node;
+
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import org.openecomp.sdnc.sli.SvcLogicContext;
+import org.openecomp.sdnc.sli.SvcLogicException;
+import org.openecomp.sdnc.sli.SvcLogicJavaPlugin;
+
+import org.openecomp.appc.data.services.AppcDataServiceConstant;
+import org.openecomp.appc.data.services.db.DGGeneralDBService;
+import org.openecomp.appc.data.services.utils.EscapeUtils;
+
+import org.openecomp.sdnc.sli.SvcLogicResource.QueryStatus;
+
+public class ConfigResourceNode implements SvcLogicJavaPlugin {
+
+       private static final EELFLogger log = EELFManager.getInstance().getLogger(ConfigResourceNode.class);
+
+       public void getConfigFileReference(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+
+               log.info("Received getConfigFiles call with params : " + inParams);
+
+               String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX);
+
+               try {
+
+                       responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
+                       DGGeneralDBService db = DGGeneralDBService.initialise();
+                       QueryStatus status = db.getConfigFileReferenceByFileTypeNVnfType(ctx, "configfilereference-deviceconfig",
+                                       "device_configuration");
+
+                       if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to Read ConfigFileReference:device-configuration");
+
+                       status = db.getConfigFileReferenceByFileTypeNVnfType(ctx, "configfilereference-success",
+                                       "configuration_success");
+
+                       if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to Read ConfigFileReference:configuration_success");
+
+                       status = db.getConfigFileReferenceByFileTypeNVnfType(ctx, "configfilereference-failure",
+                                       "configuration_error");
+
+                       if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to Read ConfigFileReference:configuration_error");
+
+                       status = db.getConfigFileReferenceByFileTypeNVnfType(ctx, "configfilereference-log", "log");
+
+                       if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to Read ConfigFileReference:configuration_log");
+
+
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS);
+                       log.info("GetConfigFileReference Successful ");
+               } catch (Exception e) {
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_FAILURE);
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
+                       log.error("Failed in GetConfigFileReference " + e.getMessage());
+
+                       throw new SvcLogicException(e.getMessage());
+               }
+       }
+
+       public void getCommonConfigInfo(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+
+               log.info("Received getDeviceInfo call with params : " + inParams);
+
+               String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX);
+
+               try {
+
+                       responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
+                       DGGeneralDBService db = DGGeneralDBService.initialise();
+                       QueryStatus status = db.getDeviceAuthenticationByVnfType(ctx, "device-authentication");
+
+                       if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to Read device_authentication");
+
+                       status = db.getDeviceProtocolByVnfType(ctx, "tmp.deviceinterfaceprotocol");
+
+                       if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to Read device_interface_protocol");
+
+                       status = db.getConfigureActionDGByVnfTypeNAction(ctx, "tmp.configureactiondg");
+                       if (status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to Read configure_action_dg");
+
+                       if (status == QueryStatus.NOT_FOUND) {
+                               status = db.getConfigureActionDGByVnfType(ctx, "tmp.configureactiondg");
+
+                               if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE)
+                                       throw new Exception("Unable to Read configure_action_dg");
+                       }
+
+
+
+
+
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS);
+                       log.info("getCommonConfigInfo Successful ");
+               } catch (Exception e) {
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_FAILURE);
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
+                       log.error("Failed in getCommonConfigInfo " + e.getMessage());
+
+                       throw new SvcLogicException(e.getMessage());
+               }
+       }
+
+
+       // fileCategory Can be  config_template, parameter_definitions, parameter_yang
+       public void getTemplate(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+
+               log.info("Received getTemplate call with params : " + inParams);
+
+
+               String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX);
+               String fileCategory = inParams.get(AppcDataServiceConstant.INPUT_PARAM_FILE_CATEGORY);
+               String templateName = ctx.getAttribute("template-name");
+               QueryStatus status = null;
+               String responsePrefix1 = "";
+
+               try {
+
+                       responsePrefix1 = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
+                       log.info("RESPONSEPREFIX : " + responsePrefix);
+                       log.info("RESPONSEPREFIX1 : " + responsePrefix1);
+
+                       DGGeneralDBService db = DGGeneralDBService.initialise();
+
+                       if (StringUtils.isBlank(templateName)) {
+
+                               //if ( !StringUtils.isBlank(ctx.getAttribute("vnfc-type"))) {
+
+
+                               status = db.getTemplate(ctx, responsePrefix, fileCategory);
+                               if (status == QueryStatus.FAILURE)
+                                       throw new Exception("Unable to Read " + fileCategory );
+                               //}
+
+                               if (status == QueryStatus.NOT_FOUND) {
+
+
+                                       status = db.getTemplateByVnfTypeNAction(ctx, responsePrefix, fileCategory);
+
+                                       if (status == QueryStatus.FAILURE)
+                                               throw new Exception("Unable to Read " + fileCategory );
+
+                                       if (status == QueryStatus.NOT_FOUND) {
+
+                                               status = db.getTemplateByVnfType(ctx, responsePrefix, fileCategory);
+
+                                               if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE)
+                                                       throw new Exception("Unable to Read " + fileCategory );
+                                       }
+                               }
+                       } else {
+
+                               status = db.getTemplateByTemplateName(ctx, responsePrefix, templateName);
+
+                               if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE)
+                                       throw new Exception("Unable to Read " + fileCategory + " template");
+                       }
+
+
+                       ctx.setAttribute(responsePrefix1 + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS);
+                       log.info("GetTemplate Successful ");
+               } catch (Exception e) {
+                       ctx.setAttribute(responsePrefix1 + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_FAILURE);
+                       ctx.setAttribute(responsePrefix1 + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
+                       log.error("Failed in getTemplate " + e.getMessage());
+
+                       throw new SvcLogicException(e.getMessage());
+               }
+       }
+
+       public void saveConfigFiles(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+
+               log.info("Received saveConfigFiles call with params : " + inParams);
+
+               String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX);
+
+               try {
+
+                       responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
+                       DGGeneralDBService db = DGGeneralDBService.initialise();
+                       QueryStatus status = db.saveConfigFiles(ctx, "tmp.configFiles");
+
+                       if (status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to Save " + ctx.getAttribute("file-category") + " in configfiles");
+
+                       status = db.getMaxConfigFileId(ctx, "tmp.configfilesmax", ctx.getAttribute("file-category"));
+
+                       if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to get " + ctx.getAttribute("file-category") + " from configfiles");
+
+                       status = db.savePrepareRelationship(ctx, "tmp.preparerel",
+                                       ctx.getAttribute("tmp.configfilesmax.configfileid"), "N");
+                       if (status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to save prepare_relationship");
+
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS);
+                       log.info("saveConfigFiles Successful ");
+               } catch (Exception e) {
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_FAILURE);
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
+                       log.error("Failed in saveConfigFiles " + e.getMessage());
+
+                       throw new SvcLogicException(e.getMessage());
+               }
+       }
+
+       public void updateUploadConfig(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+
+               log.info("Received updateUploadConfig call with params : " + inParams);
+
+               String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX);
+
+               try {
+
+                       responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
+                       DGGeneralDBService db = DGGeneralDBService.initialise();
+
+                       ctx.setAttribute("tmp.escaped.devicerunningconfig",
+                                       EscapeUtils.escapeSql(ctx.getAttribute("device-running-config")));
+
+                       QueryStatus status = db.saveUploadConfig(ctx, "tmp.uploadConfig");
+
+                       if (status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to Save configuration in upload_config");
+
+                       /*status = db.getMaxUploadConfigFileId(ctx, "tmp.uploadconfigmax");
+
+                       if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to get record from upload_config");
+
+                       status = db.updateUploadConfig(ctx, "tmp.uploadConfig",
+                                       Integer.parseInt(ctx.getAttribute("tmp.uploadconfigmax.uploadconfigid")));
+                       if (status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to upload upload_config");*/
+
+                       status = db.getUploadConfigInfo(ctx, "tmp.uploadConfigInfo");
+
+                       if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to get record from upload_config");
+
+                       status = db.updateUploadConfig(ctx, "tmp.uploadConfig",
+                                       Integer.parseInt(ctx.getAttribute("tmp.uploadConfigInfo.UPLOAD-CONFIG-ID")));
+                       if (status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to upload upload_config");
+
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS);
+                       log.info("updateUploadConfig Successful ");
+               } catch (Exception e) {
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_FAILURE);
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
+                       log.error("Failed in updateUploadConfig  " + e.getMessage());
+
+                       throw new SvcLogicException(e.getMessage());
+               }
+       }
+
+       public void savePrepareRelationship(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+
+               log.info("Received savePrepareRelationship call with params : " + inParams);
+
+               String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX);
+               String asdcArtifactInd = inParams.get(AppcDataServiceConstant.INPUT_PARAM_ASDC_ARTIFACT_IND);
+               String fileId = inParams.get(AppcDataServiceConstant.INPUT_PARAM_FILE_ID);
+               try {
+
+                       responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
+                       DGGeneralDBService db = DGGeneralDBService.initialise();
+
+                       QueryStatus status = db.savePrepareRelationship(ctx, "tmp.preparerel", fileId, asdcArtifactInd);
+                       if (status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to save prepare_relationship");
+
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS);
+                       log.info("savePrepareRelationship Successful ");
+               } catch (Exception e) {
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_FAILURE);
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
+                       log.error("Failed in saveConfigFiles " + e.getMessage());
+
+                       throw new SvcLogicException(e.getMessage());
+               }
+       }
+
+       public void saveConfigBlock(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+
+               log.info("Received saveConfigBlock call with params : " + inParams);
+
+               String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX);
+
+               try {
+
+                       responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
+                       ctx.setAttribute("tmp.convertconfig.escapeData",
+                                       EscapeUtils.escapeSql(ctx.getAttribute("configuration")));
+                       DGGeneralDBService db = DGGeneralDBService.initialise();
+
+                       if (StringUtils.isBlank(ctx.getAttribute("configuration-params"))) {
+                               saveDeviceConfiguration(inParams, ctx, "Request", ctx.getAttribute("tmp.convertconfig.escapeData"),
+                                               ctx.getAttribute("configuration"));
+                       } else {
+
+                               saveConfigurationBlock(inParams, ctx);
+
+                               ctx.setAttribute("tmp.convertconfig.escapeData",
+                                               EscapeUtils.escapeSql(ctx.getAttribute("tmp.merge.mergedData")));
+                               saveDeviceConfiguration(inParams, ctx, "Configurator", ctx.getAttribute("tmp.convertconfig.escapeData"),
+                                               ctx.getAttribute("tmp.merge.mergedData"));
+
+                               saveConfigurationData(inParams, ctx);
+                       }
+
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS);
+                       log.info("saveConfigBlock Successful ");
+               } catch (Exception e) {
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_FAILURE);
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
+                       log.error("Failed in saveConfigBlock " + e.getMessage());
+
+                       throw new SvcLogicException(e.getMessage());
+               }
+       }
+
+       public void saveTemplateConfig(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+
+               log.info("Received saveTemplateConfig call with params : " + inParams);
+
+               String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX);
+
+               try {
+
+                       responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
+                       DGGeneralDBService db = DGGeneralDBService.initialise();
+
+                       if (StringUtils.isBlank(ctx.getAttribute("configuration-params"))) {
+
+                               ctx.setAttribute("tmp.convertconfig.escapeData",
+                                               EscapeUtils.escapeSql(ctx.getAttribute("config-template.file-content")));
+                               saveDeviceConfiguration(inParams, ctx, "Template", ctx.getAttribute("tmp.convertconfig.escapeData"),
+                                               ctx.getAttribute("config-template.file-content"));
+
+                       } else {
+                               saveConfigurationData(inParams, ctx);
+
+                               ctx.setAttribute("tmp.convertconfig.escapeData",
+                                               EscapeUtils.escapeSql(ctx.getAttribute("tmp.merge.mergedData")));
+                               saveDeviceConfiguration(inParams, ctx, "Configurator", ctx.getAttribute("tmp.convertconfig.escapeData"),
+                                               ctx.getAttribute("tmp.merge.mergedData"));
+
+                       }
+
+                       QueryStatus status = db.savePrepareRelationship(ctx, "tmp.preparerel",
+                                       ctx.getAttribute("config-template.config-file-id"), "Y");
+                       if (status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to save prepare_relationship");
+
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS);
+                       log.info("saveTemplateConfig Successful ");
+               } catch (Exception e) {
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_FAILURE);
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
+                       log.error("Failed in saveTemplateConfig " + e.getMessage());
+
+                       throw new SvcLogicException(e.getMessage());
+               }
+       }
+
+
+
+
+       public void saveStyleSheetConfig(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+
+
+               log.info("Received saveStyleSheet call with params : " + inParams);
+
+               String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX);
+
+               try {
+
+                       responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
+                       ctx.setAttribute("tmp.convertconfig.escapeData",
+                                       EscapeUtils.escapeSql(ctx.getAttribute("tmp.merge.mergedData")));
+                       saveDeviceConfiguration(inParams, ctx, "StyleSheet", ctx.getAttribute("tmp.convertconfig.escapeData"),
+                                       ctx.getAttribute("tmp.merge.mergedData"));
+
+
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS);
+                       log.info("saveStyleSheet Successful ");
+               } catch (Exception e) {
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, AppcDataServiceConstant.OUTPUT_STATUS_FAILURE);
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE,e.getMessage());
+                       log.error("Failed in saveStyleSheet " + e.getMessage());
+
+                       throw new SvcLogicException(e.getMessage());
+               }
+       }
+
+
+       public void getSmmChainKeyFiles(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+
+
+               log.info("Received saveStyleSheet call with params : " + inParams);
+
+               String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX);
+               String siteLocation = ctx.getAttribute("site-location");
+
+               QueryStatus status = null;
+
+               try{
+
+
+                       responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
+                       DGGeneralDBService db = DGGeneralDBService.initialise();
+
+
+
+                       status = db.getTemplateByArtifactType(ctx,  "smm", "smm", siteLocation);
+
+                       if ( status == QueryStatus.FAILURE )
+                               throw new Exception("Unable to Read smm file");
+
+
+                       status = db.getTemplateByArtifactType(ctx,  "intermediate-ca-chain", "intermediate_ca_chain", siteLocation);
+
+                       if ( status == QueryStatus.FAILURE )
+                               throw new Exception("Unable to Read intermediate_ca_chain file");
+
+
+
+
+                       status = db.getTemplateByArtifactType(ctx,  "server-certificate-and-key", "server_certificate_and_key", siteLocation);
+
+                       if ( status == QueryStatus.FAILURE )
+                               throw new Exception("Unable to Read server_certificate_and_key file");
+
+
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS);
+                       log.info("saveStyleSheet Successful ");
+               } catch (Exception e) {
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, AppcDataServiceConstant.OUTPUT_STATUS_FAILURE);
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE,e.getMessage());
+                       log.error("Failed in saveStyleSheet " + e.getMessage());
+
+                       throw new SvcLogicException(e.getMessage());
+               }
+       }
+
+
+       public void saveDeviceConfiguration(Map<String, String> inParams, SvcLogicContext ctx, String dataSource,
+                       String fileContent, String deviceConfig) throws SvcLogicException {
+               ctx.setAttribute("data-source", dataSource);
+               ctx.setAttribute("file-content", fileContent);
+               ctx.setAttribute("file-category", "device_configuration");
+               ctx.setAttribute("deviceconfig-file-content", deviceConfig);
+
+               saveConfigFiles(inParams, ctx);
+       }
+
+       public void saveConfigurationBlock(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+               ctx.setAttribute("data-source", "Request");
+               ctx.setAttribute("file-content", ctx.getAttribute("tmp.convertconfig.escapeData"));
+               ctx.setAttribute("file-category", "configuration_block");
+               saveConfigFiles(inParams, ctx);
+       }
+
+       public void saveConfigurationData(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+               ctx.setAttribute("data-source", ctx.getAttribute("originator-id"));
+               ctx.setAttribute("file-content", ctx.getAttribute("configuration-params"));
+               ctx.setAttribute("file-category", "config_data");
+               saveConfigFiles(inParams, ctx);
+       }
+
+
+       public void getConfigFilesByVnfVmNCategory(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+
+               log.info("Received getConfigFilesByVnfVmNCategory call with params : " + inParams);
+
+               String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX);
+               String fileCategory = inParams.get(AppcDataServiceConstant.INPUT_PARAM_FILE_CATEGORY);
+               String vnfId = inParams.get(AppcDataServiceConstant.INPUT_PARAM_VNF_ID);
+               String vmName = inParams.get(AppcDataServiceConstant.INPUT_PARAM_VM_NAME);
+               try {
+
+
+                       DGGeneralDBService db = DGGeneralDBService.initialise();
+
+                       QueryStatus status = db.getConfigFilesByVnfVmNCategory(ctx, responsePrefix, fileCategory, vnfId, vmName);
+
+                       if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to get " + ctx.getAttribute("fileCategory") + " from configfiles");
+
+
+                       responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS);
+                       log.info("getConfigFilesByVnfVmNCategory Successful " + ctx.getAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS));
+               } catch (Exception e) {
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_FAILURE);
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
+                       log.error("Failed in getConfigFilesByVnfVmNCategory " + e.getMessage());
+
+                       throw new SvcLogicException(e.getMessage());
+               }
+       }
+
+
+       public void getDownloadConfigTemplateByVnf(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+
+               log.info("Received getDownloadConfigTemplateByVnfNProtocol call with params : " + inParams);
+
+               String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX);
+               try {
+                       DGGeneralDBService db = DGGeneralDBService.initialise();
+
+                       QueryStatus status = db.getDownloadConfigTemplateByVnf(ctx, responsePrefix);
+
+                       if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to get download config template.");
+
+
+                       responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,  AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS);
+                       log.info("getDownloadConfigTemplateByVnf Successful " + ctx.getAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS));
+               } catch (Exception e) {
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_FAILURE);
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
+                       log.error("Failed in getDownloadConfigTemplateByVnf " + e.getMessage());
+
+                       throw new SvcLogicException(e.getMessage());
+               }
+       }
+
+
+       public void saveConfigTransactionLog(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+
+
+
+               String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX);
+
+               String messageType = inParams.get(AppcDataServiceConstant.INPUT_PARAM_MESSAGE_TYPE);
+               String message = inParams.get(AppcDataServiceConstant.INPUT_PARAM_MESSAGE);
+
+               try {
+
+                       SvcLogicContext logctx = new SvcLogicContext();
+
+                       String escapedMessage = EscapeUtils.escapeSql(message);
+
+
+                       logctx.setAttribute("request-id", ctx.getAttribute("request-id"));
+                       logctx.setAttribute("log-message-type", messageType);
+                       logctx.setAttribute("log-message", escapedMessage);
+
+
+                       responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
+                       DGGeneralDBService db = DGGeneralDBService.initialise();
+                       QueryStatus status = db.saveConfigTransactionLog( logctx, responsePrefix);
+
+                       logctx.setAttribute("log-message", null);
+
+                       if (status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to insert into config_transaction_log");
+
+
+               } catch (Exception e) {
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_FAILURE);
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
+
+
+                       throw new SvcLogicException(e.getMessage());
+               }
+       }
+
+
+
+       public void getVnfcReference(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+
+               log.info("Received getVnfcReference call with params : " + inParams);
+
+               String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX);
+
+
+               QueryStatus status = null;
+
+               try {
+
+
+                       DGGeneralDBService db = DGGeneralDBService.initialise();
+
+                       if ( !StringUtils.isBlank(ctx.getAttribute("vnfc-type"))) {
+                               status = db.getVnfcReferenceByVnfcTypeNAction(ctx, responsePrefix);
+
+                               if ( status == QueryStatus.FAILURE)
+                                       throw new Exception("Unable to Read vnfc-reference");
+                       }
+                       //else if (status == QueryStatus.NOT_FOUND ) {
+                       status = db.getVnfcReferenceByVnfTypeNAction(ctx, responsePrefix);
+
+                       if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE)
+                               throw new Exception("Unable to Read vnfc reference");
+
+                       //}
+
+                       responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS);
+                       log.info("getVnfcReference Successful ");
+               } catch (Exception e) {
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_FAILURE);
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
+                       log.error("Failed in getVnfcReference " + e.getMessage());
+
+                       throw new SvcLogicException(e.getMessage());
+               }
+       }
+
+       public void getCapability(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+               log.info("Received getCapability call with params : " + inParams);
+               String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX);
+               responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
+               String caplevel = inParams.get("caplevel");
+               String findCapability = inParams.get("checkCapability");
+
+               try {                   
+                       DGGeneralDBService db = DGGeneralDBService.initialise();                        
+                       String cap = db.getCapability(ctx, inParams.get("vnf-type"));
+                       ObjectMapper mapper = new ObjectMapper();
+                       JsonNode caps = mapper.readTree(cap);
+                       log.info("From DB =   " + caps);
+                       JsonNode capabilities = caps.get("capabilities");
+                       log.info("capabilities =   " + capabilities);
+                       if(caplevel !=null && !caplevel.isEmpty()){
+                               JsonNode subCapabilities = capabilities.get(caplevel);
+                               log.info("subCapabilities =  " +  caplevel + " : " + subCapabilities);
+                               if(findCapability !=null && !findCapability.isEmpty()){
+                                       if(subCapabilities != null && subCapabilities.toString().contains(findCapability))
+                                               ctx.setAttribute(responsePrefix + "capabilities." + caplevel + "." +  findCapability,
+                                                               "Supported");
+                                       else
+                                               ctx.setAttribute(responsePrefix + "capabilities." + caplevel + "." +  findCapability,
+                                                               "Not-Supported");
+                               }
+                               else
+                               {
+                                       ctx.setAttribute(responsePrefix + "capabilities." + caplevel,
+                                                       subCapabilities.toString());
+                               }
+                       
+                       }
+                       else
+                               ctx.setAttribute(responsePrefix + "capabilities",
+                                               capabilities.toString());
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS);
+                       log.info("getCapability Successful ");
+               } catch (Exception e) {
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_FAILURE);
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
+                       log.error("Failed in getCapability " + e.getMessage());
+
+                       throw new SvcLogicException(e.getMessage());
+               }
+       }
+
+
+       /*public void getUploadConfigInfo(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+
+               log.info("Received getUploadConfigInfo call with params : " + inParams);
+
+               String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX);
+
+               String uploadConfigId = inParams.get(AppcDataServiceConstant.INPUT_PARAM_UPLOAD_CONFIG_ID);
+               QueryStatus status = null;
+
+               int id = 0;
+               try {
+
+
+                       DGGeneralDBService db = DGGeneralDBService.initialise();
+
+                       if ( uploadConfigId != null )
+                               id = Integer.parseInt(uploadConfigId);
+
+                       status = db.getUploadConfigInfo(ctx, responsePrefix,id);
+
+                       if ( status == QueryStatus.FAILURE || status == QueryStatus.NOT_FOUND)
+                               throw new Exception("Unable to Read upload-config");
+
+
+                       responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : "";
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS);
+                       log.info("getUploadConfigInfo Successful ");
+               } catch (Exception e) {
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS,
+                                       AppcDataServiceConstant.OUTPUT_STATUS_FAILURE);
+                       ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
+                       log.error("Failed in getUploadConfigInfo " + e.getMessage());
+
+                       throw new SvcLogicException(e.getMessage());
+               }
+       }
+        */
+
+}
diff --git a/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/utils/EscapeUtils.java b/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/utils/EscapeUtils.java
new file mode 100644 (file)
index 0000000..b8daeeb
--- /dev/null
@@ -0,0 +1,39 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : 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.data.services.utils;
+
+import org.apache.commons.lang3.StringUtils;
+
+public class EscapeUtils {
+
+       public EscapeUtils() {
+               // TODO Auto-generated constructor stub
+       }
+
+       public static String escapeSql(String str) {
+               if (str == null) {
+                       return null;
+               }
+               String searchList[] = new String[]{"'","\\"};
+               String replacementList[] = new String[]{ "''","\\\\"};
+               return StringUtils.replaceEach(str,searchList, replacementList);
+       }
+}
diff --git a/appc-config/appc-data-services/provider/src/test/java/org/openecomp/appc/data/services/db/TestDGGeneralDBService.java b/appc-config/appc-data-services/provider/src/test/java/org/openecomp/appc/data/services/db/TestDGGeneralDBService.java
new file mode 100644 (file)
index 0000000..386b9f9
--- /dev/null
@@ -0,0 +1,29 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : 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=========================================================
+ */
+
+
+import org.junit.Test;
+//Model JUNIT Class
+public class TestDGGeneralDBService {
+
+
+
+
+}
diff --git a/appc-config/appc-data-services/provider/src/test/java/org/openecomp/appc/data/services/db/TestSQLSaveQuery.java b/appc-config/appc-data-services/provider/src/test/java/org/openecomp/appc/data/services/db/TestSQLSaveQuery.java
new file mode 100644 (file)
index 0000000..9959349
--- /dev/null
@@ -0,0 +1,178 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : 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.data.services.db;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.lang.StringUtils;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.openecomp.sdnc.sli.SvcLogicContext;
+
+public class TestSQLSaveQuery {
+
+
+       private static final Logger LOG = LoggerFactory.getLogger(TestSQLSaveQuery.class);
+
+       private static String CRYPT_KEY = "";
+
+       //@Test
+       public void testSQLSaveQuery() {
+
+               try {
+                       String message = FileUtils.readFileToString(new File("src/test/resources/query/sampledata.txt"));
+                       System.out.println("TestSQLSaveQuery.testSQLSaveQuery()" + message);
+
+                       SvcLogicContext ctx = new SvcLogicContext();
+                       ctx.setAttribute("request-id", "1234");
+
+                       String escapedMessage = StringEscapeUtils.escapeSql(message);
+                       ctx.setAttribute("log_message", escapedMessage);
+
+                       //String key = "INSERT INTO CONFIG_TRANSACTION_LOG " + " SET request_id = $request-id , message_type        =  'request' ,  message        =  '" + escapedMessage + "' ;";
+                       String key = "INSERT INTO CONFIG_TRANSACTION_LOG " + " SET request_id = $request-id , message_type  =  'request' ,  message        =  $log_message ;";
+                       System.out.println("Query : " + key);
+                       String resolvedContext = resolveCtxVars(key, ctx);
+
+                       System.out.println("Resolved : " + resolvedContext);
+
+                       ctx.setAttribute("log_message", null);
+
+
+               } catch (IOException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+
+
+       }
+
+
+       private String resolveCtxVars(String key,
+                       SvcLogicContext ctx) {
+               if (key == null) {
+                       return (null);
+               }
+
+               if (key.startsWith("'") && key.endsWith("'")) {
+                       key = key.substring(1, key.length() - 1);
+
+                       LOG.debug("Stripped outer single quotes - key is now [" + key + "]");
+               }
+
+               String[] keyTerms = key.split("\\s+");
+
+               StringBuffer sqlBuffer = new StringBuffer();
+
+
+               for (int i = 0; i < keyTerms.length; i++) {
+                       sqlBuffer.append(resolveTerm(keyTerms[i], ctx));
+                       sqlBuffer.append(" ");
+               }
+
+
+               return (sqlBuffer.toString());
+       }
+
+
+       private String resolveTerm(String term, SvcLogicContext ctx) {
+               if (term == null) {
+                       return (null);
+               }
+
+               LOG.debug("resolveTerm: term is " + term);
+
+               if (term.startsWith("$") && (ctx != null)) {
+                       // Resolve any index variables.
+                       /*
+                       String value = term;
+                       String resolved = resolveCtxVariable(term.substring(1), ctx);
+                       if(resolved != null){
+                               value = "'" +resolved+ "'";
+                       }
+                       System.out.println("Dollar Term : " + term + " Value :"+ value);
+                       return value;
+*/
+                       return ("'" + resolveCtxVariable(term.substring(1), ctx) + "'");
+
+               } else  {
+                       return (term);
+               }
+
+       }
+
+       private String resolveCtxVariable(String ctxVarName, SvcLogicContext ctx) {
+
+               if (ctxVarName.indexOf('[') == -1) {
+                       // Ctx variable contains no arrays
+                       if ("CRYPT_KEY".equals(ctxVarName)) {
+
+                               // Handle crypt key as special case. If it's set as a context variable, use it.  Otherwise, use
+                               // configured crypt key.
+                               String cryptKey = ctx.getAttribute(ctxVarName);
+                               if ((cryptKey != null) && (cryptKey.length() > 0)) {
+                                       return(cryptKey);
+                               } else {
+                                       return(CRYPT_KEY);
+                               }
+
+                       }
+                       return (ctx.getAttribute(ctxVarName));
+               }
+
+               // Resolve any array references
+               StringBuffer sbuff = new StringBuffer();
+               String[] ctxVarParts = ctxVarName.split("\\[");
+               sbuff.append(ctxVarParts[0]);
+               for (int i = 1; i < ctxVarParts.length; i++) {
+                       if (ctxVarParts[i].startsWith("$")) {
+                               int endBracketLoc = ctxVarParts[i].indexOf("]");
+                               if (endBracketLoc == -1) {
+                                       // Missing end bracket ... give up parsing
+                                       LOG.warn("Variable reference " + ctxVarName
+                                                       + " seems to be missing a ']'");
+                                       return (ctx.getAttribute(ctxVarName));
+                               }
+
+                               String idxVarName = ctxVarParts[i].substring(1, endBracketLoc);
+                               String remainder = ctxVarParts[i].substring(endBracketLoc);
+
+                               sbuff.append("[");
+                               sbuff.append(ctx.getAttribute(idxVarName));
+                               sbuff.append(remainder);
+
+                       } else {
+                               // Index is not a variable reference
+                               sbuff.append("[");
+                               sbuff.append(ctxVarParts[i]);
+                       }
+               }
+
+               return (ctx.getAttribute(sbuff.toString()));
+       }
+
+
+}
diff --git a/appc-config/appc-data-services/provider/src/test/resources/query/message3.txt b/appc-config/appc-data-services/provider/src/test/resources/query/message3.txt
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/appc-config/appc-data-services/provider/src/test/resources/query/sampledata.txt b/appc-config/appc-data-services/provider/src/test/resources/query/sampledata.txt
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/appc-config/appc-data-services/provider/src/test/resources/svclogic.properties b/appc-config/appc-data-services/provider/src/test/resources/svclogic.properties
new file mode 100644 (file)
index 0000000..0286730
--- /dev/null
@@ -0,0 +1,33 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP : 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=========================================================
+###
+=
+org.openecomp.sdnc.sli.dbtype=
+org.openecomp.sdnc.sli.jdbc.hosts=
+org.openecomp.sdnc.sli.jdbc.url=
+org.openecomp.sdnc.sli.jdbc.database=
+org.openecomp.sdnc.sli.jdbc.user=
+org.openecomp.sdnc.sli.jdbc.password=
+org.openecomp.sdnc.sli.jdbc.connection.name=
+
+org.openecomp.sdnc.sli.jdbc.connection.timeout=
+org.openecomp.sdnc.sli.jdbc.request.timeout=
+org.openecomp.sdnc.sli.jdbc.limit.init=
+org.openecomp.sdnc.sli.jdbc.limit.min=
+org.openecomp.sdnc.sli.jdbc.limit.max=
index 14c844d..3aa0513 100644 (file)
@@ -90,6 +90,7 @@
        <modules>
                <module>appc-config-params</module>
                 <module>appc-encryption-tool</module>
+                <module>appc-data-services</module>
        </modules>
 
 </project>
diff --git a/pom.xml b/pom.xml
index c1209f4..38f37c1 100644 (file)
--- a/pom.xml
+++ b/pom.xml
                     </dependency>
                 </dependencies>
             </plugin>
-            <!-- license plugin -->
+                      <!-- license plugin -->
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>license-maven-plugin</artifactId>