You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eagle.apache.org by ha...@apache.org on 2015/11/30 03:51:14 UTC

[40/44] incubator-eagle git commit: update pom using npm to install web deps

update pom using npm to install web deps


Project: http://git-wip-us.apache.org/repos/asf/incubator-eagle/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-eagle/commit/2c3005c9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-eagle/tree/2c3005c9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-eagle/diff/2c3005c9

Branch: refs/heads/master
Commit: 2c3005c99e7182d719755a5d61305c1627d9ce82
Parents: 5bffdfd
Author: jiljiang <ji...@ebay.com>
Authored: Thu Nov 26 02:27:17 2015 +0000
Committer: jiljiang <ji...@ebay.com>
Committed: Thu Nov 26 02:27:17 2015 +0000

----------------------------------------------------------------------
 LICENSE                                         |    8 +-
 eagle-webservice/.gitignore                     |    3 +
 eagle-webservice/pom.xml                        |  493 +-
 eagle-webservice/src/main/webapp/Gruntfile.js   |  131 +
 eagle-webservice/src/main/webapp/README.md      |    4 +
 eagle-webservice/src/main/webapp/app/index.html |  216 +
 .../webapp/app/partials/dam/alertDetail.html    |   61 +
 .../main/webapp/app/partials/dam/alertList.html |   83 +
 .../src/main/webapp/app/partials/dam/login.html |   49 +
 .../webapp/app/partials/dam/policyDetail.html   |  171 +
 .../webapp/app/partials/dam/policyEdit.html     |  352 +
 .../webapp/app/partials/dam/policyList.html     |   98 +
 .../webapp/app/partials/dam/sensitivity.html    |   22 +
 .../app/partials/dam/sensitivity/HDFS.html      |  110 +
 .../app/partials/dam/sensitivity/Hive.html      |  150 +
 .../app/partials/dam/sensitivitySummary.html    |  143 +
 .../main/webapp/app/partials/dam/siteList.html  |  162 +
 .../webapp/app/partials/dam/streamList.html     |  178 +
 .../main/webapp/app/partials/dam/summary.html   |   45 +
 .../app/partials/dam/userProfileDetail.html     |   86 +
 .../app/partials/dam/userProfileList.html       |  138 +
 .../css/bootstrap-components.css                |  395 +
 .../css/bootstrap-components.min.css            |    1 +
 .../js/bootstrap-components.js                  | 1712 ++++
 .../js/bootstrap-components.min.js              |    8 +
 .../public/assets/flot/jquery.flot.legend.js    |  107 +
 .../public/assets/flot/jquery.flot.tooltip.js   |  381 +
 .../src/main/webapp/app/public/css/main.css     |  553 +
 .../main/webapp/app/public/images/favicon.png   |  Bin 0 -> 4209 bytes
 .../src/main/webapp/app/public/js/app.config.js |   75 +
 .../src/main/webapp/app/public/js/app.js        |  684 ++
 .../src/main/webapp/app/public/js/app.time.js   |   55 +
 .../src/main/webapp/app/public/js/app.ui.js     |   66 +
 .../src/main/webapp/app/public/js/common.js     |  211 +
 .../webapp/app/public/js/components/charts.js   |  188 +
 .../app/public/js/components/charts/bar.js      |  290 +
 .../app/public/js/components/charts/line3d.js   |  345 +
 .../webapp/app/public/js/components/file.js     |   49 +
 .../webapp/app/public/js/components/main.js     |   20 +
 .../app/public/js/components/sortTable.js       |  112 +
 .../webapp/app/public/js/components/tabs.js     |  107 +
 .../app/public/js/ctrl/alertController.js       |  126 +
 .../webapp/app/public/js/ctrl/authController.js |   63 +
 .../webapp/app/public/js/ctrl/damController.js  |  109 +
 .../app/public/js/ctrl/policyController.js      |  885 ++
 .../app/public/js/ctrl/sensitivityController.js |  389 +
 .../webapp/app/public/js/ctrl/siteController.js |  209 +
 .../app/public/js/ctrl/streamController.js      |  207 +
 .../app/public/js/ctrl/userProfileController.js |  258 +
 eagle-webservice/src/main/webapp/grunt.json     |   46 +
 eagle-webservice/src/main/webapp/index.html     |  215 +-
 eagle-webservice/src/main/webapp/package.json   |   47 +
 .../main/webapp/partials/dam/alertDetail.html   |   61 -
 .../src/main/webapp/partials/dam/alertList.html |   83 -
 .../src/main/webapp/partials/dam/login.html     |   31 -
 .../main/webapp/partials/dam/policyDetail.html  |  171 -
 .../main/webapp/partials/dam/policyEdit.html    |  352 -
 .../main/webapp/partials/dam/policyList.html    |   98 -
 .../main/webapp/partials/dam/sensitivity.html   |   22 -
 .../webapp/partials/dam/sensitivity/HDFS.html   |  110 -
 .../webapp/partials/dam/sensitivity/Hive.html   |  150 -
 .../webapp/partials/dam/sensitivitySummary.html |  143 -
 .../src/main/webapp/partials/dam/siteList.html  |  162 -
 .../main/webapp/partials/dam/streamList.html    |  178 -
 .../src/main/webapp/partials/dam/summary.html   |   45 -
 .../webapp/partials/dam/userProfileDetail.html  |   86 -
 .../webapp/partials/dam/userProfileList.html    |  138 -
 ...1oPJhLKp0zdtTvoM40tgx99jmYGv_xzYuwd1rU.woff2 |  Bin 12264 -> 0 bytes
 ...1oPJhLKp0zdtTvoM7YHq4FgHI02B8rPccK0FJQ.woff2 |  Bin 4584 -> 0 bytes
 ...1oPJhLKp0zdtTvoMxgy2Fsj5sj3EzlXpqVXRKo.woff2 |  Bin 13980 -> 0 bytes
 ...1aHBYDBqgeIAH2zlC2Q8seG17bfDXYR_jUsrzg.woff2 |  Bin 12336 -> 0 bytes
 ...1aHBYDBqgeIAH2zlNOAHFN6BivSraYkjhveRHY.woff2 |  Bin 4504 -> 0 bytes
 ...1aHBYDBqgeIAH2zlNV_2ngZ8dMf8fLgjYEouxg.woff2 |  Bin 14308 -> 0 bytes
 ...K8qsXbIeTHTrnQH6CzM2XYAq8cDhaXsrN8WXcA.woff2 |  Bin 4596 -> 0 bytes
 ...K8qsXbIeTHTrnQH6E78GtRp3lhchupCJNw8t58.woff2 |  Bin 4556 -> 0 bytes
 ...K8qsXbIeTHTrnQH6GQKuzMuncr0JB710wa2dPI.woff2 |  Bin 13716 -> 0 bytes
 ...K8qsXbIeTHTrnQH6Lpx497t94oDua8KfAL9f-E.woff2 |  Bin 12196 -> 0 bytes
 ...K8qsXbIeTHTrnQH6MAjkyiewWYrWZc50I8hK7I.woff2 |  Bin 13772 -> 0 bytes
 ...K8qsXbIeTHTrnQH6OXKTZYPNtG1yMB_YJSqlic.woff2 |  Bin 12228 -> 0 bytes
 ...cfmlt9b38dHJxOBGCOFnW3Jk0f09zW_Yln67Ac.woff2 |  Bin 13992 -> 0 bytes
 ...cfmlt9b38dHJxOBGClYwVOhDRq2vbpGRTZ7bbs.woff2 |  Bin 4512 -> 0 bytes
 ...cfmlt9b38dHJxOBGDRVvBvQIc1z78c__uoBcyI.woff2 |  Bin 12396 -> 0 bytes
 ...cfmlt9b38dHJxOBGD_j0nMiB9fPhg_k1wdK2h0.woff2 |  Bin 4588 -> 0 bytes
 ...cfmlt9b38dHJxOBGDovqjS_dXPZszO_XltPdNg.woff2 |  Bin 4432 -> 0 bytes
 ...cfmlt9b38dHJxOBGEo0As1BFRXtCDhS66znb_k.woff2 |  Bin 13892 -> 0 bytes
 ...cfmlt9b38dHJxOBGFKFh1TDTPrUZWzVp6FtpG8.woff2 |  Bin 12384 -> 0 bytes
 ...cfmlt9b38dHJxOBGFxe-GPfKKFmiXaJ_Q0GFr8.woff2 |  Bin 12244 -> 0 bytes
 ...cfmlt9b38dHJxOBGOode0-EuMkY--TSyExeINg.woff2 |  Bin 14308 -> 0 bytes
 .../assets/adminLTE/dist/assets/googleapi.css   |  168 -
 .../assets/adminLTE/dist/css/AdminLTE.min.css   |    7 -
 .../adminLTE/dist/css/skins/skin-blue.min.css   |    1 -
 .../public/assets/adminLTE/dist/js/app.min.js   |   13 -
 .../assets/angular/angular-animate.min.js       |   52 -
 .../assets/angular/angular-animate.min.js.map   |    8 -
 .../assets/angular/angular-cookies.min.js       |    9 -
 .../assets/angular/angular-cookies.min.js.map   |    8 -
 .../assets/angular/angular-resource.min.js      |   13 -
 .../assets/angular/angular-resource.min.js.map  |    8 -
 .../public/assets/angular/angular-route.min.js  |   15 -
 .../assets/angular/angular-route.min.js.map     |    8 -
 .../webapp/public/assets/angular/angular.min.js |  290 -
 .../public/assets/angular/angular.min.js.map    |    8 -
 .../assets/angular/ui-bootstrap-tpls-0.13.4.js  | 5837 -----------
 .../angular/ui-bootstrap-tpls-0.13.4.min.js     |   10 -
 .../css/bootstrap-components.css                |  395 -
 .../css/bootstrap-components.min.css            |    1 -
 .../js/bootstrap-components.js                  | 1712 ----
 .../js/bootstrap-components.min.js              |    8 -
 .../assets/bootstrap/css/bootstrap-theme.css    |  476 -
 .../bootstrap/css/bootstrap-theme.css.map       |    1 -
 .../bootstrap/css/bootstrap-theme.min.css       |    5 -
 .../public/assets/bootstrap/css/bootstrap.css   | 6584 ------------
 .../assets/bootstrap/css/bootstrap.css.map      |    1 -
 .../assets/bootstrap/css/bootstrap.min.css      |    5 -
 .../fonts/glyphicons-halflings-regular.eot      |  Bin 20127 -> 0 bytes
 .../fonts/glyphicons-halflings-regular.svg      |  288 -
 .../fonts/glyphicons-halflings-regular.ttf      |  Bin 45404 -> 0 bytes
 .../fonts/glyphicons-halflings-regular.woff     |  Bin 23424 -> 0 bytes
 .../fonts/glyphicons-halflings-regular.woff2    |  Bin 18028 -> 0 bytes
 .../public/assets/bootstrap/js/bootstrap.js     | 2317 -----
 .../public/assets/bootstrap/js/bootstrap.min.js |    7 -
 .../webapp/public/assets/bootstrap/js/npm.js    |   13 -
 .../src/main/webapp/public/assets/d3/d3.js      | 9503 ------------------
 .../src/main/webapp/public/assets/d3/d3.min.js  |    5 -
 .../public/assets/fastclick/fastclick.min.js    |    1 -
 .../webapp/public/assets/flot/excanvas.min.js   |    1 -
 .../webapp/public/assets/flot/jquery-ui.min.js  |    6 -
 .../assets/flot/jquery.colorhelpers.min.js      |    1 -
 .../assets/flot/jquery.flot.canvas.min.js       |    7 -
 .../assets/flot/jquery.flot.categories.min.js   |    7 -
 .../assets/flot/jquery.flot.crosshair.min.js    |    7 -
 .../assets/flot/jquery.flot.errorbars.min.js    |    7 -
 .../assets/flot/jquery.flot.fillbetween.min.js  |    7 -
 .../public/assets/flot/jquery.flot.image.min.js |    7 -
 .../public/assets/flot/jquery.flot.legend.js    |  107 -
 .../public/assets/flot/jquery.flot.min.js       |    8 -
 .../assets/flot/jquery.flot.navigate.min.js     |    7 -
 .../public/assets/flot/jquery.flot.pie.min.js   |    7 -
 .../assets/flot/jquery.flot.resize.min.js       |    7 -
 .../assets/flot/jquery.flot.selection.min.js    |    7 -
 .../public/assets/flot/jquery.flot.stack.min.js |    7 -
 .../assets/flot/jquery.flot.symbol.min.js       |    7 -
 .../assets/flot/jquery.flot.threshold.min.js    |    7 -
 .../public/assets/flot/jquery.flot.time.min.js  |    7 -
 .../public/assets/flot/jquery.flot.tooltip.js   |  381 -
 .../font-awesome/css/font-awesome.min.css       |    4 -
 .../assets/font-awesome/fonts/FontAwesome.otf   |  Bin 106260 -> 0 bytes
 .../font-awesome/fonts/fontawesome-webfont.eot  |  Bin 68875 -> 0 bytes
 .../font-awesome/fonts/fontawesome-webfont.svg  |  640 --
 .../font-awesome/fonts/fontawesome-webfont.ttf  |  Bin 138204 -> 0 bytes
 .../font-awesome/fonts/fontawesome-webfont.woff |  Bin 81284 -> 0 bytes
 .../fonts/fontawesome-webfont.woff2             |  Bin 64464 -> 0 bytes
 .../public/assets/jquery/jquery-1.11.3.min.js   |    5 -
 .../public/assets/jquery/jquery-1.11.3.min.map  |    1 -
 .../assets/jquery/jquery.slimscroll.min.js      |    1 -
 .../moment/moment-timezone-with-data.min.js     |    7 -
 .../assets/moment/moment-with-locales.min.js    |   79 -
 .../main/webapp/public/css/alerts/policy.css    |   61 -
 .../webapp/public/css/alerts/policylist.css     |   22 -
 .../webapp/public/css/alerts/policyview.css     |   30 -
 .../webapp/public/css/alerts/streamlist.css     |   23 -
 .../main/webapp/public/css/dashboards/adhoc.css |   58 -
 .../main/webapp/public/css/dashboards/view.css  |   18 -
 .../src/main/webapp/public/css/main.css         |  553 -
 .../src/main/webapp/public/images/favicon.png   |  Bin 4209 -> 0 bytes
 .../src/main/webapp/public/js/app.js            |  682 --
 .../src/main/webapp/public/js/app.time.js       |   55 -
 .../src/main/webapp/public/js/app.ui.js         |   66 -
 .../src/main/webapp/public/js/common.js         |  211 -
 .../main/webapp/public/js/components/charts.js  |  188 -
 .../webapp/public/js/components/charts/bar.js   |  290 -
 .../public/js/components/charts/line3d.js       |  345 -
 .../main/webapp/public/js/components/file.js    |   49 -
 .../main/webapp/public/js/components/main.js    |   20 -
 .../webapp/public/js/components/sortTable.js    |  112 -
 .../main/webapp/public/js/components/tabs.js    |  107 -
 .../src/main/webapp/public/js/config.js         |   77 -
 .../webapp/public/js/ctrl/alertController.js    |  126 -
 .../webapp/public/js/ctrl/authController.js     |   63 -
 .../main/webapp/public/js/ctrl/damController.js |  109 -
 .../webapp/public/js/ctrl/policyController.js   |  885 --
 .../public/js/ctrl/sensitivityController.js     |  389 -
 .../webapp/public/js/ctrl/siteController.js     |  209 -
 .../webapp/public/js/ctrl/streamController.js   |  207 -
 .../public/js/ctrl/userProfileController.js     |  258 -
 eagle-webservice/ui-build.sh                    |   42 +
 186 files changed, 10213 insertions(+), 36604 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/LICENSE
----------------------------------------------------------------------
diff --git a/LICENSE b/LICENSE
index d194c1a..b474223 100755
--- a/LICENSE
+++ b/LICENSE
@@ -213,4 +213,10 @@ For AdminLTE:
 ==============================================================================
 This product bundles AdminLTE, which is available under a
 "MIT" license.  For details, see
-https://github.com/almasaeed2010/AdminLTE/blob/master/LICENSE.
\ No newline at end of file
+https://github.com/almasaeed2010/AdminLTE/blob/master/LICENSE.
+
+==============================================================================
+For Google Fonts: Source Sans Pro
+==============================================================================
+This product bundles "Google Fonts: Source Sans Pro", which is available under a "SIL Open Font License, 1.1" license.  
+For details, see https://www.google.com/fonts/attribution and http://scripts.sil.org/OFL

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/.gitignore
----------------------------------------------------------------------
diff --git a/eagle-webservice/.gitignore b/eagle-webservice/.gitignore
index 09e3bc9..b875523 100644
--- a/eagle-webservice/.gitignore
+++ b/eagle-webservice/.gitignore
@@ -1,2 +1,5 @@
 /bin/
 /target/
+node_modules
+ui
+tmp
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/pom.xml
----------------------------------------------------------------------
diff --git a/eagle-webservice/pom.xml b/eagle-webservice/pom.xml
index 1acce45..9c3a71e 100644
--- a/eagle-webservice/pom.xml
+++ b/eagle-webservice/pom.xml
@@ -1,20 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You 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.
-  -->
+<!-- ~ Licensed to the Apache Software Foundation (ASF) under one or more 
+	~ contributor license agreements. See the NOTICE file distributed with ~ 
+	this work for additional information regarding copyright ownership. ~ The 
+	ASF licenses this file to You 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. -->
 
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
@@ -23,239 +18,269 @@
 		<groupId>eagle</groupId>
 		<artifactId>eagle-parent</artifactId>
 		<version>0.3.0</version>
-        <relativePath>../pom.xml</relativePath>
-    </parent>
-    <artifactId>eagle-webservice</artifactId>
+		<relativePath>../pom.xml</relativePath>
+	</parent>
+	<artifactId>eagle-webservice</artifactId>
 	<packaging>war</packaging>
 	<name>eagle-webservice</name>
 
 	<dependencies>
-        <dependency>
-            <groupId>eagle</groupId>
-            <artifactId>eagle-service-base</artifactId>
-            <version>${project.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>log4j-over-slf4j</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        
 		<dependency>
 			<groupId>eagle</groupId>
-			<artifactId>eagle-storage-hbase</artifactId>
-            <version>${project.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>log4j-over-slf4j</artifactId>
-                </exclusion>
-            </exclusions>
+			<artifactId>eagle-service-base</artifactId>
+			<version>${project.version}</version>
+			<exclusions>
+				<exclusion>
+					<groupId>org.slf4j</groupId>
+					<artifactId>log4j-over-slf4j</artifactId>
+				</exclusion>
+			</exclusions>
 		</dependency>
 
-        <!-- jersey needs asm3, so use extcos 0.3b-->
-        <dependency>
-            <groupId>net.sf.extcos</groupId>
-            <artifactId>extcos</artifactId>
-            <version>${extcos3.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>eagle</groupId>
-            <artifactId>eagle-security-hbase-web</artifactId>
-            <version>${project.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.ow2.asm</groupId>
-                    <artifactId>asm-all</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>asm</groupId>
-                    <artifactId>asm</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>asm</groupId>
-                    <artifactId>asm-all</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>asm</groupId>
-                    <artifactId>asm-commons</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>asm</groupId>
-                    <artifactId>asm-tree</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>eagle</groupId>
-            <artifactId>eagle-security-hive-web</artifactId>
-            <version>${project.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.ow2.asm</groupId>
-                    <artifactId>asm-all</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>asm</groupId>
-                    <artifactId>asm</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>asm</groupId>
-                    <artifactId>asm-all</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>asm</groupId>
-                    <artifactId>asm-commons</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>asm</groupId>
-                    <artifactId>asm-tree</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <dependency>
-            <groupId>eagle</groupId>
-            <artifactId>eagle-security-hdfs-web</artifactId>
-            <version>${project.version}</version>
-        </dependency>
+		<dependency>
+			<groupId>eagle</groupId>
+			<artifactId>eagle-storage-hbase</artifactId>
+			<version>${project.version}</version>
+			<exclusions>
+				<exclusion>
+					<groupId>org.slf4j</groupId>
+					<artifactId>log4j-over-slf4j</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
 
-        <!-- eagle user profile common dependency-->
-        <dependency>
-            <groupId>eagle</groupId>
-            <artifactId>eagle-security-userprofile-common</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.tomcat</groupId>
-            <artifactId>tomcat-catalina</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>eagle</groupId>
-            <artifactId>eagle-machinelearning-base</artifactId>
-            <version>${project.version}</version>
-        </dependency>
+		<!-- jersey needs asm3, so use extcos 0.3b -->
+		<dependency>
+			<groupId>net.sf.extcos</groupId>
+			<artifactId>extcos</artifactId>
+			<version>${extcos3.version}</version>
+		</dependency>
 
-        <dependency>
-            <groupId>eagle</groupId>
-            <artifactId>eagle-alert-base</artifactId>
-            <version>${project.version}</version>
+		<dependency>
+			<groupId>eagle</groupId>
+			<artifactId>eagle-security-hbase-web</artifactId>
+			<version>${project.version}</version>
+			<exclusions>
+				<exclusion>
+					<groupId>org.ow2.asm</groupId>
+					<artifactId>asm-all</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>asm</groupId>
+					<artifactId>asm</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>asm</groupId>
+					<artifactId>asm-all</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>asm</groupId>
+					<artifactId>asm-commons</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>asm</groupId>
+					<artifactId>asm-tree</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>eagle</groupId>
+			<artifactId>eagle-security-hive-web</artifactId>
+			<version>${project.version}</version>
 			<exclusions>
-                <exclusion>
-                    <groupId>org.apache.storm</groupId>
-  				    <artifactId>storm-core</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-        <groupId>eagle</groupId>
-            <artifactId>eagle-alert-service</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-	  	<dependency>
-  			<groupId>org.wso2.siddhi</groupId>
-  			<artifactId>siddhi-core</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>slf4j-simple</artifactId>
-                </exclusion>
-            </exclusions>
-  		</dependency>
-	  	<dependency>
-  			<groupId>org.wso2.siddhi</groupId>
-  			<artifactId>siddhi-extension-string</artifactId>
-  		</dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <scope>test</scope>
-        </dependency>
+				<exclusion>
+					<groupId>org.ow2.asm</groupId>
+					<artifactId>asm-all</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>asm</groupId>
+					<artifactId>asm</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>asm</groupId>
+					<artifactId>asm-all</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>asm</groupId>
+					<artifactId>asm-commons</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>asm</groupId>
+					<artifactId>asm-tree</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
 
-        <!-- Spring framework -->
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-beans</artifactId>
-            <version>${spring.framework.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-webmvc</artifactId>
-            <version>${spring.framework.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-jdbc</artifactId>
-            <version>${spring.framework.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-web</artifactId>
-            <version>${spring.framework.version}</version>
-            <type>jar</type>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-core</artifactId>
-            <version>${spring.framework.version}</version>
-            <type>jar</type>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-aop</artifactId>
-            <version>${spring.framework.version}</version>
-            <type>jar</type>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-test</artifactId>
-            <version>${spring.framework.version}</version>
-        </dependency>
+		<dependency>
+			<groupId>eagle</groupId>
+			<artifactId>eagle-security-hdfs-web</artifactId>
+			<version>${project.version}</version>
+		</dependency>
 
-        <!-- Spring Security -->
-        <dependency>
-            <groupId>org.springframework.security</groupId>
-            <artifactId>spring-security-core</artifactId>
-            <version>${spring.framework.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.security</groupId>
-            <artifactId>spring-security-web</artifactId>
-            <version>${spring.framework.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.security</groupId>
-            <artifactId>spring-security-config</artifactId>
-            <version>${spring.framework.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.security</groupId>
-            <artifactId>spring-security-acl</artifactId>
-            <version>${spring.framework.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.security</groupId>
-            <artifactId>spring-security-ldap</artifactId>
-            <version>${spring.framework.version}</version>
-        </dependency>
+		<!-- eagle user profile common dependency -->
+		<dependency>
+			<groupId>eagle</groupId>
+			<artifactId>eagle-security-userprofile-common</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.tomcat</groupId>
+			<artifactId>tomcat-catalina</artifactId>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>eagle</groupId>
+			<artifactId>eagle-machinelearning-base</artifactId>
+			<version>${project.version}</version>
+		</dependency>
 
+		<dependency>
+			<groupId>eagle</groupId>
+			<artifactId>eagle-alert-base</artifactId>
+			<version>${project.version}</version>
+			<exclusions>
+				<exclusion>
+					<groupId>org.apache.storm</groupId>
+					<artifactId>storm-core</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>eagle</groupId>
+			<artifactId>eagle-alert-service</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.wso2.siddhi</groupId>
+			<artifactId>siddhi-core</artifactId>
+			<exclusions>
+				<exclusion>
+					<groupId>org.slf4j</groupId>
+					<artifactId>slf4j-simple</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.wso2.siddhi</groupId>
+			<artifactId>siddhi-extension-string</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<scope>test</scope>
+		</dependency>
 
+		<!-- Spring framework -->
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-beans</artifactId>
+			<version>${spring.framework.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-webmvc</artifactId>
+			<version>${spring.framework.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-jdbc</artifactId>
+			<version>${spring.framework.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-web</artifactId>
+			<version>${spring.framework.version}</version>
+			<type>jar</type>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-core</artifactId>
+			<version>${spring.framework.version}</version>
+			<type>jar</type>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-aop</artifactId>
+			<version>${spring.framework.version}</version>
+			<type>jar</type>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-test</artifactId>
+			<version>${spring.framework.version}</version>
+		</dependency>
 
-    </dependencies>
+		<!-- Spring Security -->
+		<dependency>
+			<groupId>org.springframework.security</groupId>
+			<artifactId>spring-security-core</artifactId>
+			<version>${spring.framework.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.security</groupId>
+			<artifactId>spring-security-web</artifactId>
+			<version>${spring.framework.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.security</groupId>
+			<artifactId>spring-security-config</artifactId>
+			<version>${spring.framework.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.security</groupId>
+			<artifactId>spring-security-acl</artifactId>
+			<version>${spring.framework.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.security</groupId>
+			<artifactId>spring-security-ldap</artifactId>
+			<version>${spring.framework.version}</version>
+		</dependency>
+	</dependencies>
 
-    <build>
-        <finalName>eagle-service</finalName>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.tomcat.maven</groupId>
-                <artifactId>tomcat7-maven-plugin</artifactId>
-                <configuration>
-                    <path>eagle-service</path>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
+	<build>
+		<finalName>eagle-service</finalName>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.tomcat.maven</groupId>
+				<artifactId>tomcat7-maven-plugin</artifactId>
+				<configuration>
+					<path>eagle-service</path>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>exec-maven-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>exec-ui-install</id>
+						<phase>generate-sources</phase>
+						<goals>
+							<goal>exec</goal>
+						</goals>
+						<configuration>
+							<executable>bash</executable>
+							<arguments>
+								<argument>${basedir}/ui-build.sh</argument>
+							</arguments>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-war-plugin</artifactId>
+				<version>2.6</version>
+				<configuration>
+					<packagingExcludes>
+						app/,
+						node_modules/,
+						grunt.json,
+						Gruntfile.js,
+						package.json
+					</packagingExcludes>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
 </project>

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/Gruntfile.js
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/Gruntfile.js b/eagle-webservice/src/main/webapp/Gruntfile.js
new file mode 100644
index 0000000..14fc777
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/Gruntfile.js
@@ -0,0 +1,131 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+*/
+'use strict';
+
+module.exports = function (grunt) {
+	// Project configuration.
+	grunt.initConfig({
+		pkg: grunt.file.readJSON('package.json'),
+		config: grunt.file.readJSON('grunt.json'),
+
+		clean: {
+			build: ['ui/', 'tmp/'],
+			tmp: ['tmp/'],
+			ui: ['ui/'],
+		},
+		concat: {
+			app: {
+				src: [
+					'app/public/js/app.js',
+					'app/public/js/app.*.js',
+
+					'app/public/js/common.js',
+
+					'app/public/js/components/main.js',
+					'app/public/js/components/**.js',
+
+					'app/public/js/ctrl/damController.js',
+					'app/public/js/ctrl/*.js',
+				],
+				dest: 'tmp/public/js/scripts.js'
+			},
+			js: '<%= config.concat.js %>',
+			css: {
+				options: {
+					process: function(src, filepath) {
+						return "@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic);" +
+						src.replace('@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic);', '');
+					}
+				},
+				src: '<%= config.concat.css.src %>',
+				dest: '<%= config.concat.css.dest %>',
+			}
+		},
+		'regex-replace': {
+			strict: {
+				src: ['tmp/public/js/scripts.js'],
+				actions: [
+					{
+						name: 'use strict',
+						search: '\\\'use strict\\\';?',
+						replace: '',
+						flags: 'gmi'
+					}
+				]
+			},
+		},
+		uglify: {
+			ui: {
+				options: {
+					mangle: false
+				},
+				src: 'tmp/public/js/scripts.js',
+				dest: 'tmp/public/js/scripts.min.js'
+			}
+		},
+		cssmin: {
+			ui: {
+				files: {
+					'tmp/public/css/styles.css': ['app/public/css/main.css']
+				}
+			}
+		},
+		htmlrefs: {
+			ui: {
+				src: 'app/index.html',
+				dest: "tmp/index.html",
+			}
+		},
+		copy: {
+			ui: {
+				files: [
+					{expand: true, cwd: 'tmp/', src: ['**'], dest: 'ui'},
+					{expand: true, cwd: 'app/', src: ['public/images/**', 'partials/**'], dest: 'ui'},
+					{expand: true, cwd: 'node_modules/font-awesome/', src: ['fonts/**'], dest: 'ui/public'},
+					{expand: true, cwd: 'node_modules/bootstrap/', src: ['fonts/**'], dest: 'ui/public'},
+				]
+			}
+		}
+	});
+
+	grunt.loadNpmTasks('grunt-contrib-clean');
+	grunt.loadNpmTasks('grunt-contrib-concat');
+	grunt.loadNpmTasks('grunt-contrib-uglify');
+	grunt.loadNpmTasks('grunt-contrib-cssmin');
+	grunt.loadNpmTasks('grunt-htmlrefs');
+	grunt.loadNpmTasks('grunt-regex-replace');
+	grunt.loadNpmTasks('grunt-contrib-copy');
+
+	grunt.registerTask('default', [
+		// Clean Env
+		'clean:build',
+		// Compress JS
+		'concat:app',
+		'regex-replace:strict',
+		'uglify',
+		'concat:js',
+		// Compress CSS
+		'cssmin',
+		'concat:css',
+		// Pass HTML Resources
+		'htmlrefs',
+		'copy',
+		// Clean Env
+		'clean:tmp',
+	]);
+};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/README.md
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/README.md b/eagle-webservice/src/main/webapp/README.md
new file mode 100644
index 0000000..b4168d5
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/README.md
@@ -0,0 +1,4 @@
+Apache Eagle Web APP
+==
+
+Web client for Apache Eagle
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/app/index.html
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/app/index.html b/eagle-webservice/src/main/webapp/app/index.html
new file mode 100644
index 0000000..cc7d344
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/app/index.html
@@ -0,0 +1,216 @@
+<!DOCTYPE html>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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.
+  -->
+
+<html ng-app="eagleApp" ng-controller="MainCtrl">
+	<head>
+		<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta charset="UTF-8">
+		<meta content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport'>
+		<link rel="shortcut icon" href="public/images/favicon.png">
+
+		<title>Eagle</title>
+		<link rel="shortcut icon" type="image/png" href="public/images/favicon.png">
+
+		<!-- ref:css public/css/styles.min.css -->
+		<link href="public/css/main.css" rel="stylesheet" type="text/css" media="screen">
+		<link href="../node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" type="text/css" media="screen">
+		<link href="public/assets/bootstrap-components/css/bootstrap-components.min.css" rel="stylesheet" type="text/css" media="screen">
+		<link href="../node_modules/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
+		<link href="../node_modules/admin-lte/dist/css/AdminLTE.min.css" rel="stylesheet" type="text/css" />
+		<link href="../node_modules/admin-lte/dist/css/skins/skin-blue.min.css" rel="stylesheet" type="text/css" />
+		<!-- endref -->
+	</head>
+	<body class="skin-blue sidebar-mini" ng-class="{'no-sidebar' : globalContent.hideSidebar}">
+		<!-- Site wrapper -->
+		<div class="wrapper">
+			<header class="main-header">
+				<a href="#/" class="logo">
+					<span class="logo-mini">DAM</span>
+					<span class="logo-lg">Eagle <small>Data Activity Monitoring</small></span>
+				</a>
+				<!-- Header Navbar: style can be found in header.less -->
+				<nav class="navbar navbar-static-top" role="navigation">
+					<!-- Sidebar toggle button-->
+					<a href="#" ng-hide="globalContent.hideSidebar" class="sidebar-toggle" data-toggle="offcanvas" role="button">
+						<span class="sr-only">Toggle navigation</span>
+						<span class="icon-bar"></span>
+						<span class="icon-bar"></span>
+						<span class="icon-bar"></span>
+					</a>
+					<div class="navbar-custom-menu">
+						<ul class="nav navbar-nav">
+							<!-- Site -->
+							<li class="dropdown" ng-show="!globalContent.hideSite && !globalContent.lockSite">
+								<a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
+									<i class="fa fa-server"></i>
+									{{site.current().name}}
+									<i class="fa fa-caret-down"></i>
+								</a>
+								<ul class="dropdown-menu">
+									<li ng-repeat="sites in site.list">
+										<a ng-click="site.current(sites);">
+											<span class="fa fa-database"></span> {{sites.name}}
+										</a>
+									</li>
+									<!--li role="separator" class="divider"></li>
+									<li>
+										<a href="#/dam/siteList"><span class="fa fa-cog"></span>Config Sites</a>
+									</li-->
+								</ul>
+							</li>
+							<li class="dropdown" ng-show="globalContent.lockSite">
+								<a>
+									<i class="fa fa-server"></i>
+									{{site.current().name}}
+								</a>
+							</li>
+
+							<!-- User -->
+							<li class="dropdown user user-menu" ng-hide="globalContent.hideUser">
+								<a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
+									<i class="fa fa-user"></i>
+									{{auth.userProfile.username}}
+								</a>
+								<!--ul class="dropdown-menu">
+									<li>
+										<a ng-click="logout();">
+											<span class="fa fa-sign-out"></span> Logout
+										</a>
+									</li>
+								</ul-->
+								<ul class="dropdown-menu">
+									<!-- User image -->
+									<li class="user-header">
+										<span class="img-circle">
+											<span class="fa fa-user" alt="User Image"></span>
+										</span>
+										<p>
+											{{auth.userProfile.username}}
+											<small>
+												<span ng-repeat="role in auth.userProfile.authorities">{{role.authority}} </span>
+											</small>
+										</p>
+									</li>
+									<!-- Menu Footer-->
+									<li class="user-footer">
+										<div class="pull-right">
+											<a ng-click="logout();" class="btn btn-default btn-flat">Sign out</a>
+										</div>
+									</li>
+								</ul>
+							</li>
+						</ul>
+					</div>
+				</nav>
+			</header>
+
+			<!-- =============================================== -->
+			<!-- Left side column. contains the side bar -->
+			<aside class="main-sidebar" ng-hide="globalContent.hideSidebar">
+				<!-- side bar: style can be found in sidebar.less -->
+				<section class="sidebar">
+					<ul class="sidebar-menu">
+						<li ng-repeat="page in globalContent.pageList" ng-class="getNavClass(page)" ng-show="getNavVisible(page)">
+							<a href="{{page.url}}">
+								<i class="fa fa-{{page.icon}}"></i> <span>{{page.title}}</span> 
+							</a>
+						</li>
+					</ul>
+				</section>
+				<!-- /.sidebar -->
+			</aside>
+
+			<!-- =============================================== -->
+			<!-- Right side column. Contains the navbar and content of the page -->
+			<div class="content-wrapper">
+				<!-- Content Header (Page header) -->
+				<section class="content-header" ng-hide="globalContent.hideSidebar">
+					<h1>
+						<span class="pageTitle">{{globalContent.pageTitle}}</span>
+						<small class="pageSubTitle">{{globalContent.pageSubTitle}}</small>
+					</h1>
+
+					<ol class="breadcrumb">
+						<li ng-repeat="nav in globalContent.navPath">
+							<a ng-href="{{$last ? '' : globalContent.navMapping[nav]}}">
+								<span class="fa fa-home" ng-show="$first"></span>
+								{{nav}}
+							</a>
+						</li>
+					</ol>
+				</section>
+
+				<!-- Main content -->
+				<section class="content">
+					<div id="content" ng-view></div>
+				</section><!-- /.content -->
+			</div><!-- /.content-wrapper -->
+		</div><!-- ./wrapper -->
+
+		<!-- ref:js public/js/doc.js -->
+		<script src="../node_modules/jquery/dist/jquery.min.js"></script>
+		<script src="../node_modules/jquery-slimscroll/jquery.slimscroll.min.js"></script>
+		<script src="../node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
+		<script src="public/assets/bootstrap-components/js/bootstrap-components.min.js"></script>
+		<script src="../node_modules/moment/min/moment-with-locales.min.js"></script>
+		<script src="../node_modules/moment-timezone/builds/moment-timezone-with-data.min.js"></script>
+		<script src="../node_modules/admin-lte/dist/js/app.min.js"></script>
+		<script src="../node_modules/angular/angular.min.js"></script>
+		<script src="../node_modules/angular-resource/angular-resource.min.js"></script>
+		<script src="../node_modules/angular-route/angular-route.min.js"></script>
+		<script src="../node_modules/angular-cookies/angular-cookies.min.js"></script>
+		<script src="../node_modules/angular-ui-bootstrap/ui-bootstrap-tpls.min.js"></script>
+		<script src="../node_modules/Flot/jquery.flot.min.js"></script>
+		<script src="../node_modules/Flot/jquery.flot.stack.min.js"></script>
+		<script src="../node_modules/Flot/jquery.flot.pie.min.js"></script>
+		<script src="../node_modules/Flot/jquery.flot.time.min.js"></script>
+		<script src="../node_modules/Flot/jquery.flot.crosshair.min.js"></script>
+		<script src="public/assets/flot/jquery.flot.tooltip.js"></script>
+		<script src="public/assets/flot/jquery.flot.legend.js"></script>
+		<script src="../node_modules/d3/d3.min.js"></script>
+
+
+		<script src="public/js/app.js" type="text/javascript" charset="utf-8"></script>
+		<script src="public/js/app.ui.js" type="text/javascript" charset="utf-8"></script>
+		<script src="public/js/app.time.js" type="text/javascript" charset="utf-8"></script>
+		<script src="public/js/app.config.js" type="text/javascript" charset="utf-8"></script>
+
+		<script src="public/js/common.js" type="text/javascript" charset="utf-8"></script>
+
+		<script src="public/js/components/main.js" type="text/javascript" charset="utf-8"></script>
+		<script src="public/js/components/sortTable.js" type="text/javascript" charset="utf-8"></script>
+		<script src="public/js/components/tabs.js" type="text/javascript" charset="utf-8"></script>
+		<script src="public/js/components/file.js" type="text/javascript" charset="utf-8"></script>
+		<script src="public/js/components/charts.js" type="text/javascript" charset="utf-8"></script>
+		<script src="public/js/components/charts/bar.js" type="text/javascript" charset="utf-8"></script>
+		<script src="public/js/components/charts/line3d.js" type="text/javascript" charset="utf-8"></script>
+
+
+		<script src="public/js/ctrl/damController.js" type="text/javascript" charset="utf-8"></script>
+		<script src="public/js/ctrl/policyController.js" type="text/javascript" charset="utf-8"></script>
+		<script src="public/js/ctrl/siteController.js" type="text/javascript" charset="utf-8"></script>
+		<script src="public/js/ctrl/streamController.js" type="text/javascript" charset="utf-8"></script>
+		<script src="public/js/ctrl/alertController.js" type="text/javascript" charset="utf-8"></script>
+		<script src="public/js/ctrl/sensitivityController.js" type="text/javascript" charset="utf-8"></script>
+		<script src="public/js/ctrl/userProfileController.js" type="text/javascript" charset="utf-8"></script>
+		<script src="public/js/ctrl/authController.js" type="text/javascript" charset="utf-8"></script>
+		<!-- endref -->
+	</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/app/partials/dam/alertDetail.html
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/app/partials/dam/alertDetail.html b/eagle-webservice/src/main/webapp/app/partials/dam/alertDetail.html
new file mode 100644
index 0000000..9b0ec01
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/app/partials/dam/alertDetail.html
@@ -0,0 +1,61 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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.
+  -->
+<div class="box box-info">
+	<div class="box-header with-border">
+		<h3 class="box-title" id="policyId">
+			{{alert.tags.policyId}}
+			<small>{{common.format.date(alert.timestamp)}}</small>
+		</h3>
+	</div><!-- /.box-header -->
+
+	<div class="box-body">
+		<a class="btn btn-primary pull-right" href="#/dam/policyDetail/?policy={{alert.tags.policyId}}&site={{alert.tags.site}}&executor={{alert.tags.alertExecutorId}}">View Policy</a>
+
+		<div class="inline-group">
+			<dl><dt>Site</dt><dd>{{alert.tags.site}}</dd></dl>
+			<dl><dt>Data Source</dt><dd>{{alert.tags.dataSource}}</dd></dl>
+		</div>
+		<div class="inline-group">
+			<dl><dt>Alert Time</dt><dd>{{common.format.date(alert.timestamp)}}</dd></dl>
+			<dl><dt>Message Time</dt><dd>{{common.format.date(alert.alertContext.properties.timestamp)}}</dd></dl>
+		</div>
+		<!--div class="inline-group">
+			<dl><dt>Severity</dt><dd>{{alert.alertContext.properties.severity}}</dd></dl>
+		</div-->
+		<div class="inline-group">
+			<dl><dt>Stream Name</dt><dd>{{alert.tags.sourceStreams}}</dd></dl>
+		</div>
+		<div class="inline-group">
+			<dl><dt>Alert Source</dt><dd>{{alert.tags.alertSource}}</dd></dl>
+		</div>
+		<div class="inline-group">
+			<dl><dt>User</dt><dd>{{alert.alertContext.properties.user}}</dd></dl>
+			<dl><dt>Host</dt><dd>{{alert.alertContext.properties.host}}</dd></dl>
+		</div>
+		<div class="inline-group">
+			<dl><dt>Event</dt><dd>{{alert.alertContext.properties.alertEvent}}</dd></dl>
+		</div>
+		<div class="inline-group">
+			<dl><dt>Message</dt><dd>{{alert.alertContext.properties.alertMessage}}</dd></dl>
+		</div>
+	</div><!-- /.box-body -->
+
+	<div class="overlay" ng-hide="alertList._promise.$$state.status === 1;">
+		<i class="fa fa-refresh fa-spin"></i>
+	</div>
+</div>

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/app/partials/dam/alertList.html
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/app/partials/dam/alertList.html b/eagle-webservice/src/main/webapp/app/partials/dam/alertList.html
new file mode 100644
index 0000000..d5492ca
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/app/partials/dam/alertList.html
@@ -0,0 +1,83 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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.
+  -->
+<div class="box box-primary">
+	<div class="box-header with-border">
+		<i class="fa fa-list-alt"> </i>
+		<h3 class="box-title">
+			{{dataSource || "All Alerts"}}
+			<div class="btn-group">
+				<button class="btn btn-box-tool dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
+					<i class="fa fa-caret-down"></i>
+				</button>
+				<ul id="programList" class="dropdown-menu" role="menu">
+					<li ng-repeat="dataSrc in site.current().dataSrcList">
+						<a href="#/dam/alertList/{{dataSrc.tags.dataSource}}">{{dataSrc.tags.dataSource}}</a>
+					</li>
+					<li class="divider"></li>
+					<li>
+						<a href="#/dam/alertList">All Policy List</a>
+					</li>
+				</ul>
+			</div>
+		</h3>
+	</div>
+	<div class="box-body">
+		<p ng-show="!alertList.ready">
+			<span class="fa fa-refresh fa-spin"> </span>
+			Loading...
+		</p>
+
+		<div sorttable source="alertList" sort="-timestamp">
+			<table class="table table-bordered" ng-non-bindable>
+				<thead>
+					<tr>
+						<th width="170" sortpath="timestamp">Alert Time</th>
+						<th width="170" sortpath="alertContext.properties.timestamp">Message Time</th>
+						<th width="105" sortpath="tags.dataSource">Data Source</th>
+						<!--th width="70" sortpath="severity">Type</th-->
+						<th width="150" sortpath="tags.policyId">Policy Name</th>
+						<th width="60" sortpath="alertContext.properties.user">User</th>
+						<th width="150" sortpath="alertContext.properties.host">Host</th>
+						<th sortpath="alertContext.properties.emailMessage">Description</th>
+						<th width="50"> </th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr ng-class="{info : item.__new}">
+						<td>{{common.format.date(item.timestamp)}}</td>
+						<td>{{common.format.date(item.alertContext.properties.timestamp)}}</td>
+						<td>{{item.tags.dataSource}}</td>
+						<!--td>{{item.severity}}</td-->
+						<td class="text-nowrap">
+							<a class="fa fa-share-square-o" ng-show="item.tags.policyId"
+							href="#/dam/policyDetail/?policy={{item.tags.policyId}}&site={{item.tags.site}}&executor={{item.tags.alertExecutorId}}"> </a>
+							{{item.tags.policyId}}
+						</td>
+						<td>{{item.alertContext.properties.user}}</td>
+						<td>{{item.alertContext.properties.host}}</td>
+						<td>{{item.alertContext.properties.alertMessage}}</td>
+						<td><a href="#/dam/alertDetail/{{item.encodedRowkey}}">Detail</a></td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+
+	</div>
+	<!--div class="box-footer clearfix">
+	</div-->
+</div>

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/app/partials/dam/login.html
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/app/partials/dam/login.html b/eagle-webservice/src/main/webapp/app/partials/dam/login.html
new file mode 100644
index 0000000..0e2287c
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/app/partials/dam/login.html
@@ -0,0 +1,49 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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.
+  -->
+
+<div class="login-box">
+	<div class="login-logo">
+		<a href="#/"> Data Activity Monitoring </a>
+	</div>
+	<!-- /.login-logo -->
+	<div class="login-box-body">
+		<p class="login-box-msg">Sign in to start your session</p>
+		<div class="form-group has-feedback">
+			<input type="text" class="form-control" placeholder="User Name" ng-model="username" ng-keypress="login($event)" autocomplete="off" id="username">
+			<span class="glyphicon glyphicon-user form-control-feedback"></span>
+		</div>
+		<div class="form-group has-feedback">
+			<input type="password" class="form-control" placeholder="Password" ng-model="password" ng-keypress="login($event)">
+			<span class="glyphicon glyphicon-lock form-control-feedback"></span>
+		</div>
+		<div class="row">
+			<div class="col-xs-8">
+				<!--div class="checkbox">
+					<label> <input type="checkbox" /> Remember Me
+					</label>
+				</div-->
+			</div>
+			<!-- /.col -->
+			<div class="col-xs-4">
+				<button class="btn btn-primary btn-block btn-flat" ng-click="login($event, true)" ng-disabled="lock">Sign In</button>
+			</div>
+			<!-- /.col -->
+		</div>
+	</div>
+	<!-- /.login-box-body -->
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/app/partials/dam/policyDetail.html
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/app/partials/dam/policyDetail.html b/eagle-webservice/src/main/webapp/app/partials/dam/policyDetail.html
new file mode 100644
index 0000000..5587ae0
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/app/partials/dam/policyDetail.html
@@ -0,0 +1,171 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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.
+  -->
+<div class="box box-info">
+	<div class="box-header with-border">
+		<h3 class="box-title">
+			{{policy.tags.policyId}}
+			<small>{{policy.tags.site}}</small>
+		</h3>
+	</div><!-- /.box-header -->
+
+	<div class="box-body">
+		<div class="row">
+			<div class="col-xs-8">
+				<div class="inline-group">
+					<dl><dt>Data Source</dt><dd>{{policy.tags.dataSource}}</dd></dl>
+					<dl><dt>Status</dt><dd>
+						<span ng-show="policy.enabled" class="text-muted"><i class="fa fa-square text-green"></i> Enabled</span>
+						<span ng-show="!policy.enabled" class="text-muted"><i class="fa fa-square text-muted"></i> Disabled</span>
+					</dd></dl>
+				</div>
+				<div class="inline-group">
+					<dl><dt>Description</dt><dd>{{policy.desc}}</dd></dl>
+				</div>
+				<div class="inline-group">
+					<dl><dt>Alert</dt><dd>
+						<a href="mailto:{{mail}}" ng-repeat="mail in policy.__mailList track by $index" style="margin-right: 10px;">{{mail}}</a>
+					</dd></dl>
+				</div>
+			</div>
+			<div class="col-xs-4 text-right" ng-show="auth.isRole('ROLE_ADMIN')">
+				<a class="btn btn-primary" href="#/dam/policyEdit/{{policy.encodedRowkey}}">Edit</a>
+				<button class="btn btn-warning" ng-show="!policy.enabled" ng-click="updatePolicyStatus(policy, true)">Enable</button>
+				<button class="btn btn-warning" ng-show="policy.enabled" ng-click="updatePolicyStatus(policy, false)">Disable</button>
+				<button class="btn btn-danger" ng-click="deletePolicy(policy)">Delete</button>
+			</div>
+		</div>
+	</div><!-- /.box-body -->
+
+	<div class="overlay" ng-hide="policyList._promise.$$state.status === 1;">
+		<i class="fa fa-refresh fa-spin"></i>
+	</div>
+
+	<div class="box-footer clearfix">
+		<a data-toggle="collapse" href="[data-id='query']">
+			View Query
+		</a>
+		<div data-id="query" class="collapse in">
+			<pre>{{policy.__expression}}</pre>
+		</div>
+	</div>
+</div>
+
+<div class="nav-tabs-custom">
+	<ul class="nav nav-tabs">
+		<li class="active">
+			<a href="[data-id='visualization']" data-toggle="tab">Visualization</a>
+		</li>
+		<li>
+			<a href="[data-id='statistics']" data-toggle="tab">Statistics</a>
+		</li>
+		<li>
+			<a href="[data-id='alerts']" data-toggle="tab">Alerts</a>
+		</li>
+	</ul>
+	<div class="tab-content">
+		<div class="tab-pane active" data-id="visualization">
+			<div class="row">
+				<div class="col-xs-6">
+					<chart title="Policy Eval Count" data="policyEvalSeries"></chart>
+				</div>
+				<div class="col-xs-6">
+					<chart title="Policy Eval Fail Count" data="policyEvalFailSeries"></chart>
+				</div>
+				<div class="col-xs-6">
+					<chart title="Alert Count" data="alertSeries"></chart>
+				</div>
+				<div class="col-xs-6">
+					<chart title="Alert Fail Count" data="alertFailSeries"></chart>
+				</div>
+			</div>
+		</div><!-- /.tab-pane -->
+
+		<div class="tab-pane" data-id="statistics">
+			<div class="row">
+				<div class="col-xs-3">
+					<div class="info-box bg-aqua">
+						<span class="info-box-icon"><i class="fa fa-bookmark-o"></i></span>
+						<div class="info-box-content">
+							<span class="info-box-text">Policy Eval Count</span>
+							<span class="info-box-number">{{common.array.sum(policyEvalSeries, "1")}} <small>(Monthly)</small></span>
+							<span class="info-box-number">{{policyEvalSeries[policyEvalSeries.length - 1][1]}} <small>(Daily)</small></span>
+						</div><!-- /.info-box-content -->
+					</div>
+				</div>
+				<div class="col-xs-3">
+					<div class="info-box bg-red">
+						<span class="info-box-icon"><i class="fa fa-bookmark-o"></i></span>
+						<div class="info-box-content">
+							<span class="info-box-text">Policy Eval Fail Count</span>
+							<span class="info-box-number">{{common.array.sum(policyEvalFailSeries, "1")}} <small>(Monthly)</small></span>
+							<span class="info-box-number">{{policyEvalFailSeries[policyEvalFailSeries.length - 1][1]}} <small>(Daily)</small></span>
+						</div><!-- /.info-box-content -->
+					</div>
+				</div>
+				<div class="col-xs-3">
+					<div class="info-box bg-aqua">
+						<span class="info-box-icon"><i class="fa fa-bookmark-o"></i></span>
+						<div class="info-box-content">
+							<span class="info-box-text">Alert Count</span>
+							<span class="info-box-number">{{common.array.sum(alertSeries, "1")}} <small>(Monthly)</small></span>
+							<span class="info-box-number">{{alertSeries[alertSeries.length - 1][1]}} <small>(Daily)</small></span>
+						</div><!-- /.info-box-content -->
+					</div>
+				</div>
+				<div class="col-xs-3">
+					<div class="info-box bg-red">
+						<span class="info-box-icon"><i class="fa fa-bookmark-o"></i></span>
+						<div class="info-box-content">
+							<span class="info-box-text">Alert Fail Count</span>
+							<span class="info-box-number">{{common.array.sum(alertFailSeries, "1")}} <small>(Monthly)</small></span>
+							<span class="info-box-number">{{alertFailSeries[alertFailSeries.length - 1][1]}} <small>(Daily)</small></span>
+						</div><!-- /.info-box-content -->
+					</div>
+				</div>
+			</div>
+		</div><!-- /.tab-pane -->
+
+		<div class="tab-pane" data-id="alerts">
+			<div sorttable source="alertList" sort="-timestamp">
+				<table class="table table-bordered" ng-non-bindable>
+					<thead>
+						<tr>
+							<th width="170" sortpath="timestamp">Alert Time</th>
+							<th width="170" sortpath="alertContext.properties.timestamp">Message Time</th>
+							<th width="60" sortpath="alertContext.properties.user">User</th>
+							<th width="150" sortpath="alertContext.properties.host">Host</th>
+							<th sortpath="alertContext.properties.emailMessage">Description</th>
+							<th width="50"> </th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr ng-class="{info : item.__new}">
+							<td>{{common.format.date(item.timestamp)}}</td>
+							<td>{{common.format.date(item.alertContext.properties.timestamp)}}</td>
+							<td>{{item.alertContext.properties.user}}</td>
+							<td>{{item.alertContext.properties.host}}</td>
+							<td>{{item.alertContext.properties.alertMessage}}</td>
+							<td><a href="#/dam/alertDetail/{{item.encodedRowkey}}">Detail</a></td>
+						</tr>
+					</tbody>
+				</table>
+			</div>
+		</div><!-- /.tab-pane -->
+
+	</div><!-- /.tab-content -->
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/app/partials/dam/policyEdit.html
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/app/partials/dam/policyEdit.html b/eagle-webservice/src/main/webapp/app/partials/dam/policyEdit.html
new file mode 100644
index 0000000..11f029e
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/app/partials/dam/policyEdit.html
@@ -0,0 +1,352 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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.
+  -->
+<div class="progress active" ng-show="!streamReady">
+	<div class="progress-bar progress-bar-primary progress-bar-striped" style="width: 100%">
+	</div>
+</div>
+
+<!-- Step navigation -->
+<div ng-show="streamReady">
+	<div class="row step-cntr">
+		<div class="col-md-3" ng-repeat="step in steps">
+			<div class="step" ng-class="stepSelect($index + 1)">
+				<h1>{{$index + 1}}</h1>
+				<h2>Step {{$index + 1}}</h2>
+				<p title="{{step.title}}">{{step.title}}</p>
+			</div>
+		</div>
+	</div>
+
+	<!-- Step container -->
+	<div class="box box-info">
+		<div class="box-header with-border">
+			<h3 class="box-title">Step {{step}} - {{steps[step - 1].title}}</h3>
+		</div><!-- /.box-header -->
+
+		<div class="box-body">
+			<!-- ---------------------- Step Body Start ---------------------- -->
+
+			<!-- Step 1: Data Source -->
+			<div ng-show="step === 1">
+				<div class="form-group">
+					<label>Select Data Source</label>
+					<select class="form-control" ng-model="policy.tags.dataSource">
+						<option ng-repeat="dataSource in site.current().dataSrcList" ng-hide="dataSource.hide" value="{{dataSource.tags.dataSource}}">{{dataSource.desc || dataSource.tags.dataSource}}</option>
+					</select>
+				</div>
+			</div>
+
+			<!-- Step 2: Stream -->
+			<div ng-show="step === 2">
+				<div class="pull-right" ng-show="policy.__.advanced === undefined">
+					<span class="text-muted">or</span>
+					<a ng-click="policy.__.advanced = true;">Advanced</a>
+				</div>
+
+				<div class="form-group">
+					<label>Select Stream</label>
+					<select class="form-control" ng-model="policy.__.streamName" ng-show="!policy.__.advanced">
+						<option ng-repeat="stream in dataSources[policy.tags.dataSource]">{{stream.tags.streamName}}</option>
+					</select>
+					<select class="form-control" ng-show="policy.__.advanced" disabled="disabled">
+						<option>[Advanced Mode]</option>
+					</select>
+				</div>
+
+				<div class="checkbox" ng-show="policy.__.advanced !== undefined">
+					<label>
+						<input type="checkbox" ng-model="policy.__.advanced">
+						Advanced Mode
+					</label>
+				</div>
+			</div>
+
+			<!-- Step 3: Define Alert Policy -->
+			<div ng-show="step === 3 && !policy.__.advanced">
+				<!-- Criteria -->
+				<div>
+					<label>Match Criteria</label>
+					<a ng-click="collapse('.panel-group')">expand / collapse all</a>
+
+					<div class="panel-group panel-group-sm" role="tablist">
+						<div class="panel panel-default"
+							ng-repeat="meta in _stream.metas"
+							ng-init="op = '=='; val = null; type = (meta.attrType || '').toLowerCase();">
+							<div class="panel-heading" role="tab">
+								<h4 class="panel-title">
+									<span class="bg-navy disabled color-palette pull-right">
+										{{parseConditionDesc(meta.tags.attrName)}}
+									</span>
+
+									<a role="button" data-toggle="collapse" href="[data-name='{{meta.tags.attrName}}']" class="collapsed">
+										<span class="fa fa-square" ng-class="hasCondition(meta.tags.attrName, type) ? 'text-green' : 'text-muted'"> </span>
+										{{meta.attrDisplayName || meta.tags.attrName}}
+										<span class="fa fa-question-circle" ng-show="meta.attrDescription"
+										uib-tooltip="{{meta.attrDescription}}" tooltip-placement="right" tooltip-animation="false"> </span>
+									</a>
+								</h4>
+							</div>
+							<div data-name="{{meta.tags.attrName}}" data-type="{{meta.attrType}}" role="tabpanel" class="collapse">
+								<div class="panel-body">
+									<ul ng-show="type !== 'bool'">
+										<li ng-repeat="cond in policy.__.conditions[meta.tags.attrName]">
+											[<a ng-click="policy.__.conditions[meta.tags.attrName].splice($index, 1)">X</a>]
+											{{cond.toString()}}
+										</li>
+									</ul>
+
+									<!-- String -->
+									<div ng-if="type == 'string'">
+										<div class="input-group" style="max-width: 450px;">
+											<div class="input-group-btn">
+												<select class="form-control" ng-model="op">
+													<option ng-repeat="mark in ['==','!=','contains','regex']">{{mark}}</option>
+												</select>
+											</div>
+
+											<!-- With resolver -->
+											<input type="text" class="form-control" autocomplete="off" ng-model="val" ng-show="meta.attrValueResolver"
+												ng-keypress="conditionPress($event, meta.tags.attrName, op, val, type)"
+												uib-typeahead="item for item in resolverTypeahead($viewValue, meta.attrValueResolver)">
+											<!-- Without resolver -->
+											<input type="text" class="form-control" autocomplete="off" ng-model="val" ng-show="!meta.attrValueResolver"
+												ng-keypress="conditionPress($event, meta.tags.attrName, op, val, type)">
+
+											<span class="input-group-btn">
+												<button class="btn btn-info btn-flat" type="button" ng-click="addCondition(meta.tags.attrName, op, val, type);val=null;">Add</button>
+											</span>
+										</div>
+									</div>
+
+									<!-- Number -->
+									<div ng-if="type == 'long' || type == 'integer' || type == 'number' || type == 'double' || type == 'float'">
+										<div class="input-group" style="max-width: 450px;">
+											<div class="input-group-btn">
+												<select class="form-control" ng-model="op">
+													<option ng-repeat="mark in ['==','!=','>','>=','<','<=']">{{mark}}</option>
+												</select>
+											</div>
+
+											<input type="number" class="form-control" autocomplete="off" placeholder="Number Only..." ng-model="val" ng-keypress="conditionPress($event, meta.tags.attrName, op, val, type)">
+											<span class="input-group-btn">
+												<button class="btn btn-info btn-flat" type="button" ng-click="addCondition(meta.tags.attrName, op, val, type) ? val=null : void(0);">Add</button>
+											</span>
+										</div>
+									</div>
+
+									<!-- Boolean -->
+									<div ng-if="type == 'bool'" ng-init="policy.__.conditions[meta.tags.attrName] = policy.__.conditions[meta.tags.attrName] || [_CondUnit(meta.tags.attrName, '==', 'none', 'bool')]">
+										<select class="form-control" ng-model="policy.__.conditions[meta.tags.attrName][0].val" style="max-width: 100px;">
+											<option ng-repeat="bool in ['none','true','false']">{{bool}}</option>
+										</select>
+									</div>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+
+				<!-- Window -->
+				<div class="checkbox">
+					<label>
+						<input type="checkbox" ng-checked="policy.__.windowConfig" ng-click="policy.__.windowConfig = !policy.__.windowConfig"> Slide Window
+					</label>
+				</div>
+				<div ng-show="policy.__.windowConfig">
+					<div class="row">
+						<div class="col-md-4">
+							<div class="form-group">
+								<label for="window">Window</label>
+								<select class="form-control" ng-model="policy.__.window"
+								uib-tooltip="{{getWindow().description}}" tooltip-animation="false">
+									<option ng-repeat="item in config.window" value="{{item.type}}">{{item.title}}</option>
+								</select>
+							</div>
+						</div>
+
+						<!-- fields -->
+						<div class="col-md-4" ng-repeat="field in getWindow().fields" ng-init="field.val = field.val || (field.defaultValue || '');" ng-hide="field.hide">
+							<div class="form-group" ng-class="{'has-warning' : !field.val || !field.val.match(field.regex)}">
+								<label for="window">Window - {{field.title}}</label>
+								<input type="text" class="form-control" autocomplete="off" placeholder="{{field.description}}" ng-model="field.val" title="{{field.description}}">
+							</div>
+						</div>
+					</div>
+
+					<!-- Aggregation -->
+					<div class="row">
+						<div class="col-md-4">
+							<div class="form-group" ng-class="{'text-yellow' : (policy.__.groupAgg && !policy.__.groupAggPath)}">
+								<label for="window">Aggregation</label>
+								<div class="input-group">
+									<div class="input-group-btn">
+										<select class="form-control" ng-model="policy.__.groupAgg" ng-change="updateGroupAgg()">
+											<option ng-repeat="op in ['max','min','avg','count']">{{op}}</option>
+										</select>
+									</div>
+									<select class="form-control" ng-model="policy.__.groupAggPath" ng-class="{'has-warning' : !policy.__.groupAggPath}" id="groupAggPath"
+											ng-show="policy.__.groupAgg" ng-disabled="policy.__.groupAgg === 'count'">
+										<option ng-repeat="meta in groupAggPathList()">{{meta.tags.attrName}}</option>
+									</select>
+								</div>
+							</div>
+						</div>
+
+						<div class="col-md-4">
+							<div class="form-group" ng-class="{'text-yellow' : (!policy.__.groupCondOp || !policy.__.groupCondVal)}">
+								<label for="window">Condition</label>
+								<div class="input-group">
+									<div class="input-group-btn">
+										<select class="form-control" ng-model="policy.__.groupCondOp" ng-class="{'has-warning' : !policy.__.groupCondOp}">
+											<option ng-repeat="op in ['>','<','>=','<=','==']">{{op}}</option>
+										</select>
+									</div>
+									<input type="text" class="form-control" ng-model="policy.__.groupCondVal" ng-class="{'has-warning' : !policy.__.groupCondVal}" />
+								</div>
+							</div>
+						</div>
+					</div>
+
+					<!-- Group -->
+					<div class="row">
+						<div class="col-md-4">
+							<div class="form-group">
+								<label for="window">Group By</label>
+								<select class="form-control" ng-model="policy.__.group">
+									<option value="">None</option>
+									<option ng-repeat="meta in _stream.metas">{{meta.tags.attrName}}</option>
+								</select>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+
+			<!-- Step 3: Define Alert Policy -->
+			<div ng-show="step === 3 && policy.__.advanced">
+				<div class="form-group">
+					<label>Query Expression</label>
+					<textarea class="form-control" ng-model="policy.__._expression"
+					placeholder="Query expression. e.g. from hdfsAuditLogEventStream[(cmd=='open') and (host=='localhost' or host=='127.0.0.1')]#window.time(2 sec) select * insert into outputStream;" rows="5"></textarea>
+				</div>
+			</div>
+
+			<!-- Step 4: Email Notification -->
+			<div ng-show="step === 4">
+				<div class="row">
+					<div class="col-xs-4">
+						<div class="form-group" ng-class="{'has-warning' : !policy.tags.policyId}">
+							<label>Policy Name</label>
+							<input type="text" class="form-control" placeholder="" ng-model="policy.tags.policyId" ng-disabled="!create">
+						</div>
+					</div>
+					<div class="col-xs-3">
+						<div class="form-group">
+							<label>
+								Alert De-Dup Interval(min)
+								<span class="fa fa-question-circle" uib-tooltip="Same type alert will be De-dup in configured interval"> </span>
+							</label>
+							<input type="number" class="form-control" ng-model="policy.__.dedupe.alertDedupIntervalMin" placeholder="[Minute] Number only. Suggestion: 720">
+						</div>
+					</div>
+					<div class="col-xs-3">
+						<div class="form-group">
+							<label>
+								Email De-Dup Interval(min)
+								<span class="fa fa-question-circle" uib-tooltip="The minimun time interval of email"> </span>
+							</label>
+							<input type="number" class="form-control" ng-model="policy.__.dedupe.emailDedupIntervalMin" placeholder="[Minute] Number only. Suggestion: 1440">
+						</div>
+					</div>
+					<div class="col-xs-2">
+						<div class="form-group">
+							<label>
+								Enabled
+							</label>
+							<p>
+								<input type="checkbox" checked="checked" ng-model="policy.enabled">
+							</p>
+						</div>
+					</div>
+				</div>
+
+				<div>
+					<a data-toggle="collapse" href="[data-id='advancedDeDup']">Advanced De-Dup</a>
+					<div data-id='advancedDeDup' class="collapse">
+						<label>
+							De-Dup Key
+							<span class="fa fa-question-circle" uib-tooltip="Type of grouping alerts. If you don't know how to config, leave it default."> </span>
+						</label>
+						<div class="form-group">
+							<div class="checkbox" ng-repeat="meta in _stream.metas" ng-init="create ? policy.__._dedupTags[meta.tags.attrName] = !!meta.usedAsTag : void(0);">
+								<label>
+									<input type="checkbox" ng-model="policy.__._dedupTags[meta.tags.attrName]">
+									{{meta.tags.attrName}}
+								</label>
+							</div>
+						</div>
+					</div>
+				</div>
+
+				<hr/>
+
+				<div class="form-group">
+					<label>Sender</label>
+					<input type="text" class="form-control" value="noreply-hadoop-eagle@company1.com" placeholder="Enter Sender. e.g. sender@eaxmple.com" ng-model="policy.__.notification[0].sender">
+				</div>
+				<div class="form-group">
+					<label>Recipients</label>
+					<input type="text" class="form-control" placeholder="Enter Recipients. Split with ','. e.g. usera@example.com, userb@example.com" ng-model="policy.__.notification[0].recipients">
+				</div>
+				<div class="form-group">
+					<label>Subject</label>
+					<input type="text" class="form-control" placeholder="Enter Subject" ng-model="policy.__.notification[0].subject">
+				</div>
+				<div class="form-group">
+					<label>Description</label>
+					<textarea class="form-control" placeholder="Policy description" ng-model="policy.desc"></textarea>
+				</div>
+
+				<a data-toggle="collapse" href="[data-id='policyQuery']">
+					View Query
+				</a>
+				<div class="collapse in" data-id="policyQuery">
+					<pre>{{toQuery()}}</pre>
+				</div>
+			</div>
+
+			<!-- ----------------------- Step Body End ----------------------- -->
+		</div><!-- /.box-body -->
+
+		<div class="overlay" ng-hide="stepReady(step)">
+			<span class="fa fa-refresh fa-spin"> </span>
+		</div>
+
+		<div class="box-footer text-right">
+			<button class="btn btn-info" ng-show="step > 1" ng-click="changeStep(step, step - 1, false)" ng-disabled="lock">
+				Prev <span class="fa fa-arrow-circle-o-left"> </span>
+			</button>
+			<button class="btn btn-info" ng-show="step < steps.length" ng-click="changeStep(step, step + 1)" ng-disabled="checkNextable(step) || lock">
+				Next <span class="fa fa-arrow-circle-o-right"> </span>
+			</button>
+			<button class="btn btn-info" ng-show="step === steps.length" ng-click="finishPolicy()" ng-disabled="checkNextable(step) || lock">
+				Done <span class="fa fa-check-circle-o"> </span>
+			</button>
+		</div>
+	</div>
+</div>

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/app/partials/dam/policyList.html
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/app/partials/dam/policyList.html b/eagle-webservice/src/main/webapp/app/partials/dam/policyList.html
new file mode 100644
index 0000000..376a513
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/app/partials/dam/policyList.html
@@ -0,0 +1,98 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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.
+  -->
+<div class="box box-primary">
+	<div class="box-header with-border">
+		<i class="fa fa-list-alt"> </i>
+		<h3 class="box-title">
+			{{dataSource.desc || dataSource.tags.dataSource || "All Policies"}}
+			<div class="btn-group">
+				<button class="btn btn-box-tool dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
+					<i class="fa fa-caret-down"></i>
+				</button>
+				<ul id="programList" class="dropdown-menu" role="menu">
+					<li ng-repeat="dataSrc in site.current().dataSrcList" ng-hide="dataSrc.hide">
+						<a href="#/dam/policyList/{{dataSrc.tags.dataSource}}">{{dataSrc.desc || dataSrc.tags.dataSource}}</a>
+					</li>
+					<li class="divider"></li>
+					<li>
+						<a href="#/dam/policyList">All Policy List</a>
+					</li>
+				</ul>
+			</div>
+		</h3>
+	</div>
+	<div class="box-body">
+		<div class="row">
+			<div class="col-xs-3">
+				<div class="search-box">
+					<input type="search" class="form-control input-sm" placeholder="Search" ng-model="search" />
+					<span class="fa fa-search"> </span>
+				</div>
+			</div>
+			<div class="col-xs-6">
+				<div class="inline-group form-inline text-muted">
+					<dl><dt><i class="fa fa-square text-green"> </i></dt><dd>Enabled</dd></dl>
+					<dl><dt><i class="fa fa-square text-muted"> </i></dt><dd>Disabled</dd></dl>
+				</div>
+			</div>
+			<div class="col-xs-3 text-right">
+				<a class="btn btn-primary" href="#/dam/policyCreate/{{!dataSource ? '' : '?dataSrc=' + dataSource.tags.dataSource}}" ng-show="auth.isRole('ROLE_ADMIN')">
+					New Policy
+					<i class="fa fa-plus-circle"> </i>
+				</a>
+			</div>
+		</div>
+
+		<p ng-show="policyList._promise.$$state.status !== 1">
+			<span class="fa fa-refresh fa-spin"> </span>
+			Loading...
+		</p>
+
+		<div sorttable source="policyList" ng-show="policyList._promise.$$state.status === 1" search="false" searchfunc="searchFunc">
+			<table class="table table-bordered" ng-non-bindable>
+				<thead>
+					<tr>
+						<th width="30" sortpath="enabled"> </th>
+						<th width="200" sortpath="tags.policyId">Policy Name</th>
+						<th sortpath="desc">Description</th>
+						<th width="150" sortpath="owner">Owner</th>
+						<th width="170" sortpath="lastModifiedDate">Last Modified</th>
+						<th width="95" ng-show="_parent.auth.isRole('ROLE_ADMIN')">Action</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td><span class='fa fa-square' ng-class="item.enabled ? 'text-green' : 'text-muted'"> </span></td>
+						<td><a href="#/dam/policyDetail/{{item.encodedRowkey}}">{{item.tags.policyId}}</a></td>
+						<td>{{item.desc}}</td>
+						<td>{{item.owner}}</td>
+						<td>{{common.format.date(item.lastModifiedDate) || "-"}}</td>
+						<td ng-show="_parent.auth.isRole('ROLE_ADMIN')">
+							<a class="fa fa-pencil btn btn-default btn-xs" uib-tooltip="Edit" tooltip-animation="false" href="#/dam/policyEdit/{{item.encodedRowkey}}"> </a>
+							<button class="fa fa-play sm btn btn-default btn-xs" uib-tooltip="Enable" tooltip-animation="false" ng-show="!item.enabled" ng-click="_parent.updatePolicyStatus(item, true)"> </button>
+							<button class="fa fa-pause sm btn btn-default btn-xs" uib-tooltip="Disable" tooltip-animation="false" ng-show="item.enabled" ng-click="_parent.updatePolicyStatus(item, false)"> </button>
+							<button class="rm fa fa-trash-o btn btn-danger btn-xs" uib-tooltip="Delete" tooltip-animation="false" ng-click="_parent.deletePolicy(item)"> </button>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+	</div>
+	<!--div class="box-footer clearfix">
+	</div-->
+</div>

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/app/partials/dam/sensitivity.html
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/app/partials/dam/sensitivity.html b/eagle-webservice/src/main/webapp/app/partials/dam/sensitivity.html
new file mode 100644
index 0000000..af73ee4
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/app/partials/dam/sensitivity.html
@@ -0,0 +1,22 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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.
+  -->
+<div tabs icon="folder-open" data-title="Sensitivity Broswer" selected="type">
+	<div pane ng-repeat="entity in sensitivityList" data-title="{{entity.name}}">
+		<ng-include src="'partials/dam/sensitivity/' + entity.name + '.html?_=' + ajaxId"></ng-include>
+	</div>
+</div>
\ No newline at end of file