You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by db...@apache.org on 2016/06/29 11:35:34 UTC

[03/10] ambari git commit: AMBARI-17079. Moved Hue to Ambari migrator to standard view architecture (Pradarttana Panda via dipayanb)

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/service/pig/PigJobImpl.java
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/service/pig/PigJobImpl.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/service/pig/PigJobImpl.java
deleted file mode 100644
index 614c171..0000000
--- a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/service/pig/PigJobImpl.java
+++ /dev/null
@@ -1,563 +0,0 @@
-/**
- * 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
- * <p/>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p/>
- * 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.
- */
-
-package org.apache.ambari.view.huetoambarimigration.service.pig;
-
-import java.nio.charset.Charset;
-import java.security.PrivilegedExceptionAction;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.Scanner;
-import java.io.*;
-import java.net.URISyntaxException;
-import java.net.URL;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FSDataInputStream;
-import org.apache.hadoop.fs.FSDataOutputStream;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.security.UserGroupInformation;
-import org.apache.log4j.Logger;
-import org.jdom.Attribute;
-import org.jdom.Document;
-import org.jdom.Element;
-import org.jdom.JDOMException;
-import org.jdom.input.SAXBuilder;
-import org.jdom.output.Format;
-import org.jdom.output.XMLOutputter;
-import org.json.JSONArray;
-import org.json.JSONObject;
-
-import org.apache.ambari.view.huetoambarimigration.model.*;
-import org.apache.ambari.view.huetoambarimigration.service.configurationcheck.ConfFileReader;
-
-public class PigJobImpl {
-
-  static final Logger logger = Logger.getLogger(PigJobImpl.class);
-
-  private static String readAll(Reader rd) throws IOException {
-    StringBuilder sb = new StringBuilder();
-    int cp;
-    while ((cp = rd.read()) != -1) {
-      sb.append((char) cp);
-    }
-    return sb.toString();
-  }
-
-  public void wrtitetoalternatesqlfile(String dirname, String content, String instance, int i) throws IOException {
-    Date dNow = new Date();
-    SimpleDateFormat ft = new SimpleDateFormat("YYYY-MM-dd hh:mm:ss");
-    String currentDate = ft.format(dNow);
-    XMLOutputter xmlOutput = new XMLOutputter();
-    xmlOutput.setFormat(Format.getPrettyFormat());
-    File xmlfile = new File(ConfFileReader.getHomeDir() + "RevertChange.xml");
-    if (xmlfile.exists()) {
-      String iteration = Integer.toString(i + 1);
-      SAXBuilder builder = new SAXBuilder();
-      Document doc;
-      try {
-        doc = (Document) builder.build(xmlfile);
-        Element rootNode = doc.getRootElement();
-        Element record = new Element("RevertRecord");
-        record.setAttribute(new Attribute("id", iteration));
-        record.addContent(new Element("datetime").setText(currentDate.toString()));
-        record.addContent(new Element("dirname").setText(dirname));
-        record.addContent(new Element("instance").setText(instance));
-        record.addContent(new Element("query").setText(content));
-        rootNode.addContent(record);
-        xmlOutput.output(doc, new FileWriter(ConfFileReader.getHomeDir() + "RevertChange.xml"));
-      } catch (JDOMException e) {
-
-        logger.error("Jdom Exception: " , e);
-      }
-
-
-    } else {
-      // create
-      try {
-        String iteration = Integer.toString(i + 1);
-        Element revertrecord = new Element("RevertChangePage");
-        Document doc = new Document(revertrecord);
-        doc.setRootElement(revertrecord);
-        Element record = new Element("RevertRecord");
-        record.setAttribute(new Attribute("id", iteration));
-        record.addContent(new Element("datetime").setText(currentDate.toString()));
-        record.addContent(new Element("dirname").setText(dirname));
-        record.addContent(new Element("instance").setText(instance));
-        record.addContent(new Element("query").setText(content));
-        doc.getRootElement().addContent(record);
-        xmlOutput.output(doc, new FileWriter(ConfFileReader.getHomeDir() + "RevertChange.xml"));
-      } catch (IOException io) {
-        logger.error("Jdom Exception: " , io);
-      }
-
-    }
-
-  }
-
-  public int fetchMaxIdforPigJob(String driverName, Connection c, int id) throws SQLException {
-
-    String ds_id = null;
-    Statement stmt = null;
-    ResultSet rs = null;
-
-    stmt = c.createStatement();
-
-    if (driverName.contains("postgresql")) {
-      rs = stmt.executeQuery("select MAX(cast(ds_id as integer)) as max from ds_pigjob_" + id + ";");
-    } else if (driverName.contains("mysql")) {
-      rs = stmt.executeQuery("select max( cast(ds_id as unsigned) ) as max from DS_PIGJOB_" + id + ";");
-    } else if (driverName.contains("oracle")) {
-      rs = stmt.executeQuery("select MAX(cast(ds_id as integer)) as max from ds_pigjob_" + id);
-    }
-
-    while (rs.next()) {
-      ds_id = rs.getString("max");
-
-    }
-
-    int num;
-    if (ds_id == null) {
-      num = 1;
-    } else {
-      num = Integer.parseInt(ds_id);
-    }
-
-    return num;
-
-  }
-
-  public int fetchInstanceTablename(String driverName, Connection c, String instance) throws SQLException {
-
-
-    String ds_id = new String();
-    int id = 0;
-    Statement stmt = null;
-    stmt = c.createStatement();
-
-    ResultSet rs = null;
-    if (driverName.contains("oracle")) {
-      rs = stmt.executeQuery("select id from viewentity where class_name LIKE 'org.apache.ambari.view.pig.resources.jobs.models.PigJob' and view_instance_name='" + instance + "'");
-    } else {
-      rs = stmt.executeQuery("select id from viewentity where class_name LIKE 'org.apache.ambari.view.pig.resources.jobs.models.PigJob' and view_instance_name='" + instance + "';");
-    }
-    while (rs.next()) {
-      id = rs.getInt("id");
-
-    }
-
-    return id;
-  }
-
-  public void insertRowPigJob(String driverName, String dirname, int maxcountforpigjob, String time, String time2, long epochtime, String title, Connection c, int id, String status, String instance, int i) throws SQLException, IOException {
-
-    String epochtime1 = Long.toString(epochtime);
-    String ds_id = new String();
-    Statement stmt = null;
-
-    stmt = c.createStatement();
-    String sql = "";
-    String revsql = "";
-
-    if (driverName.contains("mysql")) {
-      sql = "INSERT INTO DS_PIGJOB_" + id + " values ('" + maxcountforpigjob + "'," + epochtime1 + ",0,'','f','','','admin',0,'" + dirname + "script.pig','','" + maxcountforpigjob + "','','','" + status + "','" + dirname + "','','" + title + "');";
-      revsql = "delete from  DS_PIGJOB_" + id + " where ds_id='" + maxcountforpigjob + "';";
-
-    } else if (driverName.contains("postgresql")) {
-      sql = "INSERT INTO ds_pigjob_" + id + " values ('" + maxcountforpigjob + "'," + epochtime1 + ",0,'','f','','','admin',0,'" + dirname + "script.pig','','" + maxcountforpigjob + "','','','" + status + "','" + dirname + "','','" + title + "');";
-      revsql = "delete from  ds_pigjob_" + id + " where ds_id='" + maxcountforpigjob + "';";
-
-    } else if (driverName.contains("oracle")) {
-      sql = "INSERT INTO ds_pigjob_" + id + " values ('" + maxcountforpigjob + "'," + epochtime1 + ",0,'','f','','','admin',0,'" + dirname + "script.pig','','" + maxcountforpigjob + "','','','" + status + "','" + dirname + "','','" + title + "')";
-      revsql = "delete from  ds_pigjob_" + id + " where ds_id='" + maxcountforpigjob + "'";
-
-    }
-
-    wrtitetoalternatesqlfile(dirname, revsql, instance, i);
-
-    stmt.executeUpdate(sql);
-
-  }
-
-  public long getEpochTime() throws ParseException {
-    int day, month, year;
-    int second, minute, hour;
-    int milisecond;
-    GregorianCalendar date = new GregorianCalendar();
-
-    day = date.get(Calendar.DAY_OF_MONTH);
-    month = date.get(Calendar.MONTH);
-    year = date.get(Calendar.YEAR);
-
-    second = date.get(Calendar.SECOND);
-    minute = date.get(Calendar.MINUTE);
-    hour = date.get(Calendar.HOUR);
-    milisecond = date.get(Calendar.MILLISECOND);
-    String s1 = year + "-" + (month + 1) + "-" + day + "_" + hour + "-" + minute + "-" + second + "-" + milisecond;
-    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss-SSS");
-    Date date1 = df.parse(s1);
-    long epoch = date1.getTime();
-    return epoch;
-
-  }
-
-  public String getTime() throws ParseException {
-    int day, month, year;
-    int second, minute, hour;
-    int milisecond;
-    GregorianCalendar date = new GregorianCalendar();
-
-    day = date.get(Calendar.DAY_OF_MONTH);
-    month = date.get(Calendar.MONTH);
-    year = date.get(Calendar.YEAR);
-
-    second = date.get(Calendar.SECOND);
-    minute = date.get(Calendar.MINUTE);
-    hour = date.get(Calendar.HOUR);
-    milisecond = date.get(Calendar.MILLISECOND);
-    String s = year + "-" + (month + 1) + "-" + day + "_" + hour + "-" + minute;
-    String s1 = year + "-" + (month + 1) + "-" + day + "_" + hour + "-" + minute + "-" + second + "-" + milisecond;
-    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss-SSS");
-    Date date1 = df.parse(s1);
-    long epoch = date1.getTime();
-    return s;
-
-  }
-
-  public String getTimeInorder() throws ParseException {
-    SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.msssss +00:00:00");//dd/MM/yyyy
-    Date now = new Date();
-    String strDate = sdfDate.format(now);
-    return strDate;
-  }
-
-  public ArrayList<PojoPig> fetchFromHueDB(String username, String startdate, String endtime, Connection connection) throws ClassNotFoundException, IOException {
-    int id = 0;
-    int i = 0;
-    String[] query = new String[100];
-    ArrayList<PojoPig> pigjobarraylist = new ArrayList<PojoPig>();
-    try {
-      Statement statement = connection.createStatement();
-      ResultSet rs1 = null;
-      if (username.equals("all")) {
-      } else {
-        ResultSet rs = statement
-          .executeQuery("select id from auth_user where username='"
-            + username + "';");
-        while (rs.next()) {
-
-          id = rs.getInt("id");
-
-        }
-
-      }
-
-      if (startdate.equals("") && endtime.equals("")) {
-        if (username.equals("all")) {
-
-          rs1 = statement.executeQuery("select status,start_time,statusdir,script_title,user_id from pig_job;");
-
-        } else {
-
-          rs1 = statement.executeQuery("select status,start_time,statusdir,script_title,user_id from pig_job where user_id =" + id + ";");
-        }
-
-      } else if (!(startdate.equals("")) && !(endtime.equals(""))) {
-        if (username.equals("all")) {
-
-          rs1 = statement.executeQuery("select status,start_time,statusdir,script_title,user_id from pig_job where start_time >= date('" + startdate + "') AND start_time <= date('" + endtime + "');");
-        } else {
-
-          rs1 = statement.executeQuery("select status,start_time,statusdir,script_title,user_id from pig_job where user_id =" + id + " AND start_time >= date('" + startdate + "') AND start_time <= date('" + endtime + "');");
-        }
-
-      } else if (!(startdate.equals("")) && (endtime.equals(""))) {
-        if (username.equals("all")) {
-
-          rs1 = statement.executeQuery("select status,start_time,statusdir,script_title,user_id from pig_job where start_time >= date('" + startdate + "');");
-        } else {
-
-          rs1 = statement.executeQuery("select status,start_time,statusdir,script_title,user_id from pig_job where user_id =" + id + " AND start_time >= date('" + startdate + "');");
-        }
-
-      } else if ((startdate.equals("")) && !(endtime.equals(""))) {
-        if (username.equals("all")) {
-
-          rs1 = statement.executeQuery("select status,start_time,statusdir,script_title,user_id from pig_job where start_time <= date('" + endtime + "');");
-        } else {
-
-          rs1 = statement.executeQuery("select status,start_time,statusdir,script_title,user_id from pig_job where user_id =" + id + " AND start_time <= date('" + endtime + "');");
-        }
-
-      }
-
-      while (rs1.next()) {
-        PojoPig pigjjobobject = new PojoPig();
-
-        int runstatus = rs1.getInt("status");
-
-        if (runstatus == 1) {
-          pigjjobobject.setStatus("RUNNING");
-        } else if (runstatus == 2) {
-          pigjjobobject.setStatus("SUCCEEDED");
-        } else if (runstatus == 3) {
-          pigjjobobject.setStatus("SUBMIT_FAILED");
-        } else if (runstatus == 4) {
-          pigjjobobject.setStatus("KILLED");
-        }
-        String title = rs1.getString("script_title");
-
-
-        pigjjobobject.setTitle(title);
-        String dir = rs1.getString("statusdir");
-        pigjjobobject.setDir(dir);
-        Date created_data = rs1.getDate("start_time");
-        pigjjobobject.setDt(created_data);
-
-        pigjobarraylist.add(pigjjobobject);
-
-        i++;
-      }
-
-
-    } catch (SQLException e) {
-      logger.error("Sqlexception: " , e);
-    } finally {
-      try {
-        if (connection != null)
-          connection.close();
-      } catch (SQLException e) {
-        logger.error("Sqlexception in closing the connection: " , e);
-
-      }
-    }
-
-    return pigjobarraylist;
-
-  }
-
-  public void createDirPigJob(final String dir, final String namenodeuri) throws IOException,
-    URISyntaxException {
-
-    try {
-      UserGroupInformation ugi = UserGroupInformation
-        .createRemoteUser("hdfs");
-
-      ugi.doAs(new PrivilegedExceptionAction<Void>() {
-
-        public Void run() throws Exception {
-
-          Configuration conf = new Configuration();
-          conf.set("fs.hdfs.impl",
-            org.apache.hadoop.hdfs.DistributedFileSystem.class.getName()
-          );
-          conf.set("fs.file.impl",
-            org.apache.hadoop.fs.LocalFileSystem.class.getName()
-          );
-          conf.set("fs.defaultFS", namenodeuri);
-          conf.set("hadoop.job.ugi", "hdfs");
-
-          FileSystem fs = FileSystem.get(conf);
-          Path src = new Path(dir);
-          fs.mkdirs(src);
-          return null;
-        }
-      });
-    } catch (Exception e) {
-      logger.error("Webhdfs exception: " , e);
-    }
-  }
-
-  /**/
-  public void createDirPigJobSecured(final String dir, final String namenodeuri) throws IOException,
-    URISyntaxException {
-
-    try {
-      final Configuration conf = new Configuration();
-
-      conf.set("fs.hdfs.impl",
-        org.apache.hadoop.hdfs.DistributedFileSystem.class.getName()
-      );
-      conf.set("fs.file.impl",
-        org.apache.hadoop.fs.LocalFileSystem.class.getName()
-      );
-      conf.set("fs.defaultFS", namenodeuri);
-      conf.set("hadoop.job.ugi", "hdfs");
-      conf.set("hadoop.security.authentication", "Kerberos");
-
-      UserGroupInformation.setConfiguration(conf);
-      UserGroupInformation ugi = UserGroupInformation.createRemoteUser("hdfs");
-
-      ugi.doAs(new PrivilegedExceptionAction<Void>() {
-
-        public Void run() throws Exception {
-
-
-          FileSystem fs = FileSystem.get(conf);
-          Path src = new Path(dir);
-          fs.mkdirs(src);
-          return null;
-        }
-      });
-    } catch (Exception e) {
-      logger.error("Webhdfs exception: " , e);
-    }
-  }
-
-  /**/
-  public void copyFileBetweenHdfs(final String source, final String dest, final String nameNodeuriAmbari, final String nameNodeuriHue)
-    throws IOException {
-
-    try {
-      UserGroupInformation ugi = UserGroupInformation
-        .createRemoteUser("hdfs");
-
-      ugi.doAs(new PrivilegedExceptionAction<Void>() {
-
-        public Void run() throws Exception {
-
-          Configuration confAmbari = new Configuration();
-          confAmbari.set("fs.defaultFS", nameNodeuriAmbari);
-          confAmbari.set("hadoop.job.ugi", "hdfs");
-          FileSystem fileSystemAmbari = FileSystem.get(confAmbari);
-
-          Configuration confHue = new Configuration();
-          confHue.set("fs.defaultFS", nameNodeuriAmbari);
-          confHue.set("hadoop.job.ugi", "hdfs");
-          FileSystem fileSystemHue = FileSystem.get(confHue);
-
-          String filename = source.substring(
-            source.lastIndexOf('/') + 1, source.length());
-          String dest1;
-          if (dest.charAt(dest.length() - 1) != '/') {
-            dest1 = dest + "/" + filename;
-          } else {
-            dest1 = dest + filename;
-          }
-
-          Path path1 = new Path(source);
-          FSDataInputStream in1 = fileSystemHue.open(path1);
-
-          Path path = new Path(dest1);
-          if (fileSystemAmbari.exists(path)) {
-
-          }
-
-          FSDataOutputStream out = fileSystemAmbari.create(path);
-
-          byte[] b = new byte[1024];
-          int numBytes = 0;
-          while ((numBytes = in1.read(b)) > 0) {
-            out.write(b, 0, numBytes);
-          }
-          in1.close();
-          out.close();
-          fileSystemAmbari.close();
-          return null;
-        }
-      });
-    } catch (Exception e) {
-      logger.error("Webhdfs exception: " , e);
-    }
-
-  }
-
-  /**/
-  public void copyFileBetweenHdfsSecured(final String source, final String dest, final String nameNodeuriAmbari, final String nameNodeuriHue)
-    throws IOException {
-
-    try {
-
-      final Configuration confAmbari = new Configuration();
-      confAmbari.set("fs.defaultFS", nameNodeuriAmbari);
-      confAmbari.set("hadoop.job.ugi", "hdfs");
-
-      final Configuration confHue = new Configuration();
-      confHue.set("fs.defaultFS", nameNodeuriAmbari);
-      confHue.set("hadoop.job.ugi", "hdfs");
-
-      confAmbari.set("hadoop.security.authentication", "Kerberos");
-      confHue.set("hadoop.security.authentication", "Kerberos");
-
-      UserGroupInformation ugi = UserGroupInformation
-        .createRemoteUser("hdfs");
-
-      ugi.doAs(new PrivilegedExceptionAction<Void>() {
-
-        public Void run() throws Exception {
-
-
-          FileSystem fileSystemAmbari = FileSystem.get(confAmbari);
-
-          FileSystem fileSystemHue = FileSystem.get(confHue);
-
-          String filename = source.substring(
-            source.lastIndexOf('/') + 1, source.length());
-          String dest1;
-          if (dest.charAt(dest.length() - 1) != '/') {
-            dest1 = dest + "/" + filename;
-          } else {
-            dest1 = dest + filename;
-          }
-
-          Path path1 = new Path(source);
-          FSDataInputStream in1 = fileSystemHue.open(path1);
-
-          Path path = new Path(dest1);
-          if (fileSystemAmbari.exists(path)) {
-
-          }
-          FSDataOutputStream out = fileSystemAmbari.create(path);
-          byte[] b = new byte[1024];
-          int numBytes = 0;
-          while ((numBytes = in1.read(b)) > 0) {
-            out.write(b, 0, numBytes);
-          }
-          in1.close();
-          out.close();
-          fileSystemAmbari.close();
-          return null;
-        }
-      });
-    } catch (Exception e) {
-      logger.error("Webhdfs exception: " , e);
-    }
-
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/service/pig/PigScriptImpl.java
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/service/pig/PigScriptImpl.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/service/pig/PigScriptImpl.java
deleted file mode 100644
index e3c668f..0000000
--- a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/service/pig/PigScriptImpl.java
+++ /dev/null
@@ -1,600 +0,0 @@
-/**
- * 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
- * <p/>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p/>
- * 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.
- */
-
-
-package org.apache.ambari.view.huetoambarimigration.service.pig;
-
-import java.nio.charset.Charset;
-import java.security.PrivilegedExceptionAction;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.Scanner;
-import java.io.*;
-import java.net.URISyntaxException;
-import java.net.URL;
-
-import org.apache.ambari.view.huetoambarimigration.service.configurationcheck.ConfFileReader;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FSDataOutputStream;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.security.UserGroupInformation;
-import org.apache.log4j.Logger;
-import org.jdom.Attribute;
-import org.jdom.Document;
-import org.jdom.Element;
-import org.jdom.JDOMException;
-import org.jdom.input.SAXBuilder;
-import org.jdom.output.Format;
-import org.jdom.output.XMLOutputter;
-import org.json.JSONArray;
-import org.json.JSONObject;
-
-import org.apache.ambari.view.huetoambarimigration.model.*;
-
-
-public class PigScriptImpl {
-
-  static final Logger logger = Logger.getLogger(PigJobImpl.class);
-
-  private static String readAll(Reader rd) throws IOException {
-    StringBuilder sb = new StringBuilder();
-    int cp;
-    while ((cp = rd.read()) != -1) {
-      sb.append((char) cp);
-    }
-    return sb.toString();
-  }
-
-  public void wrtitetoalternatesqlfile(String dirname, String content, String instance, int i) throws IOException {
-
-    Date dNow = new Date();
-    SimpleDateFormat ft = new SimpleDateFormat("YYYY-MM-dd hh:mm:ss");
-    String currentDate = ft.format(dNow);
-
-    XMLOutputter xmlOutput = new XMLOutputter();
-
-    xmlOutput.setFormat(Format.getPrettyFormat());
-
-    File xmlfile = new File(ConfFileReader.getHomeDir() + "RevertChange.xml");
-
-    if (xmlfile.exists()) {
-      String iteration = Integer.toString(i + 1);
-      SAXBuilder builder = new SAXBuilder();
-      Document doc;
-      try {
-        doc = (Document) builder.build(xmlfile);
-
-        Element rootNode = doc.getRootElement();
-
-        Element record = new Element("RevertRecord");
-        record.setAttribute(new Attribute("id", iteration));
-        record.addContent(new Element("datetime").setText(currentDate.toString()));
-        record.addContent(new Element("dirname").setText(dirname));
-        record.addContent(new Element("instance").setText(instance));
-        record.addContent(new Element("query").setText(content));
-
-        rootNode.addContent(record);
-        xmlOutput.output(doc, new FileWriter(ConfFileReader.getHomeDir() + "RevertChange.xml"));
-
-      } catch (JDOMException e) {
-        logger.error("JDOMException: " , e);
-      }
-
-
-    } else {
-      // create
-      try {
-        String iteration = Integer.toString(i + 1);
-        Element revertrecord = new Element("RevertChangePage");
-        Document doc = new Document(revertrecord);
-        doc.setRootElement(revertrecord);
-
-        Element record = new Element("RevertRecord");
-        record.setAttribute(new Attribute("id", iteration));
-        record.addContent(new Element("datetime").setText(currentDate.toString()));
-        record.addContent(new Element("dirname").setText(dirname));
-        record.addContent(new Element("instance").setText(instance));
-        record.addContent(new Element("query").setText(content));
-
-        doc.getRootElement().addContent(record);
-
-        xmlOutput.output(doc, new FileWriter(ConfFileReader.getHomeDir() + "RevertChange.xml"));
-
-      } catch (IOException io) {
-        logger.error("IOException: " , io);
-
-      }
-
-    }
-
-
-  }
-
-  public int fetchInstanceTablenamePigScript(String driverName, Connection c, String instance) throws SQLException {
-
-    String ds_id = new String();
-    int id = 0;
-    Statement stmt = null;
-
-    stmt = c.createStatement();
-
-    ResultSet rs = null;
-
-    if (driverName.contains("oracle")) {
-      rs = stmt.executeQuery("select id from viewentity where class_name LIKE 'org.apache.ambari.view.pig.resources.scripts.models.PigScript' and view_instance_name='" + instance + "'");
-    } else {
-      rs = stmt.executeQuery("select id from viewentity where class_name LIKE 'org.apache.ambari.view.pig.resources.scripts.models.PigScript' and view_instance_name='" + instance + "';");
-    }
-
-    while (rs.next()) {
-      id = rs.getInt("id");
-
-    }
-
-    return id;
-
-  }
-
-  public int fetchmaxIdforPigSavedScript(String driverName, Connection c, int id) throws SQLException {
-
-    String ds_id = null;
-    Statement stmt = null;
-
-    stmt = c.createStatement();
-    ResultSet rs = null;
-
-    if (driverName.contains("postgresql")) {
-      rs = stmt.executeQuery("select MAX(cast(ds_id as integer)) as max from ds_pigscript_" + id + ";");
-    } else if (driverName.contains("mysql")) {
-      rs = stmt.executeQuery("select max( cast(ds_id as unsigned) ) as max from DS_PIGSCRIPT_" + id + ";");
-    } else if (driverName.contains("oracle")) {
-      rs = stmt.executeQuery("select MAX(cast(ds_id as integer)) as max from ds_pigscript_" + id + "");
-    }
-
-    while (rs.next()) {
-      ds_id = rs.getString("max");
-    }
-
-    int num;
-    if (ds_id == null) {
-      num = 0;
-    } else {
-      num = Integer.parseInt(ds_id);
-    }
-
-    return num;
-  }
-
-  public void insertRowForPigScript(String driverName, String dirname, int maxcountforpigjob, int maxcount, String time, String time2, long epochtime, String title, Connection c, int id, String instance, int i) throws SQLException, IOException {
-
-    String maxcount1 = Integer.toString(maxcount);
-    String epochtime1 = Long.toString(epochtime);
-    String ds_id = new String();
-    Statement stmt = null;
-    String sql2 = "";
-    String revsql = "";
-
-    stmt = c.createStatement();
-
-    if (driverName.contains("mysql")) {
-      sql2 = "INSERT INTO DS_PIGSCRIPT_" + id + " values ('" + maxcount1 + "','1970-01-17 20:28:55.586000 +00:00:00',0,'admin','" + dirname + "','','','" + title + "');";
-      revsql = "delete from  DS_PIGSCRIPT_" + id + " where ds_id='" + maxcount1 + "';";
-
-    } else if (driverName.contains("postgresql")) {
-      sql2 = "INSERT INTO ds_pigscript_" + id + " values ('" + maxcount1 + "','1970-01-17 20:28:55.586000 +00:00:00','f','admin','" + dirname + "','','','" + title + "');";
-      revsql = "delete from  ds_pigscript_" + id + " where ds_id='" + maxcount1 + "';";
-
-    } else if (driverName.contains("oracle")) {
-      sql2 = "INSERT INTO ds_pigscript_" + id + " values ('" + maxcount1 + "','1970-01-17 20:28:55.586000 +00:00:00','f','admin','" + dirname + "','','','" + title + "')";
-      revsql = "delete from  ds_pigscript_" + id + " where ds_id='" + maxcount1 + "'";
-
-    }
-
-    stmt.executeUpdate(sql2);
-
-    wrtitetoalternatesqlfile(dirname, revsql, instance, i);
-
-  }
-
-
-  public long getEpochTime() throws ParseException {
-    int day, month, year;
-    int second, minute, hour;
-    int milisecond;
-    GregorianCalendar date = new GregorianCalendar();
-
-    day = date.get(Calendar.DAY_OF_MONTH);
-    month = date.get(Calendar.MONTH);
-    year = date.get(Calendar.YEAR);
-
-    second = date.get(Calendar.SECOND);
-    minute = date.get(Calendar.MINUTE);
-    hour = date.get(Calendar.HOUR);
-    milisecond = date.get(Calendar.MILLISECOND);
-
-    String s1 = year + "-" + (month + 1) + "-" + day + "_" + hour + "-" + minute + "-" + second + "-" + milisecond;
-    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss-SSS");
-    Date date1 = df.parse(s1);
-    long epoch = date1.getTime();
-
-    return epoch;
-
-  }
-
-
-  public String getTime() throws ParseException {
-    int day, month, year;
-    int second, minute, hour;
-    int milisecond;
-    GregorianCalendar date = new GregorianCalendar();
-
-    day = date.get(Calendar.DAY_OF_MONTH);
-    month = date.get(Calendar.MONTH);
-    year = date.get(Calendar.YEAR);
-
-    second = date.get(Calendar.SECOND);
-    minute = date.get(Calendar.MINUTE);
-    hour = date.get(Calendar.HOUR);
-    milisecond = date.get(Calendar.MILLISECOND);
-
-    String s = year + "-" + (month + 1) + "-" + day + "_" + hour + "-" + minute;
-    String s1 = year + "-" + (month + 1) + "-" + day + "_" + hour + "-" + minute + "-" + second + "-" + milisecond;
-    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss-SSS");
-    Date date1 = df.parse(s1);
-    long epoch = date1.getTime();
-
-    return s;
-
-  }
-
-
-  public String getTimeInorder() throws ParseException {
-    SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.msssss +00:00:00");//dd/MM/yyyy
-    Date now = new Date();
-    String strDate = sdfDate.format(now);
-    return strDate;
-  }
-
-
-  public ArrayList<PojoPig> fetchFromHueDatabase(String username, String startdate, String endtime, Connection connection, String driverName) throws ClassNotFoundException, IOException {
-    int id = 0;
-    int i = 0;
-    ResultSet rs1 = null;
-    String[] query = new String[100];
-    ArrayList<PojoPig> pigArrayList = new ArrayList<PojoPig>();
-    try {
-
-      Statement statement = connection.createStatement();
-
-      if (username.equals("all")) {
-      } else {
-        ResultSet rs = statement
-          .executeQuery("select id from auth_user where username='"
-            + username + "';");
-        while (rs.next()) {
-          id = rs.getInt("id");
-        }
-
-      }
-
-
-      if (startdate.equals("") && endtime.equals("")) {
-        if (username.equals("all")) {
-          if (driverName.contains("postgresql")) {
-
-            rs1 = statement.executeQuery("select pig_script,title,date_created,saved,arguments from pig_pigscript where saved=true;");
-
-          } else {
-
-            rs1 = statement.executeQuery("select pig_script,title,date_created,saved,arguments from pig_pigscript where saved=1;");
-          }
-
-        } else {
-
-          if (driverName.contains("postgresql")) {
-
-            rs1 = statement.executeQuery("select pig_script,title,date_created,saved,arguments from pig_pigscript where saved='true' AND user_id =" + id + ";");
-
-          } else {
-
-            rs1 = statement.executeQuery("select pig_script,title,date_created,saved,arguments from pig_pigscript where saved=1 AND user_id =" + id + ";");
-          }
-
-        }
-
-      } else if (!(startdate.equals("")) && !(endtime.equals(""))) {
-        if (username.equals("all")) {
-          if (driverName.contains("postgresql")) {
-
-            rs1 = statement.executeQuery("select pig_script,title,date_created,saved,arguments from pig_pigscript where saved='true' AND date_created >= date('" + startdate + "') AND date_created <= date('" + endtime + "');");
-
-          } else {
-
-            rs1 = statement.executeQuery("select pig_script,title,date_created,saved,arguments from pig_pigscript where saved=1 AND date_created >= date('" + startdate + "') AND date_created <= date('" + endtime + "');");
-          }
-
-        } else {
-          if (driverName.contains("postgresql")) {
-
-            rs1 = statement.executeQuery("select pig_script,title,date_created,saved,arguments from pig_pigscript where saved='true' AND user_id =" + id + " AND date_created >= date('" + startdate + "') AND date_created <= date('" + endtime + "');");
-
-          } else {
-
-            rs1 = statement.executeQuery("select pig_script,title,date_created,saved,arguments from pig_pigscript where saved=1 AND user_id =" + id + " AND date_created >= date('" + startdate + "') AND date_created <= date('" + endtime + "');");
-          }
-
-        }
-
-      } else if (!(startdate.equals("")) && (endtime.equals(""))) {
-        if (username.equals("all")) {
-          if (driverName.contains("postgresql")) {
-
-            rs1 = statement.executeQuery("select pig_script,title,date_created,saved,arguments from pig_pigscript where saved='true' AND date_created >= date('" + startdate + "');");
-
-          } else {
-
-            rs1 = statement.executeQuery("select pig_script,title,date_created,saved,arguments from pig_pigscript where saved=1 AND date_created >= date('" + startdate + "');");
-          }
-
-        } else {
-          if (driverName.contains("postgresql")) {
-
-            rs1 = statement.executeQuery("select pig_script,title,date_created,saved,arguments from pig_pigscript where saved='true' AND user_id =" + id + " AND date_created >= date('" + startdate + "');");
-
-          } else {
-
-            rs1 = statement.executeQuery("select pig_script,title,date_created,saved,arguments from pig_pigscript where saved=1 AND user_id =" + id + " AND date_created >= date('" + startdate + "');");
-          }
-
-        }
-
-      } else if ((startdate.equals("")) && !(endtime.equals(""))) {
-        if (username.equals("all")) {
-          if (driverName.contains("postgresql")) {
-
-            rs1 = statement.executeQuery("select pig_script,title,date_created,saved,arguments from pig_pigscript where saved='true' AND date_created <= date('" + endtime + "');");
-
-          } else {
-
-            rs1 = statement.executeQuery("select pig_script,title,date_created,saved,arguments from pig_pigscript where saved=1 AND date_created <= date('" + endtime + "');");
-          }
-
-        } else {
-          if (driverName.contains("postgresql")) {
-
-            rs1 = statement.executeQuery("select pig_script,title,date_created,saved,arguments from pig_pigscript where saved='true' AND user_id =" + id + " AND date_created <= date('" + endtime + "');");
-
-          } else {
-
-            rs1 = statement.executeQuery("select pig_script,title,date_created,saved,arguments from pig_pigscript where saved=1 AND user_id =" + id + " AND date_created <= date('" + endtime + "');");
-          }
-
-        }
-
-      }
-      // rs1 = statement.executeQuery("select pig_script,title,date_created,saved,arguments from pig_pigscript where saved=1 AND user_id ="+id+" AND date_created BETWEEN '"+ startdate +"' AND '"  +endtime +"';");
-      while (rs1.next()) {
-        PojoPig pojopig = new PojoPig();
-
-        String script = rs1.getString("pig_script");
-        String title = rs1.getString("title");
-        Date created_data = rs1.getDate("date_created");
-        pojopig.setDt(created_data);
-        pojopig.setScript(script);
-        pojopig.setTitle(title);
-
-        pigArrayList.add(pojopig);
-        i++;
-      }
-
-
-    } catch (SQLException e) {
-      logger.error("SQLException" , e);
-    } finally {
-      try {
-        if (connection != null)
-          connection.close();
-      } catch (SQLException e) {
-        logger.error("SQLException" , e);
-      }
-    }
-
-    return pigArrayList;
-
-  }
-
-  public void writetPigScripttoLocalFile(String script, String title, Date createddate, String homedir, String filename2) {
-    try {
-      logger.info(homedir + filename2);
-      File file = new File(homedir + filename2);
-
-      if (!file.exists()) {
-        file.createNewFile();
-      }
-
-      FileWriter fw = new FileWriter(file.getAbsoluteFile());
-      BufferedWriter bw = new BufferedWriter(fw);
-      bw.write(script);
-      bw.close();
-
-
-    } catch (IOException e) {
-
-      logger.error("IOException" , e);
-    }
-
-  }
-
-  public void deletePigScriptLocalFile(String homedir, String filename2) {
-    try{
-
-      File file = new File(homedir + filename2);
-
-      if(file.delete()){
-        logger.info("Temproray file deleted");
-      }else{
-        logger.info("Temproray file delete failed");
-      }
-
-    }catch(Exception e){
-
-     logger.error("File Exception: ",e);
-
-    }
-
-  }
-
-  public void putFileinHdfs(final String source, final String dest, final String namenodeuri)
-    throws IOException {
-
-    try {
-      UserGroupInformation ugi = UserGroupInformation
-        .createRemoteUser("hdfs");
-
-      ugi.doAs(new PrivilegedExceptionAction<Void>() {
-
-        public Void run() throws Exception {
-
-          Configuration conf = new Configuration();
-          conf.set("fs.hdfs.impl",
-            org.apache.hadoop.hdfs.DistributedFileSystem.class.getName()
-          );
-          conf.set("fs.file.impl",
-            org.apache.hadoop.fs.LocalFileSystem.class.getName()
-          );
-          conf.set("fs.defaultFS", namenodeuri);
-          conf.set("hadoop.job.ugi", "hdfs");
-          FileSystem fileSystem = FileSystem.get(conf);
-
-          String filename = source.substring(
-            source.lastIndexOf('/') + 1, source.length());
-          String dest1;
-          if (dest.charAt(dest.length() - 1) != '/') {
-            dest1 = dest + "/" + filename;
-          } else {
-            dest1 = dest + filename;
-          }
-
-          Path path = new Path(dest1);
-          if (fileSystem.exists(path)) {
-
-          }
-          FSDataOutputStream out = fileSystem.create(path);
-
-          InputStream in = new BufferedInputStream(
-            new FileInputStream(new File(source)));
-
-          byte[] b = new byte[1024];
-          int numBytes = 0;
-          while ((numBytes = in.read(b)) > 0) {
-            out.write(b, 0, numBytes);
-          }
-          in.close();
-          out.close();
-          fileSystem.close();
-          return null;
-        }
-      });
-    } catch (Exception e) {
-      logger.error("Webhdfs Exception: " , e);
-    }
-
-  }
-
-  public void putFileinHdfsSecured(final String source, final String dest, final String namenodeuri)
-    throws IOException {
-
-    try {
-      final Configuration conf = new Configuration();
-
-      conf.set("fs.hdfs.impl",
-        org.apache.hadoop.hdfs.DistributedFileSystem.class.getName()
-      );
-      conf.set("fs.file.impl",
-        org.apache.hadoop.fs.LocalFileSystem.class.getName()
-      );
-      conf.set("fs.defaultFS", namenodeuri);
-      conf.set("hadoop.job.ugi", "hdfs");
-      conf.set("hadoop.security.authentication", "Kerberos");
-
-      UserGroupInformation.setConfiguration(conf);
-      UserGroupInformation ugi = UserGroupInformation.createRemoteUser("hdfs");
-
-      ugi.doAs(new PrivilegedExceptionAction<Void>() {
-
-        public Void run() throws Exception {
-
-          FileSystem fileSystem = FileSystem.get(conf);
-
-          String filename = source.substring(
-            source.lastIndexOf('/') + 1, source.length());
-          String dest1;
-          if (dest.charAt(dest.length() - 1) != '/') {
-            dest1 = dest + "/" + filename;
-          } else {
-            dest1 = dest + filename;
-          }
-
-          Path path = new Path(dest1);
-          if (fileSystem.exists(path)) {
-
-          }
-          //	Path pathsource = new Path(source);
-          FSDataOutputStream out = fileSystem.create(path);
-
-          InputStream in = new BufferedInputStream(
-            new FileInputStream(new File(source)));
-
-          byte[] b = new byte[1024];
-          int numBytes = 0;
-          while ((numBytes = in.read(b)) > 0) {
-            out.write(b, 0, numBytes);
-          }
-          in.close();
-          out.close();
-          fileSystem.close();
-          return null;
-        }
-      });
-    } catch (Exception e) {
-      logger.error("Webhdfs Exception: " , e);
-
-    }
-
-  }
-}

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/BadRequestFormattedException.java
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/BadRequestFormattedException.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/BadRequestFormattedException.java
new file mode 100644
index 0000000..3edacb2
--- /dev/null
+++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/BadRequestFormattedException.java
@@ -0,0 +1,27 @@
+/**
+ * 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.
+ */
+
+package org.apache.ambari.view.huetoambarimigration.utils;
+
+public class BadRequestFormattedException extends ServiceFormattedException {
+  private final static int STATUS = 400;
+
+  public BadRequestFormattedException(String message, Throwable exception) {
+    super(message, exception, STATUS);
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/FilePaginator.java
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/FilePaginator.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/FilePaginator.java
new file mode 100644
index 0000000..64a406d
--- /dev/null
+++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/FilePaginator.java
@@ -0,0 +1,72 @@
+/**
+ * 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.
+ */
+
+package org.apache.ambari.view.huetoambarimigration.utils;
+
+import org.apache.ambari.view.ViewContext;
+import org.apache.hadoop.fs.FSDataInputStream;
+
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.util.Arrays;
+
+import static java.lang.Math.ceil;
+
+/**
+ * Pagination for HDFS file implementation
+ */
+public class FilePaginator {
+  private static int PAGE_SIZE = 1*1024*1024;  // 1MB
+
+  private String filePath;
+  private ViewContext context;
+
+  /**
+   * Constructor
+   * @param filePath Path to file on HDFS
+   * @param context View Context instance
+   */
+  public FilePaginator(String filePath, ViewContext context) {
+    this.filePath = filePath;
+    this.context = context;
+  }
+
+  /**
+   * Set page size
+   * @param PAGE_SIZE size
+   */
+  public static void setPageSize(int PAGE_SIZE) {
+    FilePaginator.PAGE_SIZE = PAGE_SIZE;
+  }
+
+  /**
+   * Get page count
+   * @return page count
+   * @throws IOException
+   * @throws InterruptedException
+   */
+
+  /**
+   * Read one page of size PAGE_SIZE
+   * @param page page index
+   * @return data in UTF-8
+   * @throws IOException
+   * @throws InterruptedException
+   */
+
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/MisconfigurationFormattedException.java
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/MisconfigurationFormattedException.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/MisconfigurationFormattedException.java
new file mode 100644
index 0000000..dad03ec
--- /dev/null
+++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/MisconfigurationFormattedException.java
@@ -0,0 +1,47 @@
+/**
+ * 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.
+ */
+
+package org.apache.ambari.view.huetoambarimigration.utils;
+
+import org.json.simple.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.util.HashMap;
+
+public class MisconfigurationFormattedException extends WebApplicationException {
+  private final static int STATUS = 500;
+  private final static String message = "Parameter \"%s\" is set to null";
+  private final static Logger LOG =
+      LoggerFactory.getLogger(MisconfigurationFormattedException.class);
+
+  public MisconfigurationFormattedException(String name) {
+    super(errorEntity(name));
+  }
+
+  protected static Response errorEntity(String name) {
+    HashMap<String, Object> response = new HashMap<String, Object>();
+    response.put("message", String.format(message, name));
+    response.put("trace", null);
+    response.put("status", STATUS);
+    return Response.status(STATUS).entity(new JSONObject(response)).type(MediaType.APPLICATION_JSON).build();
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/NotFoundFormattedException.java
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/NotFoundFormattedException.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/NotFoundFormattedException.java
new file mode 100644
index 0000000..00ab049
--- /dev/null
+++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/NotFoundFormattedException.java
@@ -0,0 +1,27 @@
+/**
+ * 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.
+ */
+
+package org.apache.ambari.view.huetoambarimigration.utils;
+
+public class NotFoundFormattedException extends ServiceFormattedException {
+  private final static int STATUS = 404;
+
+  public NotFoundFormattedException(String message, Throwable exception) {
+    super(message, exception, STATUS);
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/ServiceFormattedException.java
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/ServiceFormattedException.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/ServiceFormattedException.java
new file mode 100644
index 0000000..c49a18c
--- /dev/null
+++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/utils/ServiceFormattedException.java
@@ -0,0 +1,101 @@
+/**
+ * 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.
+ */
+
+package org.apache.ambari.view.huetoambarimigration.utils;
+
+import org.json.simple.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.security.AccessControlException;
+import java.util.HashMap;
+
+public class ServiceFormattedException extends WebApplicationException {
+  private final static Logger LOG =
+      LoggerFactory.getLogger(ServiceFormattedException.class);
+
+  public ServiceFormattedException(Throwable e) {
+    super(errorEntity(null, e, suggestStatus(e)));
+  }
+
+  public ServiceFormattedException(String message) {
+    super(errorEntity(message, null, suggestStatus(null)));
+  }
+
+  public ServiceFormattedException(String message, Throwable exception) {
+    super(errorEntity(message, exception, suggestStatus(exception)));
+  }
+
+  public ServiceFormattedException(String message, Throwable exception, int status) {
+    super(errorEntity(message, exception, status));
+  }
+
+  private static int suggestStatus(Throwable exception) {
+    int status = 500;
+    if (exception == null) {
+      return status;
+    }
+    if (exception instanceof AccessControlException) {
+      status = 403;
+    }
+    return status;
+  }
+
+  protected static Response errorEntity(String message, Throwable e, int status) {
+    HashMap<String, Object> response = new HashMap<String, Object>();
+
+    String trace = null;
+
+    response.put("message", message);
+    if (e != null) {
+      trace = e.toString() + "\n\n";
+      StringWriter sw = new StringWriter();
+      e.printStackTrace(new PrintWriter(sw));
+      trace += sw.toString();
+
+      if (message == null) {
+        String innerMessage = e.getMessage();
+        String autoMessage;
+
+        if (innerMessage != null) {
+          autoMessage = String.format("%s [%s]", innerMessage, e.getClass().getSimpleName());
+        } else {
+          autoMessage = e.getClass().getSimpleName();
+        }
+        response.put("message", autoMessage);
+      }
+    }
+    response.put("trace", trace);
+    response.put("status", status);
+
+    if(message != null) {
+      LOG.error(message);
+    }
+    if(trace != null) {
+      LOG.error(trace);
+    }
+
+    Response.ResponseBuilder responseBuilder = Response.status(status).entity(new JSONObject(response)).type(MediaType.APPLICATION_JSON);
+    return responseBuilder.build();
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/resources/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/resources/WEB-INF/web.xml b/contrib/views/hueambarimigration/src/main/resources/WEB-INF/web.xml
deleted file mode 100644
index 8cca06c..0000000
--- a/contrib/views/hueambarimigration/src/main/resources/WEB-INF/web.xml
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-
-<!--
-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. Kerberos, LDAP, Custom. Binary/Htt
--->
-
-<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
-         version="2.4">
-
-  <display-name>Hello Servlet Application</display-name>
-  <welcome-file-list>
-    <welcome-file>index.jsp</welcome-file>
-  </welcome-file-list>
-  <description>
-    This is the hello servlet view application.
-  </description>
-
-  <servlet>
-    <servlet-name>HiveHistory</servlet-name>
-    <servlet-class>org.apache.ambari.view.huetoambarimigration.controller.hive.HiveHistoryMigration</servlet-class>
-    <load-on-startup>1</load-on-startup>
-  </servlet>
-
-  <servlet>
-    <description>
-    </description>
-    <display-name>
-      SavedQuery
-    </display-name>
-    <servlet-name>SavedQuery</servlet-name>
-    <servlet-class>org.apache.ambari.view.huetoambarimigration.controller.hive.HiveSavedQueryMigration</servlet-class>
-  </servlet>
-
-  <servlet>
-    <description>
-    </description>
-    <display-name>PigServlet</display-name>
-    <servlet-name>PigServlet</servlet-name>
-    <servlet-class>org.apache.ambari.view.huetoambarimigration.controller.pig.PigScriptMigration</servlet-class>
-  </servlet>
-
-  <servlet>
-    <description>
-    </description>
-    <display-name>Configuration_check</display-name>
-    <servlet-name>Configuration_check</servlet-name>
-    <servlet-class>org.apache.ambari.view.huetoambarimigration.controller.configurationcheck.ConfigurationCheck
-    </servlet-class>
-  </servlet>
-
-  <servlet>
-    <description>
-    </description>
-    <display-name>Pigjobsevlet</display-name>
-    <servlet-name>Pigjobsevlet</servlet-name>
-    <servlet-class>org.apache.ambari.view.huetoambarimigration.controller.pig.PigJobMigration</servlet-class>
-  </servlet>
-
-  <servlet-mapping>
-    <servlet-name>HiveHistory</servlet-name>
-    <url-pattern>/HiveHistory</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>SavedQuery</servlet-name>
-    <url-pattern>/SavedQuery</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>PigServlet</servlet-name>
-    <url-pattern>/PigServlet</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>Configuration_check</servlet-name>
-    <url-pattern>/Configuration_check</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>Pigjobsevlet</servlet-name>
-    <url-pattern>/Pigjobsevlet</url-pattern>
-  </servlet-mapping>
-
-  <servlet>
-    <description></description>
-    <display-name>RevertChange</display-name>
-    <servlet-name>RevertChange</servlet-name>
-    <servlet-class>org.apache.ambari.view.huetoambarimigration.controller.revertchange.RevertChange</servlet-class>
-  </servlet>
-
-  <servlet-mapping>
-    <servlet-name>RevertChange</servlet-name>
-    <url-pattern>/RevertChange</url-pattern>
-  </servlet-mapping>
-
-  <servlet>
-    <description></description>
-    <display-name>ProgressBarStatus</display-name>
-    <servlet-name>ProgressBarStatus</servlet-name>
-    <servlet-class>org.apache.ambari.view.huetoambarimigration.controller.configurationcheck.ProgressBarStatus
-    </servlet-class>
-  </servlet>
-  <servlet-mapping>
-    <servlet-name>ProgressBarStatus</servlet-name>
-    <url-pattern>/ProgressBarStatus</url-pattern>
-  </servlet-mapping>
-
-</web-app>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/resources/index.jsp
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/resources/index.jsp b/contrib/views/hueambarimigration/src/main/resources/index.jsp
deleted file mode 100644
index 0ff1f36..0000000
--- a/contrib/views/hueambarimigration/src/main/resources/index.jsp
+++ /dev/null
@@ -1,119 +0,0 @@
-<!--
-* 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>
-<head>
-<title>Hue to Ambari Migration</title>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<!-- Bootstrap CSS and bootstrap datepicker CSS used for styling the demo pages-->
-
-<link rel="stylesheet" href="css/bootstrap.css">
-
-
-
-
-<script src="js/jquery.js"></script>
-<script src="js/bootstrap.min.js"></script>
-
-
-
-
-
-<script type="text/javascript">
-	$(function() {
-		home();
-	});
-	function makeTabActive(tab) {
-		if (!tab) {
-			return;
-		}
-		$(".nav-tab").removeClass('active');
-		$(tab).parents('.nav-tab').addClass('active');
-	}
-	function loadconfiguration(tab) {
-		makeTabActive(tab);
-		$('#maincenter11').load('ui/checkconfiguration.jsp');
-	}
-	function revertchange(tab) {
-		makeTabActive(tab);
-		$('#maincenter11').load('ui/revertchange.jsp');
-	}
-	function home(tab) {
-		makeTabActive(tab);
-		$('#maincenter11').load('ui/homepage.jsp');
-	}
-	function loadhivehistory(tab) {
-		makeTabActive(tab);
-		$('#maincenter11').load('ui/hivehistoryquerymigration.jsp');
-	}
-	function loadpigscript(tab) {
-		makeTabActive(tab);
-		$('#maincenter11').load('ui/pigscriptsmigration.jsp');
-	}
-	function loadpigjobs(tab) {
-		makeTabActive(tab);
-		$('#maincenter11').load('ui/pigjobmigration.jsp');
-	}
-	function loadhivesaved(tab) {
-		makeTabActive(tab);
-		$('#maincenter11').load('ui/hivesavedquerymigration.jsp');
-	}
-</script>
-
-
-</head>
-
-<div class="container">
-	<!-- <div class="jumbotron" style="margin:10px">
-    <h1>Hue to Ambari Migration</h1>        
-  </div> -->
-
-
-
-<div class="row">
-	<nav class="navbar navbar-default">
-		<div class="container-fluid">
-			<ul class="nav navbar-nav">
-				<li class="nav-tab active"><a onclick="home(this)">Home</a></li>
-				<li class="nav-tab"><a onclick="loadconfiguration(this)">Check
-						configuration</a></li>
-				<li class="dropdown nav-tab"><a class="dropdown-toggle"
-					data-toggle="dropdown" href="#">Hive <span class="caret"></span></a>
-					<ul class="dropdown-menu">
-						<li><span onclick="loadhivesaved(this)">HiveSaved Query</span></li>
-						<li><span onclick="loadhivehistory(this)">HiveHistory</span></li>
-					</ul></li>
-				<li class="dropdown nav-tab"><a class="dropdown-toggle"
-					data-toggle="dropdown" href="#">Pig <span class="caret"></span></a>
-					<ul class="dropdown-menu">
-						<li><span onclick="loadpigscript(this)">Pigsavedscript</span></li>
-						<li><span onclick="loadpigjobs(this)">Pigjobs</span></li>
-					</ul></li>
-				<li class="nav-tab"><a onclick="revertchange(this)">Revert
-						the changes Page</a></li>
-			</ul>
-		</div>
-	</nav>
-</div>
-<div>
-	<div class="col-lg-2 main"></div>
-	<div class="col-lg-8 main">
-		<div id="maincenter11"></div>
-	</div>
-</div>
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/resources/ui/.gitignore
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/.gitignore b/contrib/views/hueambarimigration/src/main/resources/ui/.gitignore
deleted file mode 100644
index 29aa6db..0000000
--- a/contrib/views/hueambarimigration/src/main/resources/ui/.gitignore
+++ /dev/null
@@ -1,33 +0,0 @@
-# See http://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-/node_modules
-/bower_components
-node/
-
-# misc
-
-/.idea
-
-# Numerous always-ignore extensions
-*.diff
-*.err
-*.orig
-*.log
-*.rej
-*.swo
-*.swp
-*.vi
-*~
-*.sass-cache
-
-# OS or Editor folders
-.DS_Store
-.cache
-.project
-.settings
-.tmproj
-dist
-nbproject
-Thumbs.db
-

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/resources/ui/bower.json
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/bower.json b/contrib/views/hueambarimigration/src/main/resources/ui/bower.json
deleted file mode 100644
index ebbf28c..0000000
--- a/contrib/views/hueambarimigration/src/main/resources/ui/bower.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-  "name": "huetoambari",
-  "homepage": "https://github.com/apache/ambari",
-  "authors": [
-    "pradarttana"
-  ],
-  "description": "",
-  "main": "",
-  "license": "MIT",
-  "private": true,
-  "dependencies": {
-    "bootstrap": "^3.3.6",
-    "eonasdan-bootstrap-datetimepicker": "^4.17.37"
-  }
-}

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/resources/ui/checkconfiguration.jsp
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/checkconfiguration.jsp b/contrib/views/hueambarimigration/src/main/resources/ui/checkconfiguration.jsp
deleted file mode 100644
index b60ff41..0000000
--- a/contrib/views/hueambarimigration/src/main/resources/ui/checkconfiguration.jsp
+++ /dev/null
@@ -1,57 +0,0 @@
-<!--
-* 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.
--->
-
-
-
-<!DOCTYPE html>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<script type="text/javascript">
-	$(document).ready(function() {
-		// we call the function
-		conf_check();
-	});
-	function conf_check() {
-		var url = "Configuration_check";
-
-		$.ajax({
-			url : url,
-			success : function(result) {
-				console.log("Got Result");
-				document.getElementById("areacenter").innerHTML = result;
-
-			}
-		});
-  }
-</script>	
-
-</head>
-<div class="panel panel-default">
-	<div class="panel-heading">
-		<h3>Checking configuration</h3>
-	</div>
-	<div class="panel-body">
-		<div id="areacenter">
-			<center>
-				<img src="image/updateimg.gif" alt="Smiley face">
-			</center>
-		</div>
-	</div>
-</div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/resources/ui/hivehistoryquerymigration.jsp
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/hivehistoryquerymigration.jsp b/contrib/views/hueambarimigration/src/main/resources/ui/hivehistoryquerymigration.jsp
deleted file mode 100644
index 3de2fdf..0000000
--- a/contrib/views/hueambarimigration/src/main/resources/ui/hivehistoryquerymigration.jsp
+++ /dev/null
@@ -1,229 +0,0 @@
-<!--
-* 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.
--->
-
-<!DOCTYPE html>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<script type="text/javascript">
-
-	function validateAndSearch() {
-
-		var uname = document.getElementById("username");
-		uname = uname.options[uname.selectedIndex].value;
-		var startdate = document.getElementById('startdate').value;
-		var enddate = document.getElementById('enddate').value;
-		var instance = document.getElementById("instance");
-		instance = instance.options[instance.selectedIndex].value;
-
-		if (uname == "default") {
-			alert("Please select an username");
-		} else if (instance == "default") {
-			alert("Please select an instance name");
-		} else {
-			$('#progressbar').show();
-			$('#lines').hide();
-
-			historyquery(uname, startdate, enddate, instance);
-			interval = setInterval(loadpercentage, 1000 );
-		}
-	}
-
-	function loadpercentage() {
-		$.ajax({
-      url : "ProgressBarStatus",
-      success : function(result) {
-        $('#progressbarhivesavedquery').css('width', result);
-        console.log("Got the precentage completion "+ result);
-      },
-    });
-
-  }
-
-	function historyquery(uname, startdate, enddate, instance) {
-
-		var url = "HiveHistory?username=" + uname + "&startdate=" + startdate
-        				+ "&enddate=" + enddate + "&instance=" + instance;
-		$.ajax({
-			url : url,
-			success : function(result) {
-				console.log("Got Result");
-				document.getElementById("lines").innerHTML = result;
-				$('#progressbar').hide()
-				$('#lines').show()
-				clearInterval(interval);
-
-			}
-		});
-
-
-
-	}
-</script>
-<%@ page import="java.sql.*"%>
-<%@ page import="org.sqlite.*"%>
-<%@ page import="java.util.ArrayList"%>
-<%@ page import="org.apache.ambari.view.huetoambarimigration.datasource.DataSourceAmbariDatabase"%>
-<%@ page import="org.apache.ambari.view.huetoambarimigration.datasource.DataSourceHueDatabase"%>
-<%@ page import="javax.servlet.ServletConfig"%>
-<%@ page import="javax.servlet.ServletContext"%>
-<%@ page import="org.apache.ambari.view.ViewContext"%>
-</head>
-<div class="row">
-	<%
-		ArrayList<String> username = new ArrayList<String>();
-		ArrayList<String> instancename = new ArrayList<String>();
-		int i;
-
-		Connection conn = null;
-
-		ServletContext context = request.getServletContext();
-        ViewContext view=(ViewContext) context.getAttribute(ViewContext.CONTEXT_ATTRIBUTE);
-        System.out.println(view.getProperties());
-
-		conn = DataSourceHueDatabase.getInstance(view.getProperties().get("huedrivername"),view.getProperties().get("huejdbcurl"),view.getProperties().get("huedbusername"),view.getProperties().get("huedbpassword")).getConnection();
-
-		Statement stat = conn.createStatement();
-
-		ResultSet rs = stat.executeQuery("select * from auth_user;");
-
-		while (rs.next()) {
-			username.add(rs.getString(2));
-		}
-
-		rs.close();
-
-		Connection c = null;
-		Statement stmt = null;
-
-		c = DataSourceAmbariDatabase.getInstance(view.getProperties().get("ambaridrivername"),view.getProperties().get("ambarijdbcurl"),view.getProperties().get("ambaridbusername"),view.getProperties().get("ambaridbpassword")).getConnection();
-
-		c.setAutoCommit(false);
-		stmt = c.createStatement();
-
-		ResultSet rs1=null;
-
-		if(view.getProperties().get("ambaridrivername").contains("oracle")){
-      rs1 = stmt.executeQuery("select distinct(view_instance_name) as instancename from viewentity where view_name='HIVE{1.0.0}'");
-    } else {
-      rs1 = stmt.executeQuery("select distinct(view_instance_name) as instancename from viewentity where view_name='HIVE{1.0.0}';");
-    }
-
-		while (rs1.next()) {
-			instancename.add(rs1.getString(1));
-
-		}
-		rs1.close();
-		stmt.close();
-
-	%>
-	<div class="col-sm-12">
-		<form method="GET" onSubmit="validateAndSearch()">
-			<div class="panel panel-default">
-				<div class="panel-heading">
-					<h3>Hive History Query Migration</h3>
-				</div>
-				<div class="panel-body">
-
-					<div class="row">
-						<div class="col-sm-3">
-							UserName <font size="3" color="red"> *</font>
-						</div>
-						<div class="col-sm-3">
-							<!-- <input type="text" placeholder="Enter username1234(*)" name="username1" id="username1"> -->
-							<select class="form-control" name="username"
-								placeholder="User name" id="username" required>
-								<option value="default" selected>Select below</option>
-								<option value="all">ALL User</option>
-
-								<%
-									for (i = 0; i < username.size(); i++) {
-								%><option value="<%=username.get(i)%>"><%=username.get(i)%></option>
-								<%
-									}
-								%>
-								<%
-									username.clear();
-								%>
-							</select>
-
-						</div>
-					</div>
-					<p></p>
-					<p></p>
-					<div class="row">
-						<div class="col-sm-3">
-							Instance name <font size="3" color="red"> *</font>
-						</div>
-						<div class="col-sm-3">
-							<!-- <input type="text" placeholder="Enter Instance Name(*)" name="instance" id="instance"> -->
-							<select class="form-control" name="instance"
-								placeholder="Instance name" id="instance" required>
-								<option value="default" selected>Select below</option>
-
-								<%
-									for (i = 0; i < instancename.size(); i++) {
-								%><option value="<%=instancename.get(i)%>"><%=instancename.get(i)%></option>
-								<%
-									}
-								%>
-								<%
-									instancename.clear();
-								%>
-							</select>
-						</div>
-					</div>
-					<p></p>
-					<p></p>
-					<div class="row">
-						<div class="col-sm-3">Start Date</div>
-						<div class="col-sm-3">
-							<input type="date" placeholder="Enter date" name="startdate"
-								id="startdate">
-						</div>
-					</div>
-					<p></p>
-					<p></p>
-					<div class="row">
-						<div class="col-sm-3">End Date</div>
-						<div class="col-sm-3">
-							<input type="date" placeholder="Enter date" name="enddate"
-								id="enddate">
-						</div>
-					</div>
-
-					<div class="row">
-
-						<div class="col-sm-3">
-							<input type="button" id="submit" class="btn btn-success"
-								value="submit" onclick="validateAndSearch()">
-						</div>
-					</div>
-
-					<div id="lines" style="display: none;"></div>
-					<br>
-					<br>
-					   <div class="progress" id="progressbar" style="display: none;">
-              <div id="progressbarhivesavedquery" class="progress-bar" role="progressbar" aria-valuenow="70" aria-valuemin="0" aria-valuemax="100"  style="width:0%">
-              </div>
-              </div>
-				</div>
-		</form>
-
-	</div>
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/resources/ui/hivesavedquerymigration.jsp
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/hivesavedquerymigration.jsp b/contrib/views/hueambarimigration/src/main/resources/ui/hivesavedquerymigration.jsp
deleted file mode 100644
index c70751d..0000000
--- a/contrib/views/hueambarimigration/src/main/resources/ui/hivesavedquerymigration.jsp
+++ /dev/null
@@ -1,240 +0,0 @@
-<!--
-* 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.
--->
-
-<!DOCTYPE html>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<!-- Bootstrap CSS and bootstrap datepicker CSS used for styling the demo pages-->
-
-
-
-
- <script type="text/javascript">
-
-	function validateAndSearch() {
-
-		var uname = document.getElementById("username");
-		uname = uname.options[uname.selectedIndex].value;
-		var startdate = document.getElementById('startdate').value;
-		var enddate = document.getElementById('enddate').value;
-		var instance = document.getElementById("instance");
-		instance = instance.options[instance.selectedIndex].value;
-
-		if (uname == "default") {
-			alert("Please select an username");
-		} else if (instance == "default") {
-			alert("Please select an instance name");
-		} else {
-			$('#progressbar').show();
-			$('#lines').hide();
-
-			historyquery(uname, startdate, enddate, instance);
-			interval = setInterval(loadpercentage, 1000 );
-
-		}
-
-	}
-
-	function loadpercentage() {
-      $.ajax({
-         url : "ProgressBarStatus",
-         success : function(result) {
-         $('#progressbarhivesavedquery').css('width', result);
-         console.log("Got the precentage completion "+ result);
-        },
-
-      });
-
-  }
-
-
-
-	function historyquery(uname, startdate, enddate, instance) {
-
-		var url = "SavedQuery?username=" + uname + "&startdate=" + startdate
-        				+ "&enddate=" + enddate + "&instance=" + instance;
-		$.ajax({
-			url : url,
-			success : function(result) {
-				console.log("Got Result");
-				document.getElementById("lines").innerHTML = result;
-				$('#progressbar').hide()
-				$('#lines').show()
-				clearInterval(interval);
-
-			}
-		});
-
-
-
-	}
-</script>
-<%@ page import="java.sql.*"%>
-<%@ page import="org.sqlite.*"%>
-<%@ page import="java.util.ArrayList"%>
-<%@ page import="org.apache.ambari.view.huetoambarimigration.datasource.DataSourceAmbariDatabase"%>
-<%@ page import="org.apache.ambari.view.huetoambarimigration.datasource.DataSourceHueDatabase"%>
-<%@ page import="javax.servlet.ServletConfig"%>
-<%@ page import="javax.servlet.ServletContext"%>
-<%@ page import="org.apache.ambari.view.ViewContext"%>
-</head>
-<div class="row">
-	<%
-		ArrayList<String> username = new ArrayList<String>();
-		ArrayList<String> instancename = new ArrayList<String>();
-		int i;
-
-		Connection conn = null;
-
-		ServletContext context = request.getServletContext();
-        ViewContext view=(ViewContext) context.getAttribute(ViewContext.CONTEXT_ATTRIBUTE);
-        System.out.println(view.getProperties());
-
-		conn = DataSourceHueDatabase.getInstance(view.getProperties().get("huedrivername"),view.getProperties().get("huejdbcurl"),view.getProperties().get("huedbusername"),view.getProperties().get("huedbpassword")).getConnection();
-
-		Statement stat = conn.createStatement();
-
-		ResultSet rs = stat.executeQuery("select * from auth_user;");
-
-		while (rs.next()) {
-			username.add(rs.getString(2));
-		}
-
-		rs.close();
-
-		Connection c = null;
-		Statement stmt = null;
-
-		c = DataSourceAmbariDatabase.getInstance(view.getProperties().get("ambaridrivername"),view.getProperties().get("ambarijdbcurl"),view.getProperties().get("ambaridbusername"),view.getProperties().get("ambaridbpassword")).getConnection();
-
-		c.setAutoCommit(false);
-		stmt = c.createStatement();
-
-		ResultSet rs1=null;
-
-		if(view.getProperties().get("ambaridrivername").contains("oracle")){
-		  rs1 = stmt.executeQuery("select distinct(view_instance_name) as instancename from viewentity where view_name='HIVE{1.0.0}'");
-		} else {
-		  rs1 = stmt.executeQuery("select distinct(view_instance_name) as instancename from viewentity where view_name='HIVE{1.0.0}';");
-		}
-    while (rs1.next()) {
-			instancename.add(rs1.getString(1));
-
-		}
-		rs1.close();
-		stmt.close();
-
-	%>
-	<div class="col-sm-12">
-		<form method="GET" onSubmit="validateAndSearch()">
-			<div class="panel panel-default">
-				<div class="panel-heading">
-					<h3>Hive Saved Query Migration</h3>
-				</div>
-				<div class="panel-body">
-
-					<div class="row">
-						<div class="col-sm-3">
-							UserName <font size="3" color="red"> *</font>
-						</div>
-						<div class="col-sm-3">
-							<!-- <input type="text" placeholder="Enter username1234(*)" name="username1" id="username1"> -->
-							<select class="form-control" name="username"
-								placeholder="User name" id="username" required>
-								<option value="default" selected>Select below</option>
-								<option value="all">ALL User</option>
-
-								<%
-									for (i = 0; i < username.size(); i++) {
-								%><option value="<%=username.get(i)%>"><%=username.get(i)%></option>
-								<%
-									}
-								%>
-								<%
-									username.clear();
-								%>
-							</select>
-
-						</div>
-					</div>
-					<p></p>
-					<p></p>
-					<div class="row">
-						<div class="col-sm-3">
-							Instance name <font size="3" color="red"> *</font>
-						</div>
-						<div class="col-sm-3">
-							<!-- <input type="text" placeholder="Enter Instance Name(*)" name="instance" id="instance"> -->
-							<select class="form-control" name="instance"
-								placeholder="Instance name" id="instance" required>
-								<option value="default" selected>Select below</option>
-
-								<%
-									for (i = 0; i < instancename.size(); i++) {
-								%><option value="<%=instancename.get(i)%>"><%=instancename.get(i)%></option>
-								<%
-									}
-								%>
-								<%
-									instancename.clear();
-								%>
-							</select>
-						</div>
-					</div>
-					<p></p>
-					<p></p>
-					<div class="row">
-						<div class="col-sm-3">Start Date</div>
-						<div class="col-sm-3">
-							<input type="date" placeholder="Enter date" name="startdate"
-								id="startdate">
-						</div>
-					</div>
-					<p></p>
-					<p></p>
-					<div class="row">
-						<div class="col-sm-3">End Date</div>
-						<div class="col-sm-3">
-							<input type="date" placeholder="Enter date" name="enddate"
-								id="enddate">
-						</div>
-					</div>
-
-					<div class="row">
-
-						<div class="col-sm-3">
-							<input type="button" id="submit" class="btn btn-success"
-								value="submit" onclick="validateAndSearch()">
-						</div>
-					</div>
-
-					<div id="lines" style="display: none;"></div>
-
-					<br>
-					<br>
-					   <div class="progress" id="progressbar" style="display: none;">
-              <div id="progressbarhivesavedquery" class="progress-bar" role="progressbar" aria-valuenow="70" aria-valuemin="0" aria-valuemax="100"  style="width:0%">
-          </div>
-        </div>
-
-				</div>
-		</form>
-
-	</div>
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/resources/ui/homepage.jsp
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/homepage.jsp b/contrib/views/hueambarimigration/src/main/resources/ui/homepage.jsp
deleted file mode 100644
index 69aadac..0000000
--- a/contrib/views/hueambarimigration/src/main/resources/ui/homepage.jsp
+++ /dev/null
@@ -1,31 +0,0 @@
-<!--
-* 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.
--->
-
-<%@ page language="java" contentType="text/html; charset=US-ASCII"
-	pageEncoding="US-ASCII"%>
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-
-</head>
-<body>
-
-
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/.bowerrc
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/.bowerrc b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/.bowerrc
new file mode 100644
index 0000000..959e169
--- /dev/null
+++ b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/.bowerrc
@@ -0,0 +1,4 @@
+{
+  "directory": "bower_components",
+  "analytics": false
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/.editorconfig
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/.editorconfig b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/.editorconfig
new file mode 100644
index 0000000..47c5438
--- /dev/null
+++ b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/.editorconfig
@@ -0,0 +1,34 @@
+# EditorConfig helps developers define and maintain consistent
+# coding styles between different editors and IDEs
+# editorconfig.org
+
+root = true
+
+
+[*]
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+indent_style = space
+indent_size = 2
+
+[*.js]
+indent_style = space
+indent_size = 2
+
+[*.hbs]
+insert_final_newline = false
+indent_style = space
+indent_size = 2
+
+[*.css]
+indent_style = space
+indent_size = 2
+
+[*.html]
+indent_style = space
+indent_size = 2
+
+[*.{diff,md}]
+trim_trailing_whitespace = false

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/.ember-cli
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/.ember-cli b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/.ember-cli
new file mode 100644
index 0000000..427f570
--- /dev/null
+++ b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/.ember-cli
@@ -0,0 +1,10 @@
+
+{
+  /**
+    Ember CLI sends analytics information by default. The data is completely
+    anonymous, but there are times when you might want to disable this behavior.
+
+    Setting `disableAnalytics` to true will prevent any data from being sent.
+  */
+  "disableAnalytics": false
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f4a9c28/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/.gitignore
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/.gitignore b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/.gitignore
new file mode 100644
index 0000000..f7245d9
--- /dev/null
+++ b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/.gitignore
@@ -0,0 +1,44 @@
+# See http://help.github.com/ignore-files/ for more about ignoring files.
+
+# compiled output
+/dist
+/tmp
+
+# NPM packages folder.
+
+node_modules/
+bower_components/
+node/
+
+# misc
+/.sass-cache
+/connect.lock
+/coverage/*
+/libpeerconnection.log
+npm-debug.log
+testem.log
+
+/.idea
+
+# Numerous always-ignore extensions
+*.diff
+*.err
+*.orig
+*.log
+*.rej
+*.swo
+*.swp
+*.vi
+*~
+*.sass-cache
+
+# OS or Editor folders
+.DS_Store
+.cache
+.project
+.settings
+.tmproj
+dist
+nbproject
+Thumbs.db
+