aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVishal Varvate <VV00489503@TechMahindra.com>2018-03-20 15:35:48 +0530
committervvarvate <vv00489503@techmahindra.com>2018-03-21 22:39:50 +0530
commit8d3e732c7592327398c1df491880e9b7ba8ccc73 (patch)
tree1bfb088edc7b4414ccfc0d008740cc0219146fc8
parent7025b737e3a187326951d82fcf76e33274505e3b (diff)
SDNC-253 Historical Report Part I UI Update
sdnc_reports_api Provides GUI for viewing historical reports, . Issue-ID: SDNC-253 Change-Id: Ia55adc2bd730b747896cba4dd628140d2e5a3155 Signed-off-by: vvarvate <vv00489503@techmahindra.com>
-rw-r--r--.project17
-rw-r--r--.settings/org.eclipse.core.resources.prefs2
-rw-r--r--.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--desktop.ini4
-rw-r--r--pom.xml20
-rw-r--r--sdnc_report_api_sdnc_253_story/.project17
-rw-r--r--sdnc_report_api_sdnc_253_story/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--sdnc_report_api_sdnc_253_story/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--sdnc_report_api_sdnc_253_story/README.md1
-rw-r--r--sdnc_report_api_sdnc_253_story/pom.xml19
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/.classpath36
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/.project35
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/.settings/org.eclipse.core.resources.prefs6
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/.settings/org.eclipse.wst.common.project.facet.core.xml4
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/logs/sdnc_report_api.log0
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/pom.xml163
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/Application.java48
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/ServletInitializer.java34
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/config/JpaApplicationConfig.java61
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/controller/ReportController.java104
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/controller/WebController.java36
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/service/IReportService.java47
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/service/ReportServiceImpl.java115
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/application.properties51
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/log4j2.xml38
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/form-validationTest.html141
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/form-viewReport.html140
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/FailImage.pngbin0 -> 2950 bytes
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/download.pngbin0 -> 1066 bytes
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/downloadImage.pngbin0 -> 3524 bytes
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/error.pngbin0 -> 5610 bytes
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/fail.pngbin0 -> 1850 bytes
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/images.pngbin0 -> 3716 bytes
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/networklayer.pngbin0 -> 4580 bytes
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/protocaol.pngbin0 -> 2625 bytes
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/protocol.pngbin0 -> 10646 bytes
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/reachable.pngbin0 -> 1219 bytes
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/router.jpgbin0 -> 3142 bytes
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/router.pngbin0 -> 5693 bytes
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/search.pngbin0 -> 3284 bytes
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/success.pngbin0 -> 4416 bytes
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/validation.pngbin0 -> 5110 bytes
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/waning.pngbin0 -> 6481 bytes
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getAllDevices.json17
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getAllReports.json75
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getAllTest.json17
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getAllVNF.json29
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getTestResult.json42
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/style/sdnc-style.css216
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/style/w3.css231
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/WEB-INF/views/index.jsp69
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/app.js47
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/sdnc-controller/sdnc-validationTest-controller.js243
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/sdnc-controller/sdnc-viewreport-controller.js171
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/sdnc-services/sdnc-validationTest-service.js78
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/sdnc-services/sdnc-viewReport-service.js78
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/package.json32
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/test/java/com/onap/sdnc/reports/controller/ReportControllerTest.java107
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/test/java/com/onap/sdnc/reports/repository/PreTestConfigRepositoryTest.java145
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/test/java/com/onap/sdnc/reports/service/ReportServiceImplTest.java204
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/test/resources/application.properties56
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.classpath91
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.project27
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.settings/org.eclipse.core.resources.prefs6
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.settings/org.eclipse.wst.common.project.facet.core.xml4
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/pom.xml66
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/DeviceConfig.java109
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/PreTestConfig.java127
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/ProtocolConfig.java198
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/Report.java94
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/Response.java50
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/RouterConfigDetails.java281
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/repository/DeviceRepository.java31
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/repository/PreTestConfigRepository.java34
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/rest/model/ConfigDetailsRestModel.java73
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/rest/model/JSONTags.java56
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/rest/model/PreTestModel.java116
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/rest/model/ProtocolModel.java207
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/resources/application.properties29
-rw-r--r--sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/test/resources/application.properties56
84 files changed, 4694 insertions, 1 deletions
diff --git a/.project b/.project
new file mode 100644
index 0000000..9d8b615
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>sdnc-features</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/desktop.ini b/desktop.ini
new file mode 100644
index 0000000..d957fd1
--- /dev/null
+++ b/desktop.ini
@@ -0,0 +1,4 @@
+[ViewState]
+Mode=
+Vid=
+FolderType=Generic
diff --git a/pom.xml b/pom.xml
index 97ea1a5..738714d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,12 +8,30 @@
<version>1.0.1-SNAPSHOT</version>
<relativePath />
</parent>
-
+
<groupId>org.onap.sdnc.features</groupId>
<artifactId>sdnc-features</artifactId>
<version>1.3.1-SNAPSHOT</version>
<packaging>pom</packaging>
+<!-- <modules>
+ <module>sdnc_reports_dao</module>
+ <module>sdnc_reports_api</module>
+ </modules>
+
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-dependencies</artifactId>
+ <version>1.3.5.RELEASE</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+</dependencyManagement> -->
+
<name>sdnc-features</name>
<description>The SDN-C features repository contains code for karaf features that are used by the SDN controller</description>
<url>https://wiki.onap.org</url>
diff --git a/sdnc_report_api_sdnc_253_story/.project b/sdnc_report_api_sdnc_253_story/.project
new file mode 100644
index 0000000..03bfd1e
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>sdnc_reports</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
diff --git a/sdnc_report_api_sdnc_253_story/.settings/org.eclipse.core.resources.prefs b/sdnc_report_api_sdnc_253_story/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/sdnc_report_api_sdnc_253_story/.settings/org.eclipse.m2e.core.prefs b/sdnc_report_api_sdnc_253_story/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/sdnc_report_api_sdnc_253_story/README.md b/sdnc_report_api_sdnc_253_story/README.md
new file mode 100644
index 0000000..c8b02ab
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/README.md
@@ -0,0 +1 @@
+# SDNCReports \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/pom.xml b/sdnc_report_api_sdnc_253_story/pom.xml
new file mode 100644
index 0000000..187589b
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/pom.xml
@@ -0,0 +1,19 @@
+<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>
+ <groupId>com.sdnc.reports</groupId>
+ <artifactId>sdnc_reports</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+ <parent>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-parent</artifactId>
+ <version>1.5.4.RELEASE</version>
+ </parent>
+
+
+ <modules>
+ <module>sdnc_reports_dao</module>
+ <module>sdnc_reports_api</module>
+ </modules>
+</project> \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/.classpath b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/.classpath
new file mode 100644
index 0000000..7e4ca5c
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/.classpath
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/.project b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/.project
new file mode 100644
index 0000000..9073075
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/.project
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>sdnc_reports_api</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.wst.common.project.facet.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.springframework.ide.eclipse.core.springbuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.springframework.ide.eclipse.core.springnature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+ </natures>
+</projectDescription>
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/.settings/org.eclipse.core.resources.prefs b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..29abf99
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/test/java=UTF-8
+encoding//src/test/resources=UTF-8
+encoding/<project>=UTF-8
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/.settings/org.eclipse.jdt.core.prefs b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..13b3428
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,13 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/.settings/org.eclipse.m2e.core.prefs b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/.settings/org.eclipse.wst.common.project.facet.core.xml b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..d858295
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+ <installed facet="cloudfoundry.standalone.app" version="1.0"/>
+</faceted-project>
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/logs/sdnc_report_api.log b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/logs/sdnc_report_api.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/logs/sdnc_report_api.log
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/pom.xml b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/pom.xml
new file mode 100644
index 0000000..06503ac
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/pom.xml
@@ -0,0 +1,163 @@
+<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>
+ <packaging>jar</packaging>
+ <artifactId>sdnc_reports_api</artifactId>
+ <parent>
+ <groupId>com.sdnc.reports</groupId>
+ <artifactId>sdnc_reports</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ <java.version>1.8</java.version>
+ </properties>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <scope>test</scope>
+ <version>1.4.194</version>
+</dependency>
+
+ <dependency>
+ <groupId>com.sdnc.reports</groupId>
+ <artifactId>sdnc_reports_dao</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.mariadb.jdbc</groupId>
+ <artifactId>mariadb-java-client</artifactId>
+ <version>1.1.9</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ <version>1.5.4.RELEASE</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <scope>test</scope>
+ <version>1.5.3.RELEASE</version>
+ </dependency>
+
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>4.3.9.RELEASE</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-tomcat</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tomcat.embed</groupId>
+ <artifactId>tomcat-embed-jasper</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-devtools</artifactId>
+ <optional>true</optional>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-data-jpa</artifactId>
+
+ </dependency>
+
+ <!-- Add Log4j2 Dependency -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-log4j2</artifactId>
+ </dependency>
+
+
+ </dependencies>
+
+ <build>
+
+ <plugins>
+
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+
+ <!-- <configuration>
+ <mainClass>${start-class}</mainClass>
+ <layout>ZIP</layout>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>repackage</goal>
+ </goals>
+ </execution>
+ </executions> -->
+ </plugin>
+
+
+<plugin>
+ <groupId>org.jacoco</groupId>
+ <artifactId>jacoco-maven-plugin</artifactId>
+ <version>0.7.5.201505241946</version>
+ <executions>
+ <!--
+ Prepares the property pointing to the JaCoCo runtime agent which
+ is passed as VM argument when Maven the Surefire plugin is executed.
+ -->
+ <execution>
+ <id>pre-unit-test</id>
+ <goals>
+ <goal>prepare-agent</goal>
+ </goals>
+ <configuration>
+ <!-- Sets the path to the file which contains the execution data. -->
+ <destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
+ <!--
+ Sets the name of the property containing the settings
+ for JaCoCo runtime agent.
+ -->
+ <propertyName>surefireArgLine</propertyName>
+ </configuration>
+ </execution>
+ <!--
+ Ensures that the code coverage report for unit tests is created after
+ unit tests have been run.
+ -->
+ <execution>
+ <id>post-unit-test</id>
+ <phase>test</phase>
+ <goals>
+ <goal>report</goal>
+ </goals>
+ <configuration>
+ <!-- Sets the path to the file which contains the execution data. -->
+ <dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</dataFile>
+ <!-- Sets the output directory for the code coverage report. -->
+ <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+</plugin>
+
+
+ </plugins>
+
+</build>
+</project> \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/Application.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/Application.java
new file mode 100644
index 0000000..f6a5355
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/Application.java
@@ -0,0 +1,48 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports;
+
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+
+@SpringBootApplication
+//@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})
+@EnableJpaRepositories("com.onap.sdnc.reports.repository")
+@EnableAutoConfiguration
+@EntityScan("com.onap.sdnc.reports.*")
+public class Application {
+ private static final Logger logger = LogManager.getLogger(Application.class);
+ public static void main(String[] args) {
+
+ SpringApplication.run(Application.class, args);
+ logger.info("SDNC REPORTS API Has Started..");
+ }
+}
+
+
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/ServletInitializer.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/ServletInitializer.java
new file mode 100644
index 0000000..45ab303
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/ServletInitializer.java
@@ -0,0 +1,34 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports;
+
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.support.SpringBootServletInitializer;
+
+
+
+public class ServletInitializer extends SpringBootServletInitializer {
+
+ @Override
+ protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+ return application.sources(Application.class);
+ }
+
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/config/JpaApplicationConfig.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/config/JpaApplicationConfig.java
new file mode 100644
index 0000000..cdd2916
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/config/JpaApplicationConfig.java
@@ -0,0 +1,61 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.dao.support.PersistenceExceptionTranslator;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.orm.jpa.AbstractEntityManagerFactoryBean;
+import org.springframework.orm.jpa.JpaTransactionManager;
+import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
+import org.springframework.orm.jpa.vendor.OpenJpaDialect;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+//@Configuration
+//@EnableJpaRepositories("com.onap.sdnc.reports.repository")
+//@EnableTransactionManagement
+public class JpaApplicationConfig {
+
+ /*@Bean
+ public AbstractEntityManagerFactoryBean entityManagerFactory()
+ {
+ LocalContainerEntityManagerFactoryBean factory=new LocalContainerEntityManagerFactoryBean();
+ factory.setPackagesToScan("com.onap.sdnc.reports.repository");
+ //factory.setPersistenceUnitName("name");
+ //factory.setPersistenceUnitName("transactions-optional");
+ return factory;
+ }
+
+ @Bean
+ public PlatformTransactionManager transactionManager()
+ {
+ JpaTransactionManager jpaTransactionManager=new JpaTransactionManager();
+ jpaTransactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
+ return jpaTransactionManager;
+ }
+
+ @Bean
+ public PersistenceExceptionTranslator persistenceExceptionTranslator()
+ {
+ return new OpenJpaDialect();
+ }*/
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/controller/ReportController.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/controller/ReportController.java
new file mode 100644
index 0000000..0106031
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/controller/ReportController.java
@@ -0,0 +1,104 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.controller;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.hibernate.engine.internal.Collections;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.onap.sdnc.reports.Application;
+import com.onap.sdnc.reports.model.PreTestConfig;
+import com.onap.sdnc.reports.model.Report;
+import com.onap.sdnc.reports.model.Response;
+import com.onap.sdnc.reports.repository.DeviceRepository;
+import com.onap.sdnc.reports.rest.model.PreTestModel;
+import com.onap.sdnc.reports.service.IReportService;
+
+@RestController
+public class ReportController {
+
+ private static final Logger logger = LogManager.getLogger(ReportController.class);
+
+ @Autowired
+ IReportService reportService;
+
+ /*@RequestMapping(value = "/saveReport", method = RequestMethod.POST,consumes=MediaType.APPLICATION_JSON_VALUE)
+ public void saveReport(@RequestBody Report Report) {
+
+ //repository.save(new Report(Report.getFirstName(), Report.getLastName()));
+ }
+
+ @RequestMapping(value="/findAllReports/{startDate}/{endDate}",produces=MediaType.APPLICATION_JSON_VALUE)
+ public Response findAllReports(@PathVariable("startDate") Date startDate,@PathVariable("endDate") Date endDate) {
+
+ return reportService.findAllReports(startDate,endDate);
+ }
+
+ // produces = "application/json"
+ @RequestMapping(value="/findReportByTestName/{startDate}/{endDate}/{testName}",produces=MediaType.APPLICATION_JSON_VALUE)
+ public Response findReportByTestName(@PathVariable("startDate") Date startDate,@PathVariable("endDate") Date endDate,@PathVariable("testName") String testName) {
+
+ return reportService.findReportByTestName(startDate,endDate,testName);
+ }*/
+
+ @RequestMapping(value="/findReportByDeviceName/{startDate}/{endDate}/{deviceName}", produces = "application/json",method=RequestMethod.GET)
+ public List<PreTestModel> findReportByDeviceName(@PathVariable("startDate") Date startDate,@PathVariable("endDate") Date endDate,@PathVariable("deviceName") String deviceName) {
+
+ try{
+ logger.info("findReportByDeviceName Started Working..");
+ logger.info("Received StartDate : "+startDate+" ,EndDate : "+endDate+" ,DeviceName : "+deviceName);
+ /*ObjectMapper mapper=new ObjectMapper();
+ String jsonVal="";
+ try {
+ jsonVal = mapper.writeValueAsString(reportService.findReportByDeviceName(startDate,endDate,deviceName));
+ logger.info("JSON "+jsonVal);
+ } catch (JsonProcessingException e) {
+
+ }*/
+ logger.info("findReportByDeviceName Finished Working..");
+ return reportService.findReportByDeviceName(startDate,endDate,deviceName.trim());
+ }
+ catch(Exception ex)
+ {
+ logger.info("Exception Occured : "+ex.getLocalizedMessage());
+ return java.util.Collections.EMPTY_LIST;
+ }
+
+ }
+
+ /*@RequestMapping(value="/findReportsByDeviceNamdAndTestName/{startDate}/{endDate}",produces=MediaType.APPLICATION_JSON_VALUE)
+ public Response findReportsByDeviceNamdAndTestName(@PathVariable("startDate") Date startDate,@PathVariable("endDate") Date endDate,@PathVariable("deviceName") String deviceName,@PathVariable("testName") String testName) {
+
+ return reportService.findReportsByDeviceNamdAndTestName(startDate,endDate,deviceName,testName);
+ }*/
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/controller/WebController.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/controller/WebController.java
new file mode 100644
index 0000000..a2311fe
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/controller/WebController.java
@@ -0,0 +1,36 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.controller;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+@Controller
+public class WebController {
+
+ @RequestMapping("/")
+ ModelAndView home(ModelAndView modelAndView) {
+
+ modelAndView.setViewName("index");
+
+ return modelAndView;
+ }
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/service/IReportService.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/service/IReportService.java
new file mode 100644
index 0000000..b4afaf6
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/service/IReportService.java
@@ -0,0 +1,47 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.service;
+
+import java.util.Date;
+import java.util.List;
+
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import com.onap.sdnc.reports.model.PreTestConfig;
+import com.onap.sdnc.reports.model.Report;
+import com.onap.sdnc.reports.model.Response;
+import com.onap.sdnc.reports.rest.model.PreTestModel;
+
+public interface IReportService {
+
+/* public void saveReport(@RequestBody Report Report);
+
+ public Response findAllReports(@PathVariable("startDate") Date startDate,@PathVariable("endDate") Date endDate);
+
+
+ public Response findReportByTestName(@PathVariable("startDate") Date startDate,@PathVariable("endDate") Date endDate,@PathVariable("testName") String testName);
+
+ public Response findReportsByDeviceNamdAndTestName(@PathVariable("startDate") Date startDate,@PathVariable("endDate") Date endDate,@PathVariable("deviceName") String deviceName,@PathVariable("testName") String testName);
+*/
+ public List<PreTestModel> findReportByDeviceName(@PathVariable("startDate") Date startDate,@PathVariable("endDate") Date endDate,@RequestParam("deviceName") String deviceName) throws Exception;
+
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/service/ReportServiceImpl.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/service/ReportServiceImpl.java
new file mode 100644
index 0000000..73d040e
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/java/com/onap/sdnc/reports/service/ReportServiceImpl.java
@@ -0,0 +1,115 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.onap.sdnc.reports.controller.ReportController;
+import com.onap.sdnc.reports.model.PreTestConfig;
+import com.onap.sdnc.reports.model.Report;
+import com.onap.sdnc.reports.model.Response;
+import com.onap.sdnc.reports.repository.DeviceRepository;
+import com.onap.sdnc.reports.repository.PreTestConfigRepository;
+import com.onap.sdnc.reports.rest.model.PreTestModel;
+
+@Service
+public class ReportServiceImpl implements IReportService {
+
+ private static final Logger logger = LogManager.getLogger(ReportServiceImpl.class);
+
+ @Autowired
+ DeviceRepository deviceRepository;
+
+ @Autowired
+ PreTestConfigRepository preTestConfigRepository;
+
+ /*@Override
+ public void saveReport(Report Report) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public Response findAllReports(Date startDate, Date endDate) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Response findReportByTestName(Date startDate, Date endDate, String testName) {
+ // TODO Auto-generated method stub
+ return null;
+ }*/
+
+ @Override
+ public List<PreTestModel> findReportByDeviceName(Date startDate, Date endDate, String deviceName) throws Exception{
+
+ try{
+
+ List<PreTestConfig> resultSet= preTestConfigRepository.findReportByDeviceName(startDate, endDate, deviceName);
+ logger.info("Received Output From Repository Is: "+resultSet);
+
+ List<PreTestModel> preTestList=new ArrayList<PreTestModel>();
+ for(PreTestConfig config : resultSet)
+ {
+ try{
+ long deviceid=config.getDevice().getId();
+ long testid=config.getTestId();
+ String testName=config.getTestName();
+ String deviName=config.getDevice().getDeviceName();
+ String execuationDetails=config.getExecuationDetails();
+ String result=config.getResult();
+ Date timeStamp=config.getTimestamp();
+
+ PreTestModel model=new PreTestModel(testid, deviceid, testName, deviName, execuationDetails, result, timeStamp);
+ preTestList.add(model);
+ }
+ catch(Exception ex)
+ {
+ logger.info("Exception Occured : "+ex.getLocalizedMessage());
+ }
+ }
+ logger.info("Final PreTestConfig List Size : "+preTestList.size());
+ Response r=new Response("Pass", resultSet);
+ return preTestList;
+ }
+ catch(Exception ex)
+ {
+ logger.info("Exception Occured : "+ex.getLocalizedMessage());
+ throw new Exception(ex);
+ }
+
+ }
+
+ /*@Override
+ public Response findReportsByDeviceNamdAndTestName(Date startDate, Date endDate, String deviceName,
+ String testName) {
+ // TODO Auto-generated method stub
+ return null;
+ }*/
+
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/application.properties b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/application.properties
new file mode 100644
index 0000000..e9b1c47
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/application.properties
@@ -0,0 +1,51 @@
+server.port = 9002
+
+spring.jackson.serialization.fail-on-empty-beans=false
+
+server.tomcat.uri-encoding=utf-8
+
+server.error.whitelabel.enabled=false
+spring.mvc.view.prefix = /WEB-INF/views/
+spring.mvc.view.suffix = .jsp
+
+
+spring.datasource.url=jdbc:mariadb://localhost:3307/testreports
+spring.datasource.username=root
+spring.datasource.password=root
+spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
+spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
+#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
+# Keep the connection alive if idle for a long time (needed in production)
+spring.datasource.testWhileIdle=true
+#spring.datasource.validationQuery=SELECT 1
+
+
+#spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
+#spring.datasource.url=jdbc:mysql://localhost:3306/mysql?useSSL=false
+#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
+#spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
+
+#spring.datasource.name=mysql
+#spring.jpa.database=mysql
+
+
+
+
+#spring.jpa.generate-ddl=true
+
+spring.datasource.tomcat.max-wait=20000
+spring.datasource.tomcat.max-active=50
+spring.datasource.tomcat.max-idle=20
+spring.datasource.tomcat.min-idle=15
+
+spring.jpa.show-sql=true
+#spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardIm
+
+
+#spring.jpa.hibernate.ddl-auto=create
+#spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialect
+#spring.jpa.properties.hibernate.id.new_generator_mappings = false
+#spring.jpa.properties.hibernate.format_sql = true
+
+#logging.level.org.hibernate.SQL=DEBUG
+#logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/log4j2.xml b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..e443b52
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/log4j2.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="WARN" monitorInterval="30">
+ <Properties>
+ <Property name="LOG_PATTERN">
+ %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${hostName} --- [%15.15t] %-40.40c{1.} : %m%n%ex
+ </Property>
+ </Properties>
+ <Appenders>
+
+ <!-- <Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
+ <PatternLayout pattern="${LOG_PATTERN}"/>
+ </Console> -->
+
+ <!-- Rolling File Appender -->
+ <RollingFile name="FileAppender" fileName="logs/sdnc_report_api.log"
+ filePattern="logs/sdnc_report_api-%d{yyyy-MM-dd}-%i.log">
+ <PatternLayout>
+ <Pattern>${LOG_PATTERN}</Pattern>
+ </PatternLayout>
+ <Policies>
+ <SizeBasedTriggeringPolicy size="10MB" />
+ </Policies>
+ <DefaultRolloverStrategy max="10"/>
+ </RollingFile>
+
+ </Appenders>
+
+ <Loggers>
+ <Logger name="com.onap.sdnc.reports" level="debug" additivity="false">
+ <AppenderRef ref="FileAppender" />
+ </Logger>
+
+ <Root level="debug">
+ <!-- <AppenderRef ref="ConsoleAppender" /> -->
+ <AppenderRef ref="FileAppender"/>
+ </Root>
+ </Loggers>
+</Configuration> \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/form-validationTest.html b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/form-validationTest.html
new file mode 100644
index 0000000..88f0e96
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/form-validationTest.html
@@ -0,0 +1,141 @@
+<!-- /*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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=========================================================
+*/
+ -->
+<div class="testMain">
+ <div class="heading"><img src="images/validation.png" width=30 height="30" style="margin-left:5px;">&nbsp;&nbsp;Pre-test/Certification</div>
+ <form name="reportForm">
+ <div class="row>
+ <div role="alert" style="margin-left:20px;margin-bottom:5px;">
+ <button class="btn btn-danger testNotification" ng-show="showError"><img src="images/error.png" width=40 height="30" class="testImgIcon">{{errorMessage}}</button>
+ <button class="btn btn-success testNotification" ng-show="showSuccess"><img src="images/success.png" width=40 height="30" class="testImgIcon">{{successMessage}}</button>
+ <button class="btn btn-warning testNotification" ng-show="showWarninf"><img src="images/waning.png" width=35 height="25" class="testImgIcon">{{warningMessage}}</button>
+ <button class="btn btn-info testNotification" ng-show="showInfo">{{infoMessage}}</button>
+ </div>
+
+<div class="row">
+ <div class="column testCol">
+ <label class="labeltext">Specify IP Address</label>
+ </div>
+ <div class="column" style="background-color:#f2f2f2;width:50%;margin-left:0px;">
+ <input type="text" ng-model="IPAddress" name="IPAddress" style="margin-left:5px;width:170px;" ng-ip-address placeholder='255.255.255.255' required></input>
+ <div role="alert">
+ <span class="error" ng-show="reportForm.IPAddress.$error.required">Required!</span>
+ </div>
+ <div role="alert">
+ <span class="error" ng-if="reportForm.IPAddress.$invalid">Not a valid IPAddress!</span>
+ </div>
+ <div role="alert">
+ <span class="error" ng-if="reportForm.IPAddress.pattern">Not a valid IPAddress!</span>
+ </div>
+ </div>
+</div>
+<div class="row">
+ <div class="column testCol">
+ <label class="labeltext">Specify Host Name</label>
+ </div>
+ <div class="column" style="background-color:#f2f2f2;width:50%;margin-left:0px;">
+ <input type="text" ng-model="HostName" name="HostName" style="margin-left:5px;width:170px;" required ng-pattern="hostNamePattern"></input>
+ <div role="alert">
+ <span class="error" ng-show="reportForm.HostName.$error.required">Required!</span>
+ </div>
+ <div role="alert">
+ <span class="error" ng-show="reportForm.HostName.$invalid">Not a valid HostName!</span>
+ </div>
+ </div>
+</div>
+<div class="row">
+ <div class="column" style="width:25%;background-color:#f2f2f2;height:45px;margin-left:35px;">
+ <label class="labeltext">Select Certification</label>
+ </div>
+ <div class="column" style="background-color:#f2f2f2;width:50%;height:45px;margin-left:0px;">
+ <label ng-repeat="val in validationTestList" class="labeltext" style="margin-right:35px;">
+ <input type="checkbox" ng-model="val.Selected" class="check" ng-change="updateSelection($index,validationTestList,val.validationType);">{{val.validationType}}</input>
+ </label>
+ </div>
+</div>
+<!--<hr style="border-color:darkGrey;">-->
+<div class="row" ng-show="allowTestSelection">
+<div class="column btnRunTest">
+<input type="submit" ng-click="runTest()" value="Run PreTest" id="btnSubmit" ng-disabled="showError" style="margin-left:0px;"/>
+</div>
+</div>
+</form>
+<table class="tableDisplay" ng-show="ShowResult" id="tableToExport" style="margin-left:10px;width:1000px;">
+ <tr class="first_row">
+ <th>SNo.
+ </th>
+ <th colspan="2" style="text-align:center;">TestName
+ </th>
+ <th>Device IP
+ </th>
+ <th>Status
+ </th>
+ <th style="width:20%;">Statistics (%Loss)</th>
+ <th style="width:20%;">Average Time (ms)</th>
+ <th>Result
+ </th>
+ </tr>
+ <tr ng-repeat="test in objPreTest">
+ <td>{{$index+1}}
+ </td>
+ <td><img src="{{(test.testtype=='Network Layer') ? 'images/images.png': 'images/protocol.png'}}" width=40 height=30 ></img></td>
+ <td>{{test.testtype}}
+ </td>
+ <td>{{test.ipaddress}}
+ </td>
+ <td>{{test.status | uppercase}}
+ </td>
+ <td>
+ <div ng-show="test.testtype =='Network Layer'" class="w3-light-grey">
+ <div ng-show=test.statistics!=null class="w3-container w3-red w3-center" style="width:{{test.statisticPer}}%">{{test.statistics}}% Loss
+ </div>
+ <div ng-show=test.statistics==null class="w3-orange w3-center" style="width:{{test.statisticPer}}%">No Statistics Recorded
+ </div>
+ </div>
+ <div ng-show="test.testtype =='Protocol Layer'">
+ <img src='/images/router.png' width=30 height=30 style="margin-bottom:10px;"></img>
+ <span class="{{(test.status == 'unreachable') ? 'arrowRed':'arrowGreen'}}">&#8594;</span><span class="{{(test.status == 'unreachable') ? 'arrowRed':'arrowGreen'}}">&#8594;</span><span class="{{(test.status == 'unreachable') ? 'arrowRed':'arrowGreen'}}">&#8594;
+ <img src='/images/router.png' width=30 height=30 ></img>
+ </div>
+ </td>
+ <td>
+ <div ng-show="test.testtype =='Network Layer'" class="w3-light-grey">
+ <div ng-show=test.avgTime!=null class="w3-container w3-green w3-center" style="width:{{test.avgTimePer}}%">{{test.avgTime}} ms</div>
+ <div ng-show=test.statistics==null class="w3-blue w3-center" style="width:{{test.statisticPer}}%">No AvgTime Recorded
+ </div>
+ </div>
+ </td>
+ <td><img src="{{(test.status=='reachable') ? 'images/success.png': 'images/FailImage.png'}}" width=30 height=25></img>
+ </td>
+ </tr>
+</table>
+<div class="row">
+<div class="column" style="margin-top:10px;width:800px;" ng-show="ShowResult">
+ <span class='arrowRed'>&#8594;</span>
+ <label class="labeltext">UnReachable</label>&nbsp;&nbsp;
+ <span class='arrowGreen'>&#8594;</span>
+ <label class="labeltext">Reachable</label>&nbsp;&nbsp;
+ <span><img src='images/success.png' width=30 height=25></span>
+ <label class="labeltext">Pass</label>&nbsp;&nbsp;
+ <span><img src='images/FailImage.png' width=30 height=25></span>
+ <label class="labeltext">Fail</label>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/form-viewReport.html b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/form-viewReport.html
new file mode 100644
index 0000000..7528adb
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/form-viewReport.html
@@ -0,0 +1,140 @@
+<!-- /*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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=========================================================
+*/
+ -->
+<div class="ReportMain">
+ <div class="heading"><img src="images/search.png" width=30 height="30" style="margin-left:5px;">&nbsp;&nbsp;Search For Historical Test Reports</div>
+ <form name="myForm">
+ <div class="row">
+ <div role="alert" style="margin-left:20px;margin-bottom:5px;">
+ <button class="btn btn-danger ReportNotification" ng-show="showError"><img src="images/error.png" width=25 height="25" class="ReportImgIcon">{{errorMessage}}</button>
+ <button class="btn btn-success ReportNotification" ng-show="showSuccess"><img src="images/success.png" width=30 height="30" class="ReportImgIcon">{{successMessage}}</button>
+ <button class="btn btn-warning ReportNotification" ng-show="showWarning"><img src="images/waning.png" width=35 height="25" class="ReportImgIcon">{{warningMessage}}</button>
+ </div>
+ <div class="column" style="background-color:#f2f2f2;width:40%;">
+ <label for="exampleInput" class="labeltext">Start Date</label>
+ <input type="date" id="exampleInput" name="input" ng-model="startdate.value"
+ placeholder="yyyy-MM-dd" style="margin-left:75px;width:170px;" required/>
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.date">
+ Not a valid date!</span>
+ </div>
+ </div>
+ <div class="column" style="background-color:#f2f2f2;margin-left:0px;width:50%;">
+ <label for="exampleEndInput" class="labeltext">End Date</label>
+ <input type="date" id="exampleEndInput" name="enddate" ng-model="enddate.value"
+ placeholder="yyyy-MM-dd" style="width:170px;" required/>
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.date">
+ Not a valid date!</span>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="column" style="background-color:#f2f2f2;width:90%;">
+ <label class="labeltext">Specify Device IP</label>
+ <input type="text" ng-model="deviceName" name="text" style="margin-left:25px;width:170px;" required></input>
+ <div role="alert">
+ <span class="error" ng-show="myForm.text.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.text.$error.date">
+ Not a valid date!</span>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <input type="submit" id="btnSubmit" ng-click="getReports(deviceName,startdate.value,enddate.value)" style="width:120px;"></input>
+ </div>
+ </form>
+ <table class="tableDisplay" ng-show="ShowResult" id="tableToExport">
+ <tr class="first_row">
+ <th>SNo.
+ </th>
+ <th colspan="2" style="text-align:center;">TestName
+ </th>
+ <th>DeviceIP
+ </th>
+ <th>Timestamp
+ </th>
+ <th>Status
+ </th>
+ <th style="width:20%;">Statistics (%Loss)</th>
+ <th style="width:20%;">Average Time (ms)</th>
+ <th colspan="2" style="text-align:center;">Result
+ </th>
+ </tr>
+ <tr dir-paginate="test in objTestModel | itemsPerPage: 4">
+ <td>{{$index+1}}
+ </td>
+ <td><img src="{{(test.testname=='Network Layer') ? 'images/images.png': 'images/protocol.png'}}" width=40 height=30 ></img></td>
+ <td>{{test.testname}}
+ </td>
+ <td>{{test.deviceName}}
+ </td>
+ <td>{{test.timeStamp}}
+ </td>
+ <td>{{test.executionDetails.status | uppercase}}
+ </td>
+ <td>
+ <div ng-show="test.testname =='Network Layer'" class="w3-light-grey">
+ <div class="w3-container w3-orange w3-center" style="width:{{test.executionDetails.statisticPer}}%">{{test.executionDetails.statistics}}% Loss
+ </div>
+ </div>
+ <div ng-show="test.testname =='Protocol Layer'">
+ <img src='/images/router.png' width=30 height=30 style="margin-bottom:10px;"></img>
+ <span class="{{(test.executionDetails.status == 'unreachable') ? 'arrowRed':'arrowGreen'}}">&#8594;</span><span class="{{(test.executionDetails.status == 'unreachable') ? 'arrowRed':'arrowGreen'}}">&#8594;</span><span class="{{(test.executionDetails.status == 'unreachable') ? 'arrowRed':'arrowGreen'}}">&#8594; </span>
+ <img src='/images/router.png' width=30 height=30 style="margin-bottom:10px;"></img>
+ </div>
+ </td>
+ <td>
+ <div ng-show="test.testname =='Network Layer'" class="w3-light-grey">
+ <div class="w3-container w3-light-green w3-center" style="width:{{test.executionDetails.avgTimePer}}%">{{test.executionDetails.avgTime}} ms</div>
+ </div>
+ </td>
+ <td>{{test.result}}</td>
+ <td><img src="{{(test.result=='Pass') ? 'images/success.png': 'images/FailImage.png'}}" width=30 height=25></img>
+ </td>
+ </tr>
+ </table>
+ <div class="row">
+ <div class="column">
+ <dir-pagination-controls ng-show="pagination"
+ max-size="5"
+ direction-links="true"
+ boundary-links="true" >
+ </dir-pagination-controls>
+ </div>
+ <div class="column" style="margin-top:10px;" ng-show="ShowResult">
+ <span class='arrowRed'>&#8594;</span>
+ <label class="labeltext">UnReachable</label>&nbsp;&nbsp;
+ <span class='arrowGreen'>&#8594;</span>
+ <label class="labeltext">Reachable</label>
+ </div>
+ </div>
+ <div class="row">
+ <button type="button" ng-csv="objTestModel" class="btndownload" ng-show="ShowResult" filename="fileName.csv" csv-column-order="csvOrder" csv-header="['TestName','DeviceIP','TimeStamp','Status','Statistics','AvgTime','Result']">Download</button>
+ <img src="images/downloadImage.png" width=30 height="30" ng-show="ShowResult" style="margin-left:5px;">
+ </div>
+</div>
+</body>
+</html> \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/FailImage.png b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/FailImage.png
new file mode 100644
index 0000000..22c44f7
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/FailImage.png
Binary files differ
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/download.png b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/download.png
new file mode 100644
index 0000000..0b1f949
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/download.png
Binary files differ
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/downloadImage.png b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/downloadImage.png
new file mode 100644
index 0000000..e72e128
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/downloadImage.png
Binary files differ
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/error.png b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/error.png
new file mode 100644
index 0000000..3f44964
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/error.png
Binary files differ
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/fail.png b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/fail.png
new file mode 100644
index 0000000..898fa26
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/fail.png
Binary files differ
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/images.png b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/images.png
new file mode 100644
index 0000000..3bce573
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/images.png
Binary files differ
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/networklayer.png b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/networklayer.png
new file mode 100644
index 0000000..c8e8008
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/networklayer.png
Binary files differ
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/protocaol.png b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/protocaol.png
new file mode 100644
index 0000000..2c6f8fa
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/protocaol.png
Binary files differ
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/protocol.png b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/protocol.png
new file mode 100644
index 0000000..aea9c7c
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/protocol.png
Binary files differ
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/reachable.png b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/reachable.png
new file mode 100644
index 0000000..bb771b3
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/reachable.png
Binary files differ
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/router.jpg b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/router.jpg
new file mode 100644
index 0000000..cb4c50e
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/router.jpg
Binary files differ
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/router.png b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/router.png
new file mode 100644
index 0000000..94de9f5
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/router.png
Binary files differ
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/search.png b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/search.png
new file mode 100644
index 0000000..a8b4b35
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/search.png
Binary files differ
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/success.png b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/success.png
new file mode 100644
index 0000000..76689fe
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/success.png
Binary files differ
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/validation.png b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/validation.png
new file mode 100644
index 0000000..77c53ff
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/validation.png
Binary files differ
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/waning.png b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/waning.png
new file mode 100644
index 0000000..2ae2987
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/images/waning.png
Binary files differ
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getAllDevices.json b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getAllDevices.json
new file mode 100644
index 0000000..d7faef5
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getAllDevices.json
@@ -0,0 +1,17 @@
+
+{
+ "deviceList":[
+ {
+ "deviceId":"1",
+ "deviceName":"Device1"
+ },
+ {
+ "deviceId":"2",
+ "deviceName":"Device2"
+ },
+ {
+ "deviceId":"3",
+ "deviceName":"Device3"
+ }
+ ]
+} \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getAllReports.json b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getAllReports.json
new file mode 100644
index 0000000..cd0723f
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getAllReports.json
@@ -0,0 +1,75 @@
+
+{
+ "data":[
+ {
+ "testid":1,
+ "deviceid":1,
+ "testName":"Network Layer",
+ "deviceName":"Router",
+ "execuationDetails":{"output": {"hostname": "google.com","testresult": "pass", "status": "reachable","statistics": "0% loss","ipaddress": "10.53.122.44","avgTime": "Minimum = 70ms"}},
+ "result":"Pass",
+ "timeStamp":"2018-03-16"
+ },
+ {
+ "testid":2,
+ "deviceid":1,
+ "testName":"Network Layer",
+ "deviceName":"Router",
+ "execuationDetails":{"output": {"hostname": "google.com","testresult": "fail", "status": "unreachable","statistics": "100% loss","ipaddress": "10.53.122.44","avgTime": "Minimum = 33ms"}},
+ "result":"Pass",
+ "timeStamp":"2018-03-16"
+ },
+ {
+ "testid":4,
+ "deviceid":1,
+ "testName":"Protocol Layer",
+ "deviceName":"Router",
+ "execuationDetails":{"output": {"status": "unreachable"}},
+ "result":"Fail",
+ "timeStamp":"2018-03-08"
+ },
+ {
+ "testid":5,
+ "deviceid":1,
+ "testName":"Protocol Layer",
+ "deviceName":"Router",
+ "execuationDetails":{"output": {"status": "reachable"}},
+ "result":"Pass",
+ "timeStamp":"2018-03-15"
+ },
+ {
+ "testid":6,
+ "deviceid":1,
+ "testName":"Network Layer",
+ "deviceName":"Router",
+ "execuationDetails":{"output": {"hostname": "google.com","testresult": "fail", "status": "unreachable","statistics": "100% loss","ipaddress": "10.53.122.44","avgTime": "Minimum = 33ms"}},
+ "result":"Fail",
+ "timeStamp":"2018-03-15"
+ },
+ {
+ "testid":7,
+ "deviceid":1,
+ "testName":"Network Layer",
+ "deviceName":"Router",
+ "execuationDetails":{"output": {"hostname": "google.com","testresult": "fail", "status": "unreachable","statistics": "100% loss","ipaddress": "10.53.122.44","avgTime": "Minimum = 50ms"}},
+ "result":"Fail",
+ "timeStamp":"2018-03-15"
+ }
+ ],
+ "status":200,
+ "config":{
+ "method":"GET",
+ "transformRequest":[
+ null
+ ],
+ "transformResponse":[
+ null
+ ],
+ "params":"",
+ "headers":{
+ "Accept":"application/json"
+ },
+ "url":"/findReportByDeviceName/Thu Mar 15 2018 00:00:00 GMT+0530 (India Standard Time)/Fri Mar 16 2018 00:00:00 GMT+0530 (India Standard Time)/Router"
+ },
+ "statusText":""
+} \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getAllTest.json b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getAllTest.json
new file mode 100644
index 0000000..fc9b290
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getAllTest.json
@@ -0,0 +1,17 @@
+
+{
+ "testList":[
+ {
+ "testId":"1",
+ "testName":"Test1"
+ },
+ {
+ "testId":"2",
+ "testName":"Test2"
+ },
+ {
+ "testId":"3",
+ "testName":"Test3"
+ }
+ ]
+} \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getAllVNF.json b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getAllVNF.json
new file mode 100644
index 0000000..4ebf951
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getAllVNF.json
@@ -0,0 +1,29 @@
+
+{
+ "vnfList":[
+ {
+ "IpAddress":"1.160.10.240",
+ "HostName":"Host1",
+ "Selected":false,
+ "PortNo":"8282"
+ },
+ {
+ "IpAddress":"1.160.10.241",
+ "HostName":"Host2",
+ "Selected":false,
+ "PortNo":"8080"
+ },
+ {
+ "IpAddress":"1.160.10.242",
+ "HostName":"Host3",
+ "Selected":false,
+ "PortNo":"8285"
+ },
+ {
+ "IpAddress":"1.160.10.243",
+ "HostName":"Host4",
+ "Selected":false,
+ "PortNo":"8286"
+ }
+ ]
+} \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getTestResult.json b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getTestResult.json
new file mode 100644
index 0000000..581c8b0
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/sdnc-stubs/getTestResult.json
@@ -0,0 +1,42 @@
+
+{
+ "preTestResponse":[
+ {
+ "ipaddress":"1.160.10.240",
+ "status":"unreachable",
+ "testtype":"Network Layer",
+ "statistics":null,
+ "avgTime":null
+ },
+ {
+ "ipaddress":"1.160.10.240",
+ "status":"unreachable",
+ "testtype":"Protocol Layer",
+ "statistics":null,
+ "avgTime":null
+ },
+ {
+ "ipaddress":"1.160.10.240",
+ "status":"reachable",
+ "testtype":"Network Layer",
+ "statistics":"0% loss",
+ "avgTime":"Minimum = 70ms"
+ }
+ ],
+ "status":200,
+ "config":{
+ "method":"GET",
+ "transformRequest":[
+ null
+ ],
+ "transformResponse":[
+ null
+ ],
+ "params":"",
+ "headers":{
+ "Accept":"application/json"
+ },
+ "url":"/findReportByDeviceName/Thu Mar 15 2018 00:00:00 GMT+0530 (India Standard Time)/Fri Mar 16 2018 00:00:00 GMT+0530 (India Standard Time)/Router"
+ },
+ "statusText":""
+} \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/style/sdnc-style.css b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/style/sdnc-style.css
new file mode 100644
index 0000000..9e627dc
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/style/sdnc-style.css
@@ -0,0 +1,216 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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=========================================================
+*/
+
+ body{
+ padding-top:20px;
+ overflow-y:scroll;
+ }
+
+/* form styling */
+#form-container{
+ margin-bottom:20px;
+ border-radius:5px;
+}
+#form-container .page-header{
+ margin:0; padding:30px;
+ border-top-left-radius:5px; border-top-right-radius:5px;
+ }
+
+ table.tableDisplay{
+ font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+ border-collapse: collapse;
+ width: 100%;
+ table-layout: auto;
+}
+ table.tableDisplay tr:nth-child(even){
+ background-color: #C0C0C0;
+}
+ table.tableDisplay th{
+ padding-top: 12px;
+ padding-bottom: 12px;
+ text-align: left;
+ background: linear-gradient(to top, #f8f8f8 0%, #cce5ff 83%);
+ color: black;
+}
+ table.tableDisplay td,table.tableDisplay th {
+ border: 1px solid #ddd;
+ padding: 8px;
+ width:30px;
+
+}
+ table.tableDisplay tr:{
+ text-align: left;
+}
+ table.tableDisplay tr:hover {
+ background-color:#cce5ff;
+}
+ .first_row{
+ background-color: #cce5ff;
+ color: black;
+ text-align:left;
+}
+ .column {
+ float: left;
+ width: 32.2%;
+ padding: 10px;
+ margin-left:20px;
+ height: 60px;
+ /* Should be removed. Only for demonstration */
+}
+/* Clear floats after the columns */
+ .row:after {
+ content: "";
+ display: table;
+ clear: both;
+}
+ #btnSubmit{
+ background-color: #cce5ff;
+ margin-top:20px;
+ margin-left:20px;
+ margin-bottom:10px;
+ width:100px;
+ height:30px;
+ font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+ border-collapse: collapse;
+ border: 1px solid #ddd;
+ font-weight:700;
+}
+ .btndownload{
+ background-color: #cce5ff;
+ margin-top:20px;
+ margin-bottom:10px;
+ margin-left:20px;
+ width:130px;
+ height:30px;
+ font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+ border-collapse: collapse;
+ border: 1px solid #ddd;
+ font-weight:700;
+}
+ #exampleInput{
+ margin-left:25px;
+ width:160px;
+}
+ #exampleEndInput{
+ margin-left:10px;
+}
+ .error{
+ font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+ color:Red;
+ font-size: 14px;
+ margin-bottom:10px;
+}
+ .labeltext{
+ font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+}
+ .sort-icon {
+ font-size: 9px;
+ margin-left: 5px;
+}
+ th {
+ cursor:pointer;
+}
+ .heading{
+ margin-top:30px;
+ width:1100px;
+ height:45px;
+ margin-bottom:20px;
+ font-family:Trebuchet MS, Arial, Helvetica, sans-serif;
+ margin-right: -15px;
+ margin-left: 5px;
+ font-size: 20px;
+ background: linear-gradient(to top, #f8f8f8 0%, #cce5ff 83%);
+ padding-top:15px;
+
+}
+form_validationBody{
+ width:900px;
+ margin-left:15px;
+ margin-top:60px;
+ margin-bottom:20px;
+}
+button:hover {
+ position: relative;
+}
+button[title]:hover:after {
+ padding: 4px 8px;
+ position: absolute;
+ left: 0;
+ top: 100%;
+ white-space: nowrap;
+ z-index: 20px;
+ background:red;
+}
+.arrowRed {
+font-size: 30px;
+color: red;
+}
+.arrowGreen {
+font-size: 30px;
+color: green;
+}
+.ng-invalid { border: 1px solid red; }
+.testMain{
+ width:1100px;
+ margin-left:15px;
+ margin-top:60px;
+ margin-bottom:20px;
+}
+.testNotification{
+ padding:0px;
+}
+.testImgIcon{
+ margin-left:5px;
+ margin-right:10px;
+ padding-right:10px;
+}
+.testCol{
+ background-color:#f2f2f2;
+ width:25%;
+ margin-left:35px;
+}
+.check{
+ margin-left:10px;
+ margin-right:10px;
+}
+.btnRunTest{
+ background-color:#f2f2f2;
+ width:75%;
+ height:75px;
+ margin-left:35px;
+ margin-bottom:35px;
+}
+.ReportMain{
+ width:1100px;
+ margin-left:15px;
+ margin-top:60px;
+}
+.ReportNotification{
+ padding:0px;
+ margin-right:10px;
+ text-align:center;
+}
+.ReportImgIcon{
+ margin-left:5px;
+ margin-right:10px;
+}
+input[type=checkbox] {
+ padding-right: 3px;!important;
+ }
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/style/w3.css b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/style/w3.css
new file mode 100644
index 0000000..e73d269
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/resources/static/style/w3.css
@@ -0,0 +1,231 @@
+/* W3.CSS 4.10 February 2018 by Jan Egil and Borge Refsnes */
+html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}
+/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */
+html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}
+article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}
+audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline}
+audio:not([controls]){display:none;height:0}[hidden],template{display:none}
+a{background-color:transparent;-webkit-text-decoration-skip:objects}
+a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}
+dfn{font-style:italic}mark{background:#ff0;color:#000}
+small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
+sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none}svg:not(:root){overflow:hidden}
+code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible}
+button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:bold}
+button,input{overflow:visible}button,select{text-transform:none}
+button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}
+button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner{border-style:none;padding:0}
+button:-moz-focusring, [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring{outline:1px dotted ButtonText}
+fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}
+legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}
+[type=checkbox],[type=radio]{padding:0}
+[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}
+[type=search]{-webkit-appearance:textfield;outline-offset:-2px}
+[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}
+::-webkit-input-placeholder{color:inherit;opacity:0.54}
+::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}
+/* End extract */
+html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden}
+h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif}
+h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px}
+hr{border:0;border-top:1px solid #eee;margin:20px 0}
+.w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit}
+.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc}
+.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1}
+.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1}
+.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center}
+.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top}
+.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px}
+.w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap}
+.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}
+.w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
+.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none}
+.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none}
+.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%}
+.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none}
+.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block}
+.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s}
+.w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #ccc;width:100%}
+.w3-select{padding:9px 0;width:100%;border:none;border-bottom:1px solid #ccc}
+.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer}
+.w3-dropdown-hover:hover .w3-dropdown-content{display:block}
+.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000}
+.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000}
+.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1}
+.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px}
+.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto}
+.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%}
+.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%}
+.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px}
+.w3-main,#main{transition:margin-left .4s}
+.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)}
+.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px}
+.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto}
+.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0}
+.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left}
+.w3-bar .w3-button{white-space:normal}
+.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0}
+.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%}
+.w3-responsive{display:block;overflow-x:auto}
+.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before,
+.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both}
+.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%}
+.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%}
+.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%}
+.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%}
+@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%}
+.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%}
+.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}}
+@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%}
+.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%}
+.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}}
+.w3-content{max-width:980px;margin:auto}.w3-rest{overflow:hidden}
+.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell}
+.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom}
+.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important}
+@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px}
+.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative}
+.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center}
+.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}}
+@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}}
+@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}}
+@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}}
+@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}}
+.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0}
+.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2}
+.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0}
+.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0}
+.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)}
+.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)}
+.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)}
+.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
+.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
+.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none}
+.w3-display-position{position:absolute}
+.w3-circle{border-radius:50%}
+.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px}
+.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px}
+.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px}
+.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px}
+.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word}
+.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%}
+.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)}
+.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)}
+.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}
+.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
+.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}}
+.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}
+.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}
+.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}
+.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}}
+.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}}
+.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important}
+.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1}
+.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75}
+.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)}
+.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)}
+.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)}
+.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important}
+.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important}
+.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important}
+.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important}
+.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important}
+.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important}
+.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important}
+.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important}
+.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important}
+.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important}
+.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important}
+.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important}
+.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important}
+.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important}
+.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important}
+.w3-left{float:left!important}.w3-right{float:right!important}
+.w3-button:hover{color:#000!important;background-color:#ccc!important}
+.w3-transparent,.w3-hover-none:hover{background-color:transparent!important}
+.w3-hover-none:hover{box-shadow:none!important}
+/* Colors */
+.w3-amber,.w3-hover-amber:hover{color:#000!important;background-color:#ffc107!important}
+.w3-aqua,.w3-hover-aqua:hover{color:#000!important;background-color:#00ffff!important}
+.w3-blue,.w3-hover-blue:hover{color:#fff!important;background-color:#2196F3!important}
+.w3-light-blue,.w3-hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important}
+.w3-brown,.w3-hover-brown:hover{color:#fff!important;background-color:#795548!important}
+.w3-cyan,.w3-hover-cyan:hover{color:#000!important;background-color:#00bcd4!important}
+.w3-blue-grey,.w3-hover-blue-grey:hover,.w3-blue-gray,.w3-hover-blue-gray:hover{color:#fff!important;background-color:#607d8b!important}
+.w3-green,.w3-hover-green:hover{color:#fff!important;background-color:#4CAF50!important}
+.w3-light-green,.w3-hover-light-green:hover{color:#000!important;background-color:#8bc34a!important}
+.w3-indigo,.w3-hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important}
+.w3-khaki,.w3-hover-khaki:hover{color:#000!important;background-color:#f0e68c!important}
+.w3-lime,.w3-hover-lime:hover{color:#000!important;background-color:#cddc39!important}
+.w3-orange,.w3-hover-orange:hover{color:#000!important;background-color:#ff9800!important}
+.w3-deep-orange,.w3-hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important}
+.w3-pink,.w3-hover-pink:hover{color:#fff!important;background-color:#e91e63!important}
+.w3-purple,.w3-hover-purple:hover{color:#fff!important;background-color:#9c27b0!important}
+.w3-deep-purple,.w3-hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important}
+.w3-red,.w3-hover-red:hover{color:#fff!important;background-color:#f44336!important}
+.w3-sand,.w3-hover-sand:hover{color:#000!important;background-color:#fdf5e6!important}
+.w3-teal,.w3-hover-teal:hover{color:#fff!important;background-color:#009688!important}
+.w3-yellow,.w3-hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important}
+.w3-white,.w3-hover-white:hover{color:#000!important;background-color:#fff!important}
+.w3-black,.w3-hover-black:hover{color:#fff!important;background-color:#000!important}
+.w3-grey,.w3-hover-grey:hover,.w3-gray,.w3-hover-gray:hover{color:#000!important;background-color:#9e9e9e!important}
+.w3-light-grey,.w3-hover-light-grey:hover,.w3-light-gray,.w3-hover-light-gray:hover{color:#000!important;background-color:#f1f1f1!important}
+.w3-dark-grey,.w3-hover-dark-grey:hover,.w3-dark-gray,.w3-hover-dark-gray:hover{color:#fff!important;background-color:#616161!important}
+.w3-pale-red,.w3-hover-pale-red:hover{color:#000!important;background-color:#ffdddd!important}
+.w3-pale-green,.w3-hover-pale-green:hover{color:#000!important;background-color:#ddffdd!important}
+.w3-pale-yellow,.w3-hover-pale-yellow:hover{color:#000!important;background-color:#ffffcc!important}
+.w3-pale-blue,.w3-hover-pale-blue:hover{color:#000!important;background-color:#ddffff!important}
+.w3-text-amber,.w3-hover-text-amber:hover{color:#ffc107!important}
+.w3-text-aqua,.w3-hover-text-aqua:hover{color:#00ffff!important}
+.w3-text-blue,.w3-hover-text-blue:hover{color:#2196F3!important}
+.w3-text-light-blue,.w3-hover-text-light-blue:hover{color:#87CEEB!important}
+.w3-text-brown,.w3-hover-text-brown:hover{color:#795548!important}
+.w3-text-cyan,.w3-hover-text-cyan:hover{color:#00bcd4!important}
+.w3-text-blue-grey,.w3-hover-text-blue-grey:hover,.w3-text-blue-gray,.w3-hover-text-blue-gray:hover{color:#607d8b!important}
+.w3-text-green,.w3-hover-text-green:hover{color:#4CAF50!important}
+.w3-text-light-green,.w3-hover-text-light-green:hover{color:#8bc34a!important}
+.w3-text-indigo,.w3-hover-text-indigo:hover{color:#3f51b5!important}
+.w3-text-khaki,.w3-hover-text-khaki:hover{color:#b4aa50!important}
+.w3-text-lime,.w3-hover-text-lime:hover{color:#cddc39!important}
+.w3-text-orange,.w3-hover-text-orange:hover{color:#ff9800!important}
+.w3-text-deep-orange,.w3-hover-text-deep-orange:hover{color:#ff5722!important}
+.w3-text-pink,.w3-hover-text-pink:hover{color:#e91e63!important}
+.w3-text-purple,.w3-hover-text-purple:hover{color:#9c27b0!important}
+.w3-text-deep-purple,.w3-hover-text-deep-purple:hover{color:#673ab7!important}
+.w3-text-red,.w3-hover-text-red:hover{color:#f44336!important}
+.w3-text-sand,.w3-hover-text-sand:hover{color:#fdf5e6!important}
+.w3-text-teal,.w3-hover-text-teal:hover{color:#009688!important}
+.w3-text-yellow,.w3-hover-text-yellow:hover{color:#d2be0e!important}
+.w3-text-white,.w3-hover-text-white:hover{color:#fff!important}
+.w3-text-black,.w3-hover-text-black:hover{color:#000!important}
+.w3-text-grey,.w3-hover-text-grey:hover,.w3-text-gray,.w3-hover-text-gray:hover{color:#757575!important}
+.w3-text-light-grey,.w3-hover-text-light-grey:hover,.w3-text-light-gray,.w3-hover-text-light-gray:hover{color:#f1f1f1!important}
+.w3-text-dark-grey,.w3-hover-text-dark-grey:hover,.w3-text-dark-gray,.w3-hover-text-dark-gray:hover{color:#3a3a3a!important}
+.w3-border-amber,.w3-hover-border-amber:hover{border-color:#ffc107!important}
+.w3-border-aqua,.w3-hover-border-aqua:hover{border-color:#00ffff!important}
+.w3-border-blue,.w3-hover-border-blue:hover{border-color:#2196F3!important}
+.w3-border-light-blue,.w3-hover-border-light-blue:hover{border-color:#87CEEB!important}
+.w3-border-brown,.w3-hover-border-brown:hover{border-color:#795548!important}
+.w3-border-cyan,.w3-hover-border-cyan:hover{border-color:#00bcd4!important}
+.w3-border-blue-grey,.w3-hover-border-blue-grey:hover,.w3-border-blue-gray,.w3-hover-border-blue-gray:hover{border-color:#607d8b!important}
+.w3-border-green,.w3-hover-border-green:hover{border-color:#4CAF50!important}
+.w3-border-light-green,.w3-hover-border-light-green:hover{border-color:#8bc34a!important}
+.w3-border-indigo,.w3-hover-border-indigo:hover{border-color:#3f51b5!important}
+.w3-border-khaki,.w3-hover-border-khaki:hover{border-color:#f0e68c!important}
+.w3-border-lime,.w3-hover-border-lime:hover{border-color:#cddc39!important}
+.w3-border-orange,.w3-hover-border-orange:hover{border-color:#ff9800!important}
+.w3-border-deep-orange,.w3-hover-border-deep-orange:hover{border-color:#ff5722!important}
+.w3-border-pink,.w3-hover-border-pink:hover{border-color:#e91e63!important}
+.w3-border-purple,.w3-hover-border-purple:hover{border-color:#9c27b0!important}
+.w3-border-deep-purple,.w3-hover-border-deep-purple:hover{border-color:#673ab7!important}
+.w3-border-red,.w3-hover-border-red:hover{border-color:#f44336!important}
+.w3-border-sand,.w3-hover-border-sand:hover{border-color:#fdf5e6!important}
+.w3-border-teal,.w3-hover-border-teal:hover{border-color:#009688!important}
+.w3-border-yellow,.w3-hover-border-yellow:hover{border-color:#ffeb3b!important}
+.w3-border-white,.w3-hover-border-white:hover{border-color:#fff!important}
+.w3-border-black,.w3-hover-border-black:hover{border-color:#000!important}
+.w3-border-grey,.w3-hover-border-grey:hover,.w3-border-gray,.w3-hover-border-gray:hover{border-color:#9e9e9e!important}
+.w3-border-light-grey,.w3-hover-border-light-grey:hover,.w3-border-light-gray,.w3-hover-border-light-gray:hover{border-color:#f1f1f1!important}
+.w3-border-dark-grey,.w3-hover-border-dark-grey:hover,.w3-border-dark-gray,.w3-hover-border-dark-gray:hover{border-color:#616161!important}
+.w3-border-pale-red,.w3-hover-border-pale-red:hover{border-color:#ffe7e7!important}.w3-border-pale-green,.w3-hover-border-pale-green:hover{border-color:#e7ffe7!important}
+.w3-border-pale-yellow,.w3-hover-border-pale-yellow:hover{border-color:#ffffcc!important}.w3-border-pale-blue,.w3-hover-border-pale-blue:hover{border-color:#e7ffff!important} \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/WEB-INF/views/index.jsp b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/WEB-INF/views/index.jsp
new file mode 100644
index 0000000..f479ff9
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/WEB-INF/views/index.jsp
@@ -0,0 +1,69 @@
+<!-- /*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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=========================================================
+*/
+ -->
+<!-- index.html -->
+<!DOCTYPE html>
+<html ng-app="myApp">
+ <head>
+ <meta charset="utf-8">
+ <!-- CSS -->
+ <script src="./node_modules/jquery.min.js"></script>
+ <script src="./node_modules/tether.min.js" ></script>
+ <link rel="stylesheet" href="./node_modules/bootstrap-3.3.7/dist/css/bootstrap.min.css">
+ <script src="./node_modules/bootstrap-3.3.7/dist/js/bootstrap.min.js"></script>
+ <link rel="stylesheet" href="/style/sdnc-style.css">
+ <!-- JS -->
+ <!-- load angular,date-time picker,pagination,growl and ui-router -->
+ <script src = "./node_modules/angular.min.js"></script>
+ <script src = "./node_modules/angular-route.min.js"></script>
+ <script src="./node_modules/angular-utils-pagination/dirPagination.js"></script>
+ <script src="./node_modules/ng-csv/build/ng-csv.min.js"></script>
+ <script src="./node_modules/angular-sanitize.min.js"></script>
+ <link rel="stylesheet" href="./node_modules/angularjs-datetime-picker/angularjs-datetime-picker.css" />
+ <script src="./node_modules/angularjs-datetime-picker/angularjs-datetime-picker.js"></script>
+ <script data-require="jquery@*" data-semver="2.1.4" src="https://code.jquery.com/jquery-2.1.4.js"></script>
+ <script src="./node_modules/angular-utils-pagination/dirPagination.js"></script>
+ <script src="./js/app.js"></script>
+ <script src="./js/sdnc-controller/sdnc-viewreport-controller.js"></script>
+ <script src="./js/sdnc-controller/sdnc-validationTest-controller.js"></script>
+ <script src="./js/sdnc-services/sdnc-viewReport-service.js"></script>
+ <script src="./js/sdnc-services/sdnc-validationTest-service.js"></script>
+ <script src="./node_modules/angular-growl.min.js" ></script>
+ <script src="./node_modules/ng-ip-address/ngIpAddress.min.js" ></script>
+
+ <link rel="stylesheet" type="text/css" href="./node_modules/angular-growl.min.css">
+ <link rel="stylesheet" href="/style/w3.css">
+ </head>
+ <!-- apply our angular app -->
+ <body>
+ <div class="container">
+ <nav role="navigation" class="navbar navbar-default">
+ <div class="navbar-header" style="background-color:#DCDCDC;font-size: 15px;font-weight: bold;">
+ <ul class="nav navbar-nav">
+ <li ng-class='active'><a href="#testValidation">CERTIFICATION TEST</a></li>
+ <li><a href="#testReports">VIEW ALL REPORTS</a></li>
+ <ul>
+ </div>
+ <nav>
+ <!-- views will be injected here -->
+ <div ng-view></div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/app.js b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/app.js
new file mode 100644
index 0000000..82fac46
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/app.js
@@ -0,0 +1,47 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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=========================================================
+*/
+
+// app.js This is first entry point for the application
+// =============================================================================
+var myApp = angular.module('myApp', ['ngRoute', 'ngSanitize', 'ngCsv', 'angularUtils.directives.dirPagination', 'angular-growl','ng-ip-address']);
+
+// configuring our routes
+// =============================================================================
+myApp.config(['$routeProvider', function($routeProvider) {
+
+ //Called when user select pre validation test from the UI
+ $routeProvider.
+ when('/testValidation', {
+ templateUrl: 'form-validationTest.html',
+ controller: 'TestController'
+ }).
+ when('/', {
+ templateUrl: 'form-validationTest.html',
+ controller: 'TestController'
+ }).
+ //Called when user select view test report from the UI
+ when('/testReports', {
+ templateUrl: 'form-viewReport.html',
+ controller: 'ReportController'
+ }).
+ otherwise({
+ redirectTo: 'form-validationTest.html'
+ });
+}]); \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/sdnc-controller/sdnc-validationTest-controller.js b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/sdnc-controller/sdnc-validationTest-controller.js
new file mode 100644
index 0000000..9d3f253
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/sdnc-controller/sdnc-validationTest-controller.js
@@ -0,0 +1,243 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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=========================================================
+*/
+
+myApp.controller('TestController', ['$scope', '$http', 'growl', 'viewReportService', 'validationTestService', function($scope, $http, growl, viewReportService, validationTestService) {
+
+ $scope.showTestReport = false;
+
+ //Input data for validation test dropdwon
+ var validationTestList = [{
+ "typeId": 1,
+ "validationType": "Network Layer",
+ "Selected": false
+ },
+ {
+ "typeId": 2,
+ "validationType": "Protocol Layer",
+ "Selected": false
+ }
+ ];
+
+ $scope.validationTestList = validationTestList;
+
+
+ $scope.getselectval = function() {
+ $scope.selectedvalues = 'Name: ' + $scope.selitem.validationType + ' Id: ' + $scope.selitem.typeId;
+ }
+
+ $scope.showError = false;
+ $scope.errorMessage = "";
+ $scope.showSuccess = false;
+ $scope.successMessage = "";
+ $scope.showWarning = false;
+ $scope.warningMessage = "";
+ $scope.showInfo = false;
+ $scope.infoMessage = "";
+ $scope.ShowResult = false;
+ $scope.allowTestSelection = false;
+ $scope.hostNamePattern = /([a-z0-9](.[a-z0-9-]*[a-z0-9]))/;
+
+
+ //service call to fetch the all the test name
+ $scope.getAllVNF = function() {
+
+ validationTestService.getAllVNF().then(function(data) {
+ if (data != null) {
+ console.log(data);
+ $scope.objvnfList = data.vnfList;
+ console.log("--TestController:getAllVNF called--" + $scope.objvnfList);
+ $scope.allowTestSelection = true;
+ } else {
+ $scope.showWarninf = true;
+ $scope.warningMessage = "No VNF is eligible for confirgruation!!!";
+ growl.error($scope.warningMessage, {
+ title: 'Warning!'
+ });
+ }
+ });
+ };
+ $scope.getAllVNF();
+
+ //Called when user selects a test type
+ $scope.updateSelection = function(position, items, valType) {
+ angular.forEach(items, function(val, index) {
+ if (position != index)
+ val.checked = false;
+ $scope.selectedTest = valType;
+ console.log("--TestController::updateSelection--", $scope.selectedTest);
+ });
+
+ if ($scope.IPAddress != null && $scope.HostName != null && valType != null) {
+ $scope.showError = false;
+ }
+ }
+
+
+ //Called when user clicks on runtest
+ $scope.runTest = function() {
+
+ $scope.showError = false;
+ $scope.vnfSelected = [];
+ $scope.testSelected = [];
+
+ var message = "";
+ for (var i = 0; i < $scope.validationTestList.length; i++) {
+ if ($scope.validationTestList[i].Selected) {
+ var typeId = $scope.validationTestList[i].typeId;
+ var validationType = $scope.validationTestList[i].validationType;
+ message += "typeId: " + typeId + " validationType: " + validationType + "\n";
+ console.log("--TestController::Runtest--", message);
+ var testDetails = {};
+ testDetails.typeId = typeId;
+ testDetails.validationType = validationType;
+ $scope.testSelected.push(testDetails);
+ }
+ }
+ console.log("--TestController::Runtest--", JSON.stringify($scope.testSelected));
+
+ var vnfDetails = {};
+ if ($scope.IPAddress != null && $scope.HostName != null && $scope.testSelected.length >= 1) {
+ vnfDetails.IpAddress = $scope.IPAddress;
+ vnfDetails.HostName = $scope.HostName;
+ $scope.vnfSelected.push(vnfDetails);
+ console.log("--TestController::Runtest--", JSON.stringify($scope.vnfSelected));
+
+ //Call the validation test service with json file and testType as the parameter
+
+ validationTestService.runPretest($scope.vnfSelected, $scope.testSelected).then(function(response) {
+ console.log("--TestController::runTest--", JSON.stringify(response));
+ //in case of success, build the model object to store the service output here
+ if (response.status === 200) {
+ if (response.preTestResponse != null && response.preTestResponse.length >= 1) {
+ $scope.ShowResult = true;
+ $scope.createTestModel(response.preTestResponse);
+ $scope.showMessage(response.preTestResponse);
+
+ } else {
+ console.log(response);
+ $scope.showError = true;
+ $scope.errorMessage = "Something went wrong!!!";
+ growl.error($scope.errorMessage, {
+ title: 'Error!'
+ });
+ }
+ } else {
+ console.log(response);
+ $scope.showError = true;
+ $scope.errorMessage = "Pre test validation failed!!! Check the report for more details";
+ growl.error($scope.errorMessage, {
+ title: 'Error!'
+ });
+ }
+ },
+ function(response) {
+ console.log("--TestController--", response);
+ });
+ } else {
+ $scope.showError = true;
+ $scope.errorMessage = "Please provide the inputs for VNF and test to be performed!!";
+ growl.error($scope.errorMessage, {
+ title: 'Error!'
+ });
+ }
+
+ };
+
+ $scope.showMessage=function(data){
+
+ if(angular.isDefined(data) && data.length>=1){
+
+ angular.forEach(data, function(value, key){
+ if(value.status == "unreachable"){
+ console.log("--TestController::showMessage--",value.status);
+ $scope.showError = true;
+ $scope.errorMessage = "PreTest validation Failed, Please check logs for further details!!!";
+ growl.error($scope.errorMessage, {
+ title: 'Error!'
+ });
+ }
+ else
+ {
+ $scope.showSuccess = true;
+ $scope.successMessage = "Pre test validation completed!!";
+ growl.success($scope.successMessage, {
+ title: 'Success!'
+ });
+ }
+
+ });
+
+ }
+ }
+
+ //Function to build the UI model to be shown
+ $scope.createTestModel = function(result) {
+
+ $scope.showError = false;
+ $scope.showWarning = false;
+ $scope.objPreTestModel = result;
+ $scope.objPreTest = [];
+
+
+ if ($scope.objPreTestModel.length > 1) {
+ for (var i = 0; i < $scope.objPreTestModel.length; i++) {
+ var objTestReport = {};
+ objTestReport.ipaddress = $scope.objPreTestModel[i].ipaddress;
+ objTestReport.status = $scope.objPreTestModel[i].status;
+ objTestReport.testtype = $scope.objPreTestModel[i].testtype;
+ objTestReport.statistics = $scope.objPreTestModel[i].statistics;
+ objTestReport.avgTime = $scope.objPreTestModel[i].avgTime;
+
+
+ if ($scope.objPreTestModel[i].testtype === "Network Layer") {
+ if (objTestReport.statistics != null) {
+ //fetching the statistics to show in progress bar
+ var statistics = objTestReport.statistics;
+ statistics = statistics.split("%");
+ objTestReport.statistics = statistics[0];
+ if (objTestReport.statistics == 0) {
+ objTestReport.statisticPer = parseInt(objTestReport.statistics) + 50;
+ } else
+ objTestReport.statisticPer = objTestReport.statistics;
+ }
+
+ //fetching the avg time to show in progress bar
+ if (objTestReport.avgTime != null) {
+ var avgTime = objTestReport.avgTime;
+ avgTime = avgTime.split("=");
+ var Testtime = avgTime[1];
+ objTestReport.avgTime = Testtime.slice(0, -2).trim();
+ console.log("--TestController::createTestModel--", objTestReport.avgTime);
+ if (objTestReport.avgTime < 50) {
+ objTestReport.avgTimePer = parseInt(objTestReport.avgTime) + 10;
+ } else
+ objTestReport.avgTimePer = objTestReport.avgTime;
+
+ }
+ }
+ $scope.objPreTest.push(objTestReport);
+ console.log("--TestController::createTestModel--", JSON.stringify($scope.objPreTest));
+ }
+ }
+ console.log("--TestController::createTestModel::final PreTestModel--" + JSON.stringify($scope.objPreTest));
+
+ }
+
+}]); \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/sdnc-controller/sdnc-viewreport-controller.js b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/sdnc-controller/sdnc-viewreport-controller.js
new file mode 100644
index 0000000..a3eae18
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/sdnc-controller/sdnc-viewreport-controller.js
@@ -0,0 +1,171 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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=========================================================
+*/
+
+myApp.controller('ReportController', ['$scope', '$http', 'viewReportService', 'growl', function($scope, $http, viewReportService, growl) {
+ $scope.isDisabled = true;
+ $scope.pagination = false;
+ $scope.selectedDevice;
+ $scope.ShowResult = false;
+ $scope.dateValidation = false;
+ $scope.NoSearchResult = false;
+ $scope.showError = false;
+ $scope.errorMessage = "";
+ $scope.showSuccess = false;
+ $scope.successMessage = "";
+ $scope.showWarning = false;
+ $scope.warningMessage = "";
+ $scope.showExecutionDetails = true;
+
+ //THIS FUNCTION WILL BE CALLED WHEN USER CLICK SUBMIT FROM UI
+ $scope.getReports = function(deviceName, startdate, enddate) {
+
+ $scope.ShowResult = false;
+ if (new Date(startdate) > new Date(enddate)) {
+ $scope.dateValidation = true;
+ $scope.showError = true;
+ $scope.errorMessage = "Start date cannot be greated than End date";
+ growl.error($scope.errorMessage, {
+ title: 'Error!'
+ });
+ return false;
+ }
+ var date = new Date(startdate);
+ if (angular.isDefined(deviceName)) {
+ $scope.DeviceName = deviceName;
+ }
+ if (angular.isDefined(startdate)) {
+ $scope.startDate = startdate;
+ }
+ if (angular.isDefined(enddate)) {
+ $scope.endDate = enddate;
+ }
+
+ //to generate the dynamic file name while downloading the report
+ //var date = new Date();
+ // $scope.fileName = $scope.TestName + " " + $scope.TestName + date.csv;
+ // console.log("FileName", $scope.fileName);
+
+ if (deviceName != null && startdate != null && enddate != null) {
+
+ //service call to fetch the reports start date,end date,test name
+ viewReportService.getData($scope.startDate, $scope.endDate, $scope.DeviceName).then(function(result) {
+ console.log("--ReportController::getdata called from controler--", JSON.stringify(result.data));
+ if (result.status == 200) {
+ if (result.data != null && result.data.length >= 1) {
+ //in case of success, build the model object to store the service output here
+ $scope.createTestReportModel(result.data);
+ } else {
+ $scope.ShowResult = false;
+ $scope.showWarning = true;
+ $scope.warningMessage = "No result found for specified Device name !!";
+ growl.warning($scope.warningMessage, {
+ title: 'Warning!'
+ });
+ }
+ } else {
+ $scope.ShowResult = false;
+ $scope.showWarning = true;
+ $scope.warningMessage = "No result found for specified Device name !!";
+ growl.warning($scope.warningMessage, {
+ title: 'Warning!'
+ });
+ }
+ },
+ function(response) {
+ console.log("--ReportController::getdata::Error--", response);
+ });
+ }
+ }
+
+
+ //FUNCTION WILL BE CALLED WHEN USER CLICK DOWNLOAD FROM UI
+ $scope.exportToExcel = function(tableId) { // ex: '#my-table'
+ var exportHref = Excel.tableToExcel(tableId, 'export');
+ $timeout(function() {
+ location.href = exportHref;
+ }, 100); // trigger download
+
+ console.log("--ReportController::exportToexcel--");
+ }
+
+ $scope.createTestReportModel = function(result) {
+
+ $scope.showError = false;
+ $scope.showWarning = false;
+ $scope.objTestReportModel = result;
+ $scope.objTestModel = [];
+
+
+ if ($scope.objTestReportModel.length >= 1) {
+ for (var i = 0; i < $scope.objTestReportModel.length; i++) {
+ var objTestReport = {};
+ objTestReport.testid = $scope.objTestReportModel[i].testid;
+ objTestReport.deviceid = $scope.objTestReportModel[i].deviceid;
+ objTestReport.deviceName = $scope.objTestReportModel[i].deviceName;
+ objTestReport.result = $scope.objTestReportModel[i].result;
+ objTestReport.timeStamp = $scope.objTestReportModel[i].timeStamp;
+ objTestReport.testname = $scope.objTestReportModel[i].testName;
+
+ var executionDetails = {};
+ $scope.tmp = angular.fromJson($scope.objTestReportModel[i].execuationDetails);
+ executionDetails = $scope.tmp.output;//$scope.objTestReportModel[i].execuationDetails.output;
+
+ if ($scope.objTestReportModel[i].testName === "Network Layer") {
+ //fetching the statistics to show in progress bar
+ var statistics = executionDetails.statistics;
+ objTestReport.status = executionDetails.status;
+ objTestReport.statistics = executionDetails.statistics;
+ statistics = statistics.split("%");
+ executionDetails.statistics = statistics[0];
+ if (executionDetails.statistics == 0) {
+ executionDetails.statisticPer = parseInt(executionDetails.statistics) + 50;
+ } else
+ executionDetails.statisticPer = executionDetails.statistics;
+
+ console.log("--ReportController::CreateTestReportModel--", executionDetails.statistics);
+
+ //fetching the avg time to show in progress bar
+ var avgTime = executionDetails.avgTime;
+ objTestReport.avgTime = executionDetails.avgTime;
+ avgTime = avgTime.split("=");
+ var Testtime = avgTime[1];
+ executionDetails.avgTime = Testtime.slice(0, -2).trim();
+ console.log("--ReportController::CreateTestReportModel--", executionDetails.avgTime);
+ if (executionDetails.avgTime < 50) {
+ executionDetails.avgTimePer = parseInt(executionDetails.avgTime) + 10;
+ } else
+ executionDetails.avgTimePer = executionDetails.avgTime;
+
+ }
+
+
+ objTestReport.executionDetails = executionDetails;
+ $scope.objTestModel.push(objTestReport);
+ console.log("--ReportController::CreateTestReportModel--", JSON.stringify($scope.objTestModel));
+
+ }
+ $scope.ShowResult = true;
+ $scope.pagination = true;
+ }
+ console.log("--ReportController::createTestReportModel::final TestReportModel--" + JSON.stringify($scope.objTestModel));
+ $scope.csvOrder = ['testname', 'deviceName', 'timeStamp', 'status', 'statistics', 'avgTime', 'result'];
+
+ }
+}]); \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/sdnc-services/sdnc-validationTest-service.js b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/sdnc-services/sdnc-validationTest-service.js
new file mode 100644
index 0000000..c82dc92
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/sdnc-services/sdnc-validationTest-service.js
@@ -0,0 +1,78 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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=========================================================
+*/
+myApp.service('validationTestService', ['$http', function($http) {
+
+
+ this.getAllVNF = function() {
+ var testlist = {};
+ return $http.get('./sdnc-stubs/getAllVNF.json')
+ .then(function(response) {
+ console.log("---validationTestService::getAllVNF::TestResponse---" + JSON.stringify(response));
+ vnflist = response.data;
+ return vnflist;
+ },
+ function(response) {
+ console.log("validationTestService::getAllVNF::Status Code", response.status);
+ return response;
+ });
+
+ };
+
+ this.runPretest = function(vnfList, validationTestType) {
+
+
+ var data = {};
+ data.vnfList = vnfList;
+ data.validationTestType = validationTestType;
+
+ var config = {
+ params: data,
+ headers: {
+ 'Accept': 'application/json'
+ }
+ };
+
+ console.log("validationTestService::runPretest::config", JSON.stringify(config));
+
+ // Call the pre validation service
+ var request = {
+ method: 'POST',
+ url: '/runtest',
+ data: data,
+ headers: {
+ 'Content-Type': undefined
+ }
+ };
+
+ // // SEND VNF FOR VALIDATION
+ return $http(request)
+ .then(function(response) {
+ console.log("---validationTestService::uploadFile::Response---" + JSON.stringify(response));
+ return response.data;
+ },
+ function(response) {
+ console.log("--validationTestService::Status Code--", response.status);
+ return response;
+ });
+
+
+ }
+
+}]); \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/sdnc-services/sdnc-viewReport-service.js b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/sdnc-services/sdnc-viewReport-service.js
new file mode 100644
index 0000000..3b49fca
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/js/sdnc-services/sdnc-viewReport-service.js
@@ -0,0 +1,78 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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=========================================================
+*/
+
+myApp.service('viewReportService', ['$http', function($http) {
+ this.getData = function(startDate, endDate, deviceName) {
+
+ var data = {};
+ if (startDate != null && endDate != null && deviceName != null) {
+
+ data.startdate = startDate;
+ data.enddate = endDate;
+ data.devicename = deviceName;
+
+ }
+ var config = {
+ params: '',
+ headers: {
+ 'Accept': 'application/json'
+ }
+ };
+
+ var sdate = new Date(startDate);
+ var edate = new Date(endDate);
+
+ var objTestList = {};
+ // return $http.get('sdnc-stubs/getAllReports.json', config)
+ return $http.get('/findReportByDeviceName/'+sdate+'/'+edate+'/'+deviceName,config)
+ .then(function(result) {
+ console.log("--viewReportService::getdata::Testresponse--", JSON.stringify(result));
+ objTestList = result.data;
+ console.log("--viewReportService::getdata::Testresponse--", +JSON.stringify(objTestList));
+ return result;
+ });
+
+ };
+
+
+ this.getAllDevices = function() {
+ var deviceResponse = {};
+ return $http.get('sdnc-stubs/getAllDevices.json')
+ .then(function(response) {
+ console.log("--getAlldevices" + JSON.stringify(response));
+ deviceResponse = response.data;
+ console.log("----viewReportService::getAlldevices::deviceResponse--" + JSON.stringify(deviceResponse));
+ return deviceResponse;
+ });
+
+ };
+
+
+ this.getAllTest = function() {
+ var testlist = {};
+ return $http.get('sdnc-stubs/getAllTest.json')
+ .then(function(response) {
+ console.log("---viewReportService::getAllTest::TestResponse---" + JSON.stringify(response));
+ testlist = response.data;
+ return testlist;
+ });
+
+ };
+}]); \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/package.json b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/package.json
new file mode 100644
index 0000000..ffb9715
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/main/webapp/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "myapp",
+ "version": "1.0.0",
+ "description": "list of node modules for myapp",
+ "main": "app.js",
+ "scripts": {
+ "test": "standard"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/NMSVishal/SDNCReports.git"
+ },
+ "author": "",
+ "license": "ISC",
+ "bugs": {
+ "url": "https://github.com/NMSVishal/SDNCReports/issues"
+ },
+ "homepage": "https://github.com/NMSVishal/SDNCReports#readme",
+ "dependencies": {
+ "angular": "^1.6.9",
+ "angular-growl": "^0.1.0",
+ "angular-mocks": "^1.6.9",
+ "angular-route": "^1.6.9",
+ "angular-sanitize": "^1.6.9",
+ "angular-utils-pagination": "^0.11.1",
+ "angularjs-datetime-picker": "^0.1.16",
+ "bootstrap": "^4.0.0",
+ "jquery": "^3.3.1",
+ "ng-csv": "^0.3.6",
+ "ng-ip-address": "^1.1.12"
+ }
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/test/java/com/onap/sdnc/reports/controller/ReportControllerTest.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/test/java/com/onap/sdnc/reports/controller/ReportControllerTest.java
new file mode 100644
index 0000000..8b407cc
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/test/java/com/onap/sdnc/reports/controller/ReportControllerTest.java
@@ -0,0 +1,107 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.controller;
+
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+import javax.transaction.Transactional;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.onap.sdnc.reports.Application;
+import com.onap.sdnc.reports.controller.ReportController;
+import com.onap.sdnc.reports.model.DeviceConfig;
+import com.onap.sdnc.reports.model.PreTestConfig;
+import com.onap.sdnc.reports.rest.model.PreTestModel;
+import com.onap.sdnc.reports.service.IReportService;
+
+import static org.mockito.Mockito.when;
+import org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureTestDatabase;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+
+//@RunWith(SpringRunner.class)
+//@ContextConfiguration(classes=Application.class)
+//@WebMvcTest(ReportController.class)
+//@Transactional
+//@DataJpaTest
+//@AutoConfigureTestDatabase(replace=AutoConfigureTestDatabase.Replace.NONE)
+public class ReportControllerTest {
+
+/* @Autowired
+ private MockMvc mvc;
+
+ @MockBean
+ private IReportService reportService;
+
+ private Date startDate,endDate;
+
+ @Test
+ public void whenFindReportByDeviceName_thenReturnThis()
+ throws Exception {
+ Calendar calendar=Calendar.getInstance();
+
+ calendar.add(Calendar.DATE, -7);
+ calendar.add(Calendar.HOUR_OF_DAY, 00);
+ calendar.add(Calendar.MINUTE, 00);
+ calendar.add(Calendar.SECOND, 00);
+ calendar.add(Calendar.MILLISECOND, 00);
+ startDate=calendar.getTime();
+
+ Calendar endDateCalendar=Calendar.getInstance();
+
+ endDateCalendar.add(Calendar.HOUR_OF_DAY, 23);
+ endDateCalendar.add(Calendar.MINUTE, 59);
+ calendar.add(Calendar.SECOND, 00);
+ endDateCalendar.add(Calendar.MILLISECOND, 00);
+ endDate=endDateCalendar.getTime();
+
+ PreTestModel preTestModel=new PreTestModel(1, 1, "NetWorkTest", "Router", "Ping Got Successful", "Pass",endDate);
+
+ List<PreTestModel> allTests = Arrays.asList(preTestModel);
+
+ //given(reportService.findReportByDeviceName(startDate,endDate,"Router")).willReturn(allTests);
+
+ when(reportService.findReportByDeviceName(startDate,endDate,"Router")).thenReturn(allTests);
+
+ mvc.perform(get("/findReportByDeviceName/{startDate}/{endDate}/{deviceName",startDate,endDate,"Router")
+ .contentType(MediaType.APPLICATION_JSON))
+ .andExpect(status().isOk());
+ }*/
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/test/java/com/onap/sdnc/reports/repository/PreTestConfigRepositoryTest.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/test/java/com/onap/sdnc/reports/repository/PreTestConfigRepositoryTest.java
new file mode 100644
index 0000000..e70b04b
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/test/java/com/onap/sdnc/reports/repository/PreTestConfigRepositoryTest.java
@@ -0,0 +1,145 @@
+package com.onap.sdnc.reports.repository;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.transaction.Transactional;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.onap.sdnc.reports.Application;
+//import com.onap.sdnc.reports.model.DeviceConfig;
+//import com.onap.sdnc.reports.model.PreTestConfig;
+import com.onap.sdnc.reports.model.DeviceConfig;
+import com.onap.sdnc.reports.model.PreTestConfig;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+//@AutoConfigureTestDatabase(replace=AutoConfigureTestDatabase.Replace.NONE)
+@DataJpaTest
+@Transactional
+public class PreTestConfigRepositoryTest {
+
+ private static final Logger logger = LogManager.getLogger(Application.class);
+
+ @Autowired
+ private PreTestConfigRepository preTestRepository;
+
+ @Autowired
+ private TestEntityManager entityManager;
+
+
+ @Test
+ public void whenFindByDeviceName_thenReturnRouter() {
+ // given
+
+
+ DeviceConfig deviceConfig=new DeviceConfig();
+ //deviceConfig.setId(3);
+ deviceConfig.setDeviceName("Router");
+ deviceConfig.setPreTestConfig(null);
+ deviceConfig.setProtocolConfig(null);
+ deviceConfig.setCreationDate(new Date().toLocaleString());
+
+ entityManager.persist(deviceConfig);
+ entityManager.flush();
+
+ PreTestConfig obj=new PreTestConfig();
+ obj.setDevice(deviceConfig);
+ obj.setExecuationDetails("Ping Successful");
+ obj.setResult("Pass");
+ //obj.setTestId(8);
+ obj.setTestName("Network Layer");
+ obj.setTimestamp(new Date());
+
+ Set<PreTestConfig> set=new HashSet<>();
+ set.add(obj);
+ deviceConfig.setPreTestConfig( set);
+ entityManager.persistAndFlush(deviceConfig);
+
+ entityManager.persist(obj);
+ entityManager.flush();
+
+ Calendar calendar=Calendar.getInstance();
+
+ calendar.add(Calendar.DATE, -7);
+ Date startDate=calendar.getTime();
+ Date endDate=new Date();
+ // when
+ List<PreTestConfig> preTestList = preTestRepository.findReportByDeviceName(startDate,endDate,"Router");
+
+ assertThat(preTestList.get(0).getTestId())
+ .isEqualTo(obj.getTestId());
+
+ System.out.println("Status : "+(preTestList.get(0).getTestId()==obj.getTestId()));
+ }
+
+ /*@Test
+ public void whenFindByDeviceName_thenReturnRouter() {
+ // given
+
+ PreTestConfigRepository preTestRepository= mock(PreTestConfigRepository.class);
+ DeviceConfig deviceConfig=new DeviceConfig();
+ //deviceConfig.setId(3);
+ deviceConfig.setDeviceName("Router");
+ deviceConfig.setPreTestConfig(null);
+ deviceConfig.setProtocolConfig(null);
+ deviceConfig.setCreationDate(new Date().toLocaleString());
+
+
+
+ PreTestConfig obj=new PreTestConfig();
+ obj.setDevice(deviceConfig);
+ obj.setExecuationDetails("Ping Successful");
+ obj.setResult("Pass");
+ //obj.setTestId(8);
+ obj.setTestName("Network Layer");
+ obj.setTimestamp(new Date());
+
+ Set<PreTestConfig> set=new HashSet<>();
+ set.add(obj);
+ deviceConfig.setPreTestConfig( set);
+
+ List<PreTestConfig> dummyInput=new ArrayList<>();
+ dummyInput.add(obj);
+
+ Calendar calendar=Calendar.getInstance();
+
+ calendar.add(Calendar.DATE, -7);
+ Date startDate=calendar.getTime();
+ Date endDate=new Date();
+ // when
+
+ when(preTestRepository.findReportByDeviceName(startDate,endDate,"Router")).thenReturn(dummyInput);
+
+ List<PreTestConfig> preTestList = preTestRepository.findReportByDeviceName(startDate,endDate,"Router");
+
+ assertThat(preTestList.get(0).getTestId())
+ .isEqualTo(obj.getTestId());
+
+ logger.info("Status : "+(preTestList.get(0).getTestId()==obj.getTestId()));
+ }*/
+
+
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/test/java/com/onap/sdnc/reports/service/ReportServiceImplTest.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/test/java/com/onap/sdnc/reports/service/ReportServiceImplTest.java
new file mode 100644
index 0000000..b688f58
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/test/java/com/onap/sdnc/reports/service/ReportServiceImplTest.java
@@ -0,0 +1,204 @@
+package com.onap.sdnc.reports.service;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+import javax.transaction.Transactional;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.TestConfiguration;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.onap.sdnc.reports.Application;
+import com.onap.sdnc.reports.model.DeviceConfig;
+import com.onap.sdnc.reports.model.PreTestConfig;
+import com.onap.sdnc.reports.repository.PreTestConfigRepository;
+import com.onap.sdnc.reports.rest.model.PreTestModel;
+
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+@DataJpaTest
+@Transactional
+public class ReportServiceImplTest {
+
+ private static final Logger logger = LogManager.getLogger(Application.class);
+
+ private Date startDate,endDate;
+
+/* @TestConfiguration
+ static class ReportServiceImplTestContextConfiguration
+ {
+ @Bean
+ public IReportService reportService()
+ {
+ return new ReportServiceImpl();
+ }
+ }
+
+ @Autowired
+ private IReportService reportService;
+
+ @MockBean
+ private PreTestConfigRepository preTestConfigRepository;
+
+ @Before
+ public void setUp()
+ {
+ DeviceConfig deviceConfig=new DeviceConfig();
+ deviceConfig.setDeviceName("Router");
+ deviceConfig.setPreTestConfig(null);
+ deviceConfig.setProtocolConfig(null);
+ deviceConfig.setCreationDate(new Date().toLocaleString());
+
+ PreTestConfig obj=new PreTestConfig();
+ obj.setDevice(deviceConfig);
+ obj.setExecuationDetails("Ping Successful");
+ obj.setResult("Pass");
+
+ obj.setTestName("Network Layer");
+ obj.setTimestamp(new Date());
+
+
+ Calendar calendar=Calendar.getInstance();
+
+ calendar.add(Calendar.DATE, -7);
+ calendar.add(Calendar.HOUR_OF_DAY, 00);
+ calendar.add(Calendar.MINUTE, 00);
+ calendar.add(Calendar.SECOND, 00);
+ calendar.add(Calendar.MILLISECOND, 00);
+ startDate=calendar.getTime();
+
+ Calendar endDateCalendar=Calendar.getInstance();
+
+ endDateCalendar.add(Calendar.HOUR_OF_DAY, 23);
+ endDateCalendar.add(Calendar.MINUTE, 59);
+ calendar.add(Calendar.SECOND, 00);
+ endDateCalendar.add(Calendar.MILLISECOND, 00);
+ endDate=endDateCalendar.getTime();
+
+ System.out.println("Before Call : startDate "+startDate.toLocaleString() +" endDate : "+endDate.toLocaleString());
+ List<PreTestConfig> configList=new ArrayList<>();
+ configList.add(obj);
+ Mockito.when(preTestConfigRepository.findReportByDeviceName(startDate,endDate,"Router"))
+ .thenReturn(configList);
+ }
+
+
+ @Test
+ public void whenFindByDeviceName_thenReturPreTest()
+ {
+ int expectedTestId=0;
+ System.out.println("Test Call : startDate "+startDate.toLocaleString() +" endDate : "+endDate.toLocaleString());
+
+ List<PreTestModel> testList;
+ try {
+ testList = reportService.findReportByDeviceName(startDate,endDate,"Router");
+ assertThat(testList.get(0).getTestid())
+ .isEqualTo(expectedTestId);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+
+ }
+ */
+ /* @InjectMocks
+ private IReportService reportService;
+
+ @Mock
+ private PreTestConfigRepository preTestConfigRepository;*/
+
+ List<PreTestConfig> configList;
+
+ List<PreTestModel> dummyList;
+ @Before
+ public void setUp()
+ {
+ DeviceConfig deviceConfig=new DeviceConfig();
+ deviceConfig.setDeviceName("Router");
+ deviceConfig.setPreTestConfig(null);
+ deviceConfig.setProtocolConfig(null);
+ deviceConfig.setCreationDate(new Date().toLocaleString());
+
+ PreTestConfig obj=new PreTestConfig();
+ obj.setDevice(deviceConfig);
+ obj.setExecuationDetails("Ping Successful");
+ obj.setResult("Pass");
+
+ obj.setTestName("Network Layer");
+ obj.setTimestamp(new Date());
+
+ PreTestModel model=new PreTestModel(1, 1, "Protocol Layer", "Router", "{\"output\": {\"testresult\": \"pass\", \"status\": \"unreachable\"}}", "Pass", new Date());
+ Calendar calendar=Calendar.getInstance();
+
+ calendar.add(Calendar.DATE, -7);
+ calendar.add(Calendar.HOUR_OF_DAY, 00);
+ calendar.add(Calendar.MINUTE, 00);
+ calendar.add(Calendar.SECOND, 00);
+ calendar.add(Calendar.MILLISECOND, 00);
+ startDate=calendar.getTime();
+
+ Calendar endDateCalendar=Calendar.getInstance();
+
+ endDateCalendar.add(Calendar.HOUR_OF_DAY, 23);
+ endDateCalendar.add(Calendar.MINUTE, 59);
+ calendar.add(Calendar.SECOND, 00);
+ endDateCalendar.add(Calendar.MILLISECOND, 00);
+ endDate=endDateCalendar.getTime();
+
+ System.out.println("Before Call : startDate "+startDate.toLocaleString() +" endDate : "+endDate.toLocaleString());
+ configList=new ArrayList<>();
+ configList.add(obj);
+
+ dummyList=new ArrayList<>();
+ dummyList.add(model);
+
+ }
+
+ @Test
+ public void whenFindByDeviceName_thenReturPreTest()
+ {
+ IReportService reportService= mock(IReportService.class);
+ try {
+ when(reportService.findReportByDeviceName(startDate,endDate,"Router")).thenReturn(dummyList);
+ } catch (Exception e1) {
+
+ e1.printStackTrace();
+ }
+
+ int expectedTestId=1;
+
+ List<PreTestModel> testList;
+ try {
+ testList = reportService.findReportByDeviceName(startDate,endDate,"Router");
+ assertThat(testList.get(0).getTestid())
+ .isEqualTo(expectedTestId);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/test/resources/application.properties b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/test/resources/application.properties
new file mode 100644
index 0000000..b48a921
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_api/src/test/resources/application.properties
@@ -0,0 +1,56 @@
+#server.port = 9001
+
+
+
+# H2 DB Details
+spring.jpa.hibernate.ddl-auto = create-drop
+spring.jpa.database = HSQL
+spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.HSQLDialect
+spring.datasource.driverClassName = org.hsqldb.jdbcDriver
+spring.datasource.url: jdbc:hsqldb:mem:scratchdb
+spring.datasource.username =sa
+spring.datasource.password =sa
+
+
+# maria db details
+
+#spring.jackson.serialization.fail-on-empty-beans=false
+#server.tomcat.uri-encoding=utf-8
+#spring.datasource.continue-on-error=true
+#server.error.whitelabel.enabled=false
+#spring.mvc.view.prefix = /WEB-INF/views/
+#spring.mvc.view.suffix = .jsp
+
+#spring.datasource.url=jdbc:mysql://localhost:3306/dummyreports?useSSL=false
+#spring.datasource.url=jdbc:mariadb://localhost:3307/dummyReports
+#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
+#spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
+#spring.datasource.name=mysql
+#spring.jpa.database=mysql
+
+#spring.jpa.hibernate.ddl-auto=create
+#spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
+
+#spring.datasource.username=root
+#spring.datasource.password=root
+#spring.jpa.generate-ddl=true
+
+spring.datasource.tomcat.max-wait=20000
+spring.datasource.tomcat.max-active=50
+spring.datasource.tomcat.max-idle=20
+spring.datasource.tomcat.min-idle=15
+
+spring.jpa.show-sql=true
+
+
+
+# mysql db Details
+
+#spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardIm
+#spring.jpa.hibernate.ddl-auto=create
+#spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialect
+#spring.jpa.properties.hibernate.id.new_generator_mappings = false
+#spring.jpa.properties.hibernate.format_sql = true
+
+#logging.level.org.hibernate.SQL=DEBUG
+#logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.classpath b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.classpath
new file mode 100644
index 0000000..01a9d42
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.classpath
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="var" path="M2_REPO/javax/transaction/javax.transaction-api/1.2/javax.transaction-api-1.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/spring-context/4.3.9.RELEASE/spring-context-4.3.9.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/spring-aop/4.3.9.RELEASE/spring-aop-4.3.9.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/spring-beans/4.3.9.RELEASE/spring-beans-4.3.9.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/spring-core/4.3.9.RELEASE/spring-core-4.3.9.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/spring-expression/4.3.9.RELEASE/spring-expression-4.3.9.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/boot/spring-boot-starter-test/1.5.3.RELEASE/spring-boot-starter-test-1.5.3.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/boot/spring-boot-test/1.5.4.RELEASE/spring-boot-test-1.5.4.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/boot/spring-boot/1.5.4.RELEASE/spring-boot-1.5.4.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/boot/spring-boot-test-autoconfigure/1.5.4.RELEASE/spring-boot-test-autoconfigure-1.5.4.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/boot/spring-boot-autoconfigure/1.5.4.RELEASE/spring-boot-autoconfigure-1.5.4.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/jayway/jsonpath/json-path/2.2.0/json-path-2.2.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/minidev/json-smart/2.2.1/json-smart-2.2.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/minidev/accessors-smart/1.1/accessors-smart-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/4.12/junit-4.12.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/assertj/assertj-core/2.6.0/assertj-core-2.6.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/2.1/objenesis-2.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/skyscreamer/jsonassert/1.4.0/jsonassert-1.4.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/spring-test/4.3.9.RELEASE/spring-test-4.3.9.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/boot/spring-boot-starter-data-jpa/1.5.4.RELEASE/spring-boot-starter-data-jpa-1.5.4.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/boot/spring-boot-starter/1.5.4.RELEASE/spring-boot-starter-1.5.4.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/boot/spring-boot-starter-logging/1.5.4.RELEASE/spring-boot-starter-logging-1.5.4.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar"/>
+ <classpathentry kind="var" path="M2_REPO/ch/qos/logback/logback-core/1.1.11/logback-core-1.1.11.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/log4j-over-slf4j/1.7.25/log4j-over-slf4j-1.7.25.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/yaml/snakeyaml/1.17/snakeyaml-1.17.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/boot/spring-boot-starter-aop/1.5.4.RELEASE/spring-boot-starter-aop-1.5.4.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/aspectj/aspectjweaver/1.8.10/aspectjweaver-1.8.10.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/boot/spring-boot-starter-jdbc/1.5.4.RELEASE/spring-boot-starter-jdbc-1.5.4.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/tomcat/tomcat-jdbc/8.5.15/tomcat-jdbc-8.5.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/tomcat/tomcat-juli/8.5.15/tomcat-juli-8.5.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/spring-jdbc/4.3.9.RELEASE/spring-jdbc-4.3.9.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/spring-tx/4.3.9.RELEASE/spring-tx-4.3.9.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-core/5.0.12.Final/hibernate-core-5.0.12.Final.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/logging/jboss-logging/3.3.1.Final/jboss-logging-3.3.1.Final.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/javax/persistence/hibernate-jpa-2.1-api/1.0.0.Final/hibernate-jpa-2.1-api-1.0.0.Final.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/javassist/javassist/3.21.0-GA/javassist-3.21.0-GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.7/antlr-2.7.7.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jandex/2.0.0.Final/jandex-2.0.0.Final.jar"/>
+ <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/common/hibernate-commons-annotations/5.0.1.Final/hibernate-commons-annotations-5.0.1.Final.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/data/spring-data-jpa/1.11.4.RELEASE/spring-data-jpa-1.11.4.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/data/spring-data-commons/1.13.4.RELEASE/spring-data-commons-1.13.4.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/spring-orm/4.3.9.RELEASE/spring-orm-4.3.9.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/springframework/spring-aspects/4.3.9.RELEASE/spring-aspects-4.3.9.RELEASE.jar"/>
+ <classpathentry kind="var" path="M2_REPO/mysql/mysql-connector-java/5.1.42/mysql-connector-java-5.1.42.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/fasterxml/jackson/core/jackson-annotations/2.8.0/jackson-annotations-2.8.0.jar"/>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.project b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.project
new file mode 100644
index 0000000..95fb91b
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.project
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>sdnc_reports_dao</name>
+ <comment>Parent pom providing dependency and plugin management for applications
+ built with Maven. NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.</comment>
+ <projects/>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.wst.common.project.facet.core.builder</name>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ </buildCommand>
+ <buildCommand>
+ <name>org.springframework.ide.eclipse.core.springbuilder</name>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.springframework.ide.eclipse.core.springnature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+ </natures>
+</projectDescription> \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.settings/org.eclipse.core.resources.prefs b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..29abf99
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/test/java=UTF-8
+encoding//src/test/resources=UTF-8
+encoding/<project>=UTF-8
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.settings/org.eclipse.jdt.core.prefs b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..5ce4518
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,13 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.settings/org.eclipse.m2e.core.prefs b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.settings/org.eclipse.wst.common.project.facet.core.xml b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..d858295
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+ <installed facet="cloudfoundry.standalone.app" version="1.0"/>
+</faceted-project>
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/pom.xml b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/pom.xml
new file mode 100644
index 0000000..0134b37
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/pom.xml
@@ -0,0 +1,66 @@
+<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>
+ <artifactId>sdnc_reports_dao</artifactId>
+ <packaging>jar</packaging>
+
+ <parent>
+ <groupId>com.sdnc.reports</groupId>
+ <artifactId>sdnc_reports</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <scope>test</scope>
+ <version>1.5.3.RELEASE</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-data-jpa</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ </exclusion>
+ </exclusions>
+
+ </dependency>
+
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+
+ <!-- <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-tomcat</artifactId>
+ <scope>provided</scope>
+ </dependency> -->
+
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-annotations</artifactId>
+ </dependency>
+
+ <!-- <dependency>
+ <groupId>org.hibernate.javax.persistence</groupId>
+ <artifactId>hibernate-jpa-2.0-api</artifactId>
+ <version>1.0.1.Final</version>
+ </dependency> -->
+ <dependency>
+ <groupId>org.mariadb.jdbc</groupId>
+ <artifactId>mariadb-java-client</artifactId>
+ <version>1.1.7</version>
+</dependency>
+ </dependencies>
+</project> \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/DeviceConfig.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/DeviceConfig.java
new file mode 100644
index 0000000..2979de3
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/DeviceConfig.java
@@ -0,0 +1,109 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.model;
+
+import java.io.Serializable;
+import java.util.Set;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+@Entity
+//@Table(name = "deviceconfig",schema="testreports")
+@Table(name = "deviceconfig")
+public class DeviceConfig implements Serializable
+{
+ private static final long serialVersionUID = -3009157732242241606L;
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ @Column(name = "deviceid")
+ private long id;
+
+ @Column(name = "devicename")
+ private String deviceName;
+
+ @Column(name = "createdon")
+ private String createdon;
+
+ @OneToMany(mappedBy="device")
+ private Set<ProtocolConfig> protocolConfig;
+
+ @OneToMany(mappedBy="device")
+ private Set<PreTestConfig> preTestConfig;
+
+ public DeviceConfig() {
+ // TODO Auto-generated constructor stub
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
+ public String getCreationDate() {
+ return createdon;
+ }
+
+ public void setCreationDate(String creationDate) {
+ this.createdon = creationDate;
+ }
+
+ public Set<ProtocolConfig> getProtocolConfig() {
+ return protocolConfig;
+ }
+
+ public void setProtocolConfig(Set<ProtocolConfig> protocolConfig) {
+ this.protocolConfig = protocolConfig;
+ }
+
+ public Set<PreTestConfig> getPreTestConfig() {
+ return preTestConfig;
+ }
+
+ public void setPreTestConfig(Set<PreTestConfig> preTestConfig) {
+ this.preTestConfig = preTestConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "DeviceConfig [id=" + id + ", deviceName=" + deviceName + ", createdon=" + createdon
+ + "]";
+ }
+
+
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/PreTestConfig.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/PreTestConfig.java
new file mode 100644
index 0000000..fe9ee2a
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/PreTestConfig.java
@@ -0,0 +1,127 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.model;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Set;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
+@Entity
+//@Table(name = "pretestconfig",schema="testreports")
+@Table(name = "pretestconfig")
+public class PreTestConfig implements Serializable{
+
+ private static final long serialVersionUID = -3009157732242241606L;
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ @Column(name = "testid")
+ private long testId ;
+
+ @Column(name = "testname")
+ private String testName;
+
+
+ @Column(name = "result")
+ private String result;
+
+ @Column(name = "execuationdetails")
+ private String execuationDetails;
+
+ @Column(name = "timestamp")
+ @Temporal(TemporalType.DATE)
+ private Date timestamp;
+
+ @ManyToOne
+ @JoinColumn(name="deviceid",nullable=false)
+ private DeviceConfig device;
+
+ public PreTestConfig()
+ {
+ // TODO Auto-generated constructor stub
+ }
+
+ public long getTestId() {
+ return testId;
+ }
+
+ public void setTestId(long testId) {
+ this.testId = testId;
+ }
+
+ public String getTestName() {
+ return testName;
+ }
+
+ public void setTestName(String testName) {
+ this.testName = testName;
+ }
+
+ public DeviceConfig getDevice() {
+ return device;
+ }
+
+ public void setDevice(DeviceConfig device) {
+ this.device = device;
+ }
+
+ public String getResult() {
+ return result;
+ }
+
+ public void setResult(String result) {
+ this.result = result;
+ }
+
+ public String getExecuationDetails() {
+ return execuationDetails;
+ }
+
+ public void setExecuationDetails(String execuationDetails) {
+ this.execuationDetails = execuationDetails;
+ }
+
+ public Date getTimestamp() {
+ return timestamp;
+ }
+
+ public void setTimestamp(Date timestamp) {
+ this.timestamp = timestamp;
+ }
+
+ @Override
+ public String toString() {
+ return "PreTestConfig [testId=" + testId + ", testName=" + testName + ", result=" + result
+ + ", execuationDetails=" + execuationDetails + ", timestamp=" + timestamp + ", device=" + device + "]";
+ }
+
+
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/ProtocolConfig.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/ProtocolConfig.java
new file mode 100644
index 0000000..3ad2fbf
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/ProtocolConfig.java
@@ -0,0 +1,198 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.model;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "protocolconfig",schema="testreports")
+public class ProtocolConfig implements Serializable{
+
+ private static final long serialVersionUID = -3009157732242241606L;
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ @Column(name = "protocolid")
+ private long protocolId;
+
+ @Column(name = "protocolname")
+ private String protocolname;
+
+ @Column(name = "process_id")
+ private String process_id;
+
+ @Column(name = "networks")
+ private String networks;
+
+ @Column(name = "as_number")
+ private String as_number;
+
+ @Column(name = "neighbors")
+ private String neighbors;
+
+ @Column(name = "cos_entry_number")
+ private String cos_entry_number;
+
+ @Column(name = "destination_address")
+ private String destination_address;
+
+ @Column(name = "source_address")
+ private String source_address;
+
+ @Column(name = "customer_name")
+ private String customer_name;
+
+ @Column(name = "version")
+ private String version;
+
+ //@Column(name = "creationDate")
+ //private String creationDate;
+
+ @ManyToOne
+ @JoinColumn(name="deviceid",nullable=false)
+ private DeviceConfig device;
+
+ public ProtocolConfig() {
+ // TODO Auto-generated constructor stub
+ }
+
+ public long getProtocolId() {
+ return protocolId;
+ }
+
+ public void setProtocolId(long protocolId) {
+ this.protocolId = protocolId;
+ }
+
+ public String getProtocolName() {
+ return protocolname;
+ }
+
+ public void setProtocolName(String protocolName) {
+ this.protocolname = protocolName;
+ }
+
+ public String getProcess_id() {
+ return process_id;
+ }
+
+ public void setProcess_id(String process_id) {
+ this.process_id = process_id;
+ }
+
+ public String getNetworks() {
+ return networks;
+ }
+
+ public void setNetworks(String networks) {
+ this.networks = networks;
+ }
+
+ public String getAs_number() {
+ return as_number;
+ }
+
+ public void setAs_number(String as_number) {
+ this.as_number = as_number;
+ }
+
+ public String getNeighbors() {
+ return neighbors;
+ }
+
+ public void setNeighbors(String neighbors) {
+ this.neighbors = neighbors;
+ }
+
+ public String getCos_entry_number() {
+ return cos_entry_number;
+ }
+
+ public void setCos_entry_number(String cos_entry_number) {
+ this.cos_entry_number = cos_entry_number;
+ }
+
+ public String getDestination_address() {
+ return destination_address;
+ }
+
+ public void setDestination_address(String destination_address) {
+ this.destination_address = destination_address;
+ }
+
+ public String getSource_address() {
+ return source_address;
+ }
+
+ public void setSource_address(String source_address) {
+ this.source_address = source_address;
+ }
+
+ public String getCustomer_name() {
+ return customer_name;
+ }
+
+ public void setCustomer_name(String customer_name) {
+ this.customer_name = customer_name;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ /*public String getCreationDate() {
+ return creationDate;
+ }
+
+ public void setCreationDate(String creationDate) {
+ this.creationDate = creationDate;
+ }*/
+
+ public DeviceConfig getDevice() {
+ return device;
+ }
+
+ public void setDevice(DeviceConfig device) {
+ this.device = device;
+ }
+
+ /*@Override
+ public String toString() {
+ return "ProtocolConfig [protocolId=" + protocolId + ", protocolname=" + protocolname + ", process_id="
+ + process_id + ", networks=" + networks + ", as_number=" + as_number + ", neighbors=" + neighbors
+ + ", cos_entry_number=" + cos_entry_number + ", destination_address=" + destination_address
+ + ", source_address=" + source_address + ", customer_name=" + customer_name + ", version=" + version
+ + ", device=" + device + "]";
+ }*/
+
+
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/Report.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/Report.java
new file mode 100644
index 0000000..53373b3
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/Report.java
@@ -0,0 +1,94 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.model;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+
+//@Entity
+//@Table(name = "report")
+public class Report implements Serializable {
+/*
+
+ private static final long serialVersionUID = -3009157732242241606L;
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private long id;
+
+ @Column(name = "router_name")
+ private String router_name;
+
+ protected Report() {
+ }
+
+ List<RouterConfigDetails> routerConfigDetailsObj;
+
+
+
+ public long getRouter_id() {
+ return id;
+ }
+
+
+
+ public void setRouter_id(long router_id) {
+ this.id = router_id;
+ }
+
+
+
+ public String getRouter_name() {
+ return router_name;
+ }
+
+
+
+ public void setRouter_name(String router_name) {
+ this.router_name = router_name;
+ }
+
+
+
+ public List<RouterConfigDetails> getRouterConfigDetailsObj() {
+ return routerConfigDetailsObj;
+ }
+
+
+
+ public void setRouterConfigDetailsObj(List<RouterConfigDetails> routerConfigDetailsObj) {
+ this.routerConfigDetailsObj = routerConfigDetailsObj;
+ }
+
+
+ @Override
+ public String toString() {
+ return "Router [router_id=" + id + ", router_name=" + router_name+"]";
+ }
+
+
+*/}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/Response.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/Response.java
new file mode 100644
index 0000000..3203931
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/Response.java
@@ -0,0 +1,50 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.model;
+
+public class Response {
+ private String status;
+ private Object data;
+
+ public Response() {
+
+ }
+
+ public Response(String status, Object data) {
+ this.status = status;
+ this.data = data;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public Object getData() {
+ return data;
+ }
+
+ public void setData(Object data) {
+ this.data = data;
+ }
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/RouterConfigDetails.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/RouterConfigDetails.java
new file mode 100644
index 0000000..96bf38b
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/model/RouterConfigDetails.java
@@ -0,0 +1,281 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+import org.springframework.data.annotation.Id;
+
+import com.onap.sdnc.reports.rest.model.ConfigDetailsRestModel;
+import com.onap.sdnc.reports.rest.model.ProtocolModel;
+
+public class RouterConfigDetails implements Comparable<RouterConfigDetails>{
+
+ @Override
+ public int compareTo(RouterConfigDetails o) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+/*
+ @Id
+ String router_config_details_id;
+
+ Date date;
+ String version_id;
+ String protocol;
+ String cos_entry_number;
+ String destination_address;
+ String source_address;
+ String customer_name;
+
+ String process_id;
+ String subnet_ip;
+ String area_id;
+ String as_number;
+ String router_id;
+ String peer_ip;
+
+ HashMap<String, String> neighbors;
+ HashMap<String, String> networks;
+
+ List<Object> networkList;
+
+ public static List<ConfigDetailsRestModel> fromEntityToModel(List<RouterConfigDetails> entityList) {
+ List<ConfigDetailsRestModel> modelList= new ArrayList<ConfigDetailsRestModel>();
+ ConfigDetailsRestModel configmodel= new ConfigDetailsRestModel();
+ List<ProtocolModel> protocolmodelList= new ArrayList<ProtocolModel>();
+
+ for (RouterConfigDetails entity : entityList) {
+ ProtocolModel model = new ProtocolModel();
+ //
+ model.setDate(entity.getDate().toString());
+ if ("ipsla".equals(entity.getProtocol())) {
+ model.setVersion_id(entity.getVersion_id());
+ model.setProtocol_name(entity.getProtocol());
+ model.setCos_entry_number(entity.getCos_entry_number());
+ model.setCustomer_name(entity.getCustomer_name());
+ model.setDestination_address(entity.getDestination_address());
+ model.setSource_address(entity.getSource_address());
+ // routerConfigDetails.setRouter_config_details_id(String.valueOf(seqDao.getRouterConfigDetailsNextSequenceId(ROUTER_CONFIG_VERSION)));
+ protocolmodelList.add(model);
+ }
+ if ("bgp".equals(entity.getProtocol())) {
+ model.setVersion_id(entity.getVersion_id());
+ model.setProtocol_name(entity.getProtocol());
+ HashMap<String, String> neighbor = entity.getNeighbors();
+ HashMap<String, String> neighbormap = new HashMap<String, String>();
+ model.setAs_number(entity.getAs_number());
+ model.setRouter_id(entity.getRouter_id());
+
+ String as_number = neighbor.get("as_number").toString();
+ String peer_ip = neighbor.get("peer_ip").toString();
+
+ neighbormap.put("as_number", as_number);
+ neighbormap.put("peer_ip", peer_ip);
+
+ model.setNeighbors(neighbormap);
+ protocolmodelList.add(model);
+ }
+ if ("ospf".equals(entity.getProtocol())) {
+ model.setVersion_id(entity.getVersion_id());
+ model.setProtocol_name(entity.getProtocol());
+ HashMap<String, String> networks = entity.getNetworks();
+ HashMap<String, String> networksmap = new HashMap<String, String>();
+ String network_subnet_ip = networks.get("subnet_ip").toString();
+ String network_area_id = networks.get("area_id").toString();
+
+
+ networksmap.put("subnet_ip", network_subnet_ip);
+ networksmap.put("area_id", network_subnet_ip);
+
+ model.setNetworks(networksmap);
+ model.setProcess_id(entity.getProcess_id());
+ protocolmodelList.add(model);
+ }
+ }
+ configmodel.setProtocol(protocolmodelList);
+ modelList.add(configmodel);
+ return modelList;
+ }
+
+ public String getRouter_config_details_id() {
+ return router_config_details_id;
+ }
+
+ public void setRouter_config_details_id(String router_config_details_id) {
+ this.router_config_details_id = router_config_details_id;
+ }
+
+ public String getCos_entry_number() {
+ return cos_entry_number;
+ }
+
+ public void setCos_entry_number(String cos_entry_number) {
+ this.cos_entry_number = cos_entry_number;
+ }
+
+ public String getDestination_address() {
+ return destination_address;
+ }
+
+ public void setDestination_address(String destination_address) {
+ this.destination_address = destination_address;
+ }
+
+ public String getSource_address() {
+ return source_address;
+ }
+
+ public void setSource_address(String source_address) {
+ this.source_address = source_address;
+ }
+
+ public String getCustomer_name() {
+ return customer_name;
+ }
+
+ public void setCustomer_name(String customer_name) {
+ this.customer_name = customer_name;
+ }
+
+ public String getProtocol() {
+ return protocol;
+ }
+
+ public void setProtocol(String protocol) {
+ this.protocol = protocol;
+ }
+
+
+ * public String getVersion() { return version; }
+ *
+ * public void setVersion(String version) { this.version = version; }
+
+
+ public Date getDate() {
+ return date;
+ }
+
+ public void setDate(Date date) {
+ this.date = date;
+ }
+
+ public String getProcess_id() {
+ return process_id;
+ }
+
+ public void setProcess_id(String process_id) {
+ this.process_id = process_id;
+ }
+
+ public String getSubnet_ip() {
+ return subnet_ip;
+ }
+
+ public void setSubnet_ip(String subnet_ip) {
+ this.subnet_ip = subnet_ip;
+ }
+
+ public String getArea_id() {
+ return area_id;
+ }
+
+ public void setArea_id(String area_id) {
+ this.area_id = area_id;
+ }
+
+ public String getAs_number() {
+ return as_number;
+ }
+
+ public void setAs_number(String as_number) {
+ this.as_number = as_number;
+ }
+
+ public String getRouter_id() {
+ return router_id;
+ }
+
+ public void setRouter_id(String router_id) {
+ this.router_id = router_id;
+ }
+
+ public String getPeer_ip() {
+ return peer_ip;
+ }
+
+ public void setPeer_ip(String peer_ip) {
+ this.peer_ip = peer_ip;
+ }
+
+ public HashMap<String, String> getNeighbors() {
+ return neighbors;
+ }
+
+ public void setNeighbors(HashMap<String, String> neighbormap) {
+ this.neighbors = neighbormap;
+ }
+
+ public HashMap<String, String> getNetworks() {
+ return networks;
+ }
+
+ public void setNetworks(HashMap<String, String> networks) {
+ this.networks = networks;
+ }
+
+ public List<Object> getNetworkList() {
+ return networkList;
+ }
+
+ public void setNetworkList(List<Object> networkList) {
+ this.networkList = networkList;
+ }
+
+ @Override
+ public String toString() {
+ return "RouterConfigDetails [router_config_details_id=" + router_config_details_id + ",date=" + date
+ + ",protocol=" + protocol + ", cos_entry_number=" + cos_entry_number + ", destination_address="
+ + destination_address + ", source_address=" + source_address + ", customer_name=" + customer_name + "]";
+ }
+
+ //@Override
+ public int compareTo(RouterConfigDetails o) {
+ if (this.date.before(o.getDate()))
+ return 1;
+ else if (this.date.equals(o.getDate()))
+ return 0;
+ else
+ return -1;
+ }
+
+ public String getVersion_id() {
+ return version_id;
+ }
+
+ public void setVersion_id(String version_id) {
+ this.version_id = version_id;
+ }
+*/
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/repository/DeviceRepository.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/repository/DeviceRepository.java
new file mode 100644
index 0000000..3864a35
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/repository/DeviceRepository.java
@@ -0,0 +1,31 @@
+
+package com.onap.sdnc.reports.repository;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.transaction.Transactional;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import com.onap.sdnc.reports.model.DeviceConfig;
+import com.onap.sdnc.reports.model.PreTestConfig;
+import com.onap.sdnc.reports.model.Report;
+
+@Repository
+public interface DeviceRepository extends JpaRepository<DeviceConfig, Long> {
+//public interface DeviceRepository extends CrudRepository<DeviceConfig, Long> {
+ //List<Report> findByLastName(String lastName);
+ /*@Query(value= "from DeviceConfig where deviceName = :deviceName" )
+ DeviceConfig findDeviceName(@Param("deviceName") String deviceName);
+
+ @Modifying
+ @Query(value = "insert into DeviceConfig (deviceName,createdOn) VALUES (:deviceName,:createdOn)", nativeQuery = true)
+ @Transactional
+ void logDeviceName(@Param("deviceName") String deviceName, @Param("createdOn") String createdOn);*/
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/repository/PreTestConfigRepository.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/repository/PreTestConfigRepository.java
new file mode 100644
index 0000000..e399bfd
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/repository/PreTestConfigRepository.java
@@ -0,0 +1,34 @@
+
+package com.onap.sdnc.reports.repository;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.transaction.Transactional;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import com.onap.sdnc.reports.model.PreTestConfig;
+
+@Repository
+public interface PreTestConfigRepository extends JpaRepository<PreTestConfig, Long> {
+
+ /*@Query(value= " from PreTestConfig where timestamp >= :startDate and timestamp <= :endDate" )
+ List<PreTestConfig> findPreTestConfigByTimeStamp(@Param("startDate") Date startDate, @Param("endDate")Date endDate);
+
+
+ @Query(value= " from PreTestConfig where timestamp >= :startDate and timestamp <= :endDate and testName = :testName" )
+ List<PreTestConfig> findReportByTestName(@Param("startDate") Date startDate, @Param("endDate")Date endDate, @Param("testName")String testName);
+ */
+ @Query(value= " from PreTestConfig where timestamp >= :startDate and timestamp <= :endDate and device.deviceName = :deviceName" )
+ List<PreTestConfig> findReportByDeviceName(@Param("startDate") Date startDate, @Param("endDate")Date endDate, @Param("deviceName")String deviceName);
+
+ @Modifying
+ @Query(value = "insert into PreTestConfig (testName,result,execuationDetails,timestamp,deviceId) VALUES (:testName,:result,:execuationDetails,:timestamp,:deviceId)", nativeQuery = true)
+ @Transactional
+ void logPreTestReport(@Param("testName") String testName,@Param("result") String result, @Param("execuationDetails") String execuationDetails,@Param("timestamp") String timestamp,@Param("deviceId") long deviceId);
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/rest/model/ConfigDetailsRestModel.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/rest/model/ConfigDetailsRestModel.java
new file mode 100644
index 0000000..5794459
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/rest/model/ConfigDetailsRestModel.java
@@ -0,0 +1,73 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.rest.model;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ConfigDetailsRestModel {
+
+ @JsonProperty(value = JSONTags.TAG_ROUTER)
+ String router;
+
+ @JsonProperty(value = JSONTags.TAG_DATE)
+ String date;
+
+ List<ProtocolModel> protocol;
+
+
+ public ConfigDetailsRestModel() {
+ super();
+ }
+
+
+ public String getRouter() {
+ return router;
+ }
+
+
+ public void setRouter(String router) {
+ this.router = router;
+ }
+
+
+ public String getDate() {
+ return date;
+ }
+
+
+ public void setDate(String date) {
+ this.date = date;
+ }
+
+
+ public List<ProtocolModel> getProtocol() {
+ return protocol;
+ }
+
+
+ public void setProtocol(List<ProtocolModel> protocol) {
+ this.protocol = protocol;
+ }
+
+
+
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/rest/model/JSONTags.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/rest/model/JSONTags.java
new file mode 100644
index 0000000..90ff570
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/rest/model/JSONTags.java
@@ -0,0 +1,56 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.rest.model;
+
+public class JSONTags {
+
+ public static final String TAG_REQUEST_FNAME = "first_name";
+ public static final String TAG_REQUEST_MNAME = "middle_name";
+ public static final String TAG_STATUS_SUCCESS = "success";
+ public static final String TAG_RESPONSE_STATUS = "status";
+ public static final String TAG_REQUEST_FROM = "request_from";
+ public static final String TAG_REQUEST_ID = "request_id";
+ public static final String TAG_RESPONSE_DETAIL = "response_detail";
+ public static final String TAG_RESPONSE_BODY = "response_body";
+ public static final String TAG_REQUEST_BODY = "request_body";
+ public static final String TAG_RESPONSE_MESSAGE = "request";
+ public static final String TAG_ERROR_CODE = "error_code";
+ public static final String TAG_ERROR_CODE_SUCCESS = "100";
+
+
+ public static final String TAG_ROUTER = "router";
+ public static final String TAG_IPSLA = "ipsla";
+ public static final String TAG_OSPF = "ospf";
+ public static final String TAG_DATE = "date";
+ public static final String TAG_COS_ENTRY_NUMBER = "cos-entry-number";
+ public static final String TAG_DESTINATION_ADDRESS = "destination-address";
+ public static final String TAG_SOURCE_ADDRESS = "source-address";
+ public static final String TAG_CUSTOMER_NAME = "customer-name";
+ public static final String TAG_PROTOCOL_NAME = "protocol-name";
+
+
+ public static final String TAG_AS_NUMBER = "as-number";
+ public static final String TAG_ROUTER_ID = "router-id";
+ public static final String TAG_PEER_IP = "peer-ip";
+
+ public static final String TAG_PROCESS_ID = "process-id";
+
+
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/rest/model/PreTestModel.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/rest/model/PreTestModel.java
new file mode 100644
index 0000000..4f73e02
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/rest/model/PreTestModel.java
@@ -0,0 +1,116 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.rest.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class PreTestModel implements Serializable{
+
+ private static final long serialVersionUID = -3009157732242241606L;
+
+ private long testid;
+
+ private long deviceid;
+
+ private String testName;
+
+ private String deviceName,execuationDetails,result;
+
+ private Date timeStamp;
+
+ public PreTestModel(long testid, long deviceid, String testName, String deviceName, String execuationDetails,
+ String result, Date timeStamp) {
+ super();
+ this.testid = testid;
+ this.deviceid = deviceid;
+ this.testName = testName;
+ this.deviceName = deviceName;
+ this.execuationDetails = execuationDetails;
+ this.result = result;
+ this.timeStamp = timeStamp;
+ }
+
+ @Override
+ public String toString() {
+ return "PreTestModel [testid=" + testid + ", deviceid=" + deviceid + ", testName=" + testName + ", deviceName="
+ + deviceName + ", execuationDetails=" + execuationDetails + ", result=" + result + ", timeStamp="
+ + timeStamp + "]";
+ }
+
+ public long getTestid() {
+ return testid;
+ }
+
+ public void setTestid(long testid) {
+ this.testid = testid;
+ }
+
+ public long getDeviceid() {
+ return deviceid;
+ }
+
+ public void setDeviceid(long deviceid) {
+ this.deviceid = deviceid;
+ }
+
+ public String getTestName() {
+ return testName;
+ }
+
+ public void setTestName(String testName) {
+ this.testName = testName;
+ }
+
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
+ public String getExecuationDetails() {
+ return execuationDetails;
+ }
+
+ public void setExecuationDetails(String execuationDetails) {
+ this.execuationDetails = execuationDetails;
+ }
+
+ public String getResult() {
+ return result;
+ }
+
+ public void setResult(String result) {
+ this.result = result;
+ }
+
+ public Date getTimeStamp() {
+ return timeStamp;
+ }
+
+ public void setTimeStamp(Date timeStamp) {
+ this.timeStamp = timeStamp;
+ }
+
+
+
+}
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/rest/model/ProtocolModel.java b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/rest/model/ProtocolModel.java
new file mode 100644
index 0000000..d90584d
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/java/com/onap/sdnc/reports/rest/model/ProtocolModel.java
@@ -0,0 +1,207 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.rest.model;
+
+import java.util.HashMap;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ProtocolModel {
+
+
+
+ @JsonProperty(value = JSONTags.TAG_COS_ENTRY_NUMBER)
+ String cos_entry_number;
+ @JsonProperty(value = JSONTags.TAG_DESTINATION_ADDRESS)
+ String destination_address;
+ @JsonProperty(value = JSONTags.TAG_SOURCE_ADDRESS)
+ String source_address;
+ @JsonProperty(value = JSONTags.TAG_CUSTOMER_NAME)
+ String customer_name;
+
+
+ String date;
+
+ String version_id;
+
+ String protocol_name;
+
+ // added by bhawna
+
+ String process_id;
+ String subnet_ip;
+ String area_id;
+ @JsonProperty(value = JSONTags.TAG_AS_NUMBER)
+ String as_number;
+ @JsonProperty(value = JSONTags.TAG_ROUTER_ID)
+ String router_id;
+ @JsonProperty(value = JSONTags.TAG_PEER_IP)
+ String peer_ip;
+
+ HashMap<String, String> neighbors;
+ HashMap<String, String> networks;
+
+ List<Object> networkList;
+
+ public ProtocolModel() {
+ super();
+ }
+
+ /*
+ * @Override public String toString() { return
+ * "RouterConfigDetailsRestModel [cos_entry_number=" + cos_entry_number +
+ * ", destination_address=" + destination_address + ", source_address=" +
+ * source_address + ", customer_name=" + customer_name + "]"; }
+ */
+ public String getProtocol_name() {
+ return protocol_name;
+ }
+
+
+ public void setProtocol_name(String protocol_name) {
+ this.protocol_name = protocol_name;
+ }
+
+ public String getCos_entry_number() {
+ return cos_entry_number;
+ }
+
+ public void setCos_entry_number(String cos_entry_number) {
+ this.cos_entry_number = cos_entry_number;
+ }
+
+ public String getDestination_address() {
+ return destination_address;
+ }
+
+ public void setDestination_address(String destination_address) {
+ this.destination_address = destination_address;
+ }
+
+ public String getSource_address() {
+ return source_address;
+ }
+
+ public void setSource_address(String source_address) {
+ this.source_address = source_address;
+ }
+
+ public String getCustomer_name() {
+ return customer_name;
+ }
+
+ public void setCustomer_name(String customer_name) {
+ this.customer_name = customer_name;
+ }
+
+
+ public String getProcess_id() {
+ return process_id;
+ }
+
+ public void setProcess_id(String process_id) {
+ this.process_id = process_id;
+ }
+
+ public String getSubnet_ip() {
+ return subnet_ip;
+ }
+
+ public void setSubnet_ip(String subnet_ip) {
+ this.subnet_ip = subnet_ip;
+ }
+
+ public String getArea_id() {
+ return area_id;
+ }
+
+ public void setArea_id(String area_id) {
+ this.area_id = area_id;
+ }
+
+ public String getAs_number() {
+ return as_number;
+ }
+
+ public void setAs_number(String as_number) {
+ this.as_number = as_number;
+ }
+
+ public String getRouter_id() {
+ return router_id;
+ }
+
+ public void setRouter_id(String router_id) {
+ this.router_id = router_id;
+ }
+
+ public String getPeer_ip() {
+ return peer_ip;
+ }
+
+ public void setPeer_ip(String peer_ip) {
+ this.peer_ip = peer_ip;
+ }
+
+ public HashMap<String, String> getNeighbors() {
+ return neighbors;
+ }
+
+ public void setNeighbors(HashMap<String, String> neighbors) {
+ this.neighbors = neighbors;
+ }
+
+ public HashMap<String, String> getNetworks() {
+ return networks;
+ }
+
+ public void setNetworks(HashMap<String, String> networks) {
+ this.networks = networks;
+ }
+
+ public List<Object> getNetworkList() {
+ return networkList;
+ }
+
+ public void setNetworkList(List<Object> networkList) {
+ this.networkList = networkList;
+ }
+
+ public String getDate() {
+ return date;
+ }
+
+ public void setDate(String date) {
+ this.date = date;
+ }
+
+ public String getVersion_id() {
+ return version_id;
+ }
+
+ public void setVersion_id(String version_id) {
+ this.version_id = version_id;
+ }
+
+
+
+}
+
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/resources/application.properties b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/resources/application.properties
new file mode 100644
index 0000000..e79c8b2
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/main/resources/application.properties
@@ -0,0 +1,29 @@
+#spring.datasource.url=jdbc:mysql://localhost:3306/mysql?useSSL=false
+#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
+#spring.datasource.name=mysql
+#spring.jpa.database=mysql
+#spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
+
+spring.jpa.generate-ddl=true
+spring.datasource.url=jdbc:mariadb://localhost:3306/testreports
+spring.datasource.username=root
+spring.datasource.password=root
+spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
+spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
+#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
+# Keep the connection alive if idle for a long time (needed in production)
+spring.datasource.testWhileIdle=true
+
+#spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardIm
+
+#spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialect
+#spring.jpa.properties.hibernate.id.new_generator_mappings = false
+#spring.jpa.properties.hibernate.format_sql = true
+#spring.jpa.hibernate.ddl-auto=create
+
+
+#logging.level.org.hibernate.SQL=DEBUG
+#logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
+
+# Naming strategy
+#spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy \ No newline at end of file
diff --git a/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/test/resources/application.properties b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/test/resources/application.properties
new file mode 100644
index 0000000..b48a921
--- /dev/null
+++ b/sdnc_report_api_sdnc_253_story/sdnc_reports_dao/src/test/resources/application.properties
@@ -0,0 +1,56 @@
+#server.port = 9001
+
+
+
+# H2 DB Details
+spring.jpa.hibernate.ddl-auto = create-drop
+spring.jpa.database = HSQL
+spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.HSQLDialect
+spring.datasource.driverClassName = org.hsqldb.jdbcDriver
+spring.datasource.url: jdbc:hsqldb:mem:scratchdb
+spring.datasource.username =sa
+spring.datasource.password =sa
+
+
+# maria db details
+
+#spring.jackson.serialization.fail-on-empty-beans=false
+#server.tomcat.uri-encoding=utf-8
+#spring.datasource.continue-on-error=true
+#server.error.whitelabel.enabled=false
+#spring.mvc.view.prefix = /WEB-INF/views/
+#spring.mvc.view.suffix = .jsp
+
+#spring.datasource.url=jdbc:mysql://localhost:3306/dummyreports?useSSL=false
+#spring.datasource.url=jdbc:mariadb://localhost:3307/dummyReports
+#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
+#spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
+#spring.datasource.name=mysql
+#spring.jpa.database=mysql
+
+#spring.jpa.hibernate.ddl-auto=create
+#spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
+
+#spring.datasource.username=root
+#spring.datasource.password=root
+#spring.jpa.generate-ddl=true
+
+spring.datasource.tomcat.max-wait=20000
+spring.datasource.tomcat.max-active=50
+spring.datasource.tomcat.max-idle=20
+spring.datasource.tomcat.min-idle=15
+
+spring.jpa.show-sql=true
+
+
+
+# mysql db Details
+
+#spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardIm
+#spring.jpa.hibernate.ddl-auto=create
+#spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialect
+#spring.jpa.properties.hibernate.id.new_generator_mappings = false
+#spring.jpa.properties.hibernate.format_sql = true
+
+#logging.level.org.hibernate.SQL=DEBUG
+#logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE \ No newline at end of file