You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by gn...@apache.org on 2017/02/28 06:07:31 UTC

ambari git commit: AMBARI-20173. DB selected is not persisted while switching between tabs, SavedQuery tab does not show preview, if the query is not executed before saving. (Venkata Sairam via gauravn7)

Repository: ambari
Updated Branches:
  refs/heads/trunk cbfd78cdb -> d7c8aeaab


AMBARI-20173. DB selected is not persisted while switching between tabs,SavedQuery tab does not show preview, if the query is not executed before saving. (Venkata Sairam via gauravn7)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/d7c8aeaa
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/d7c8aeaa
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/d7c8aeaa

Branch: refs/heads/trunk
Commit: d7c8aeaab81a8a9cad5911ef0e859f0b5d681e8e
Parents: cbfd78c
Author: Gaurav Nagar <gr...@gmail.com>
Authored: Tue Feb 28 11:37:20 2017 +0530
Committer: Gaurav Nagar <gr...@gmail.com>
Committed: Tue Feb 28 11:37:20 2017 +0530

----------------------------------------------------------------------
 .../savedQueries/SavedQueryResourceManager.java | 44 ++++----------------
 .../resources/ui/app/routes/queries/query.js    |  3 ++
 .../resources/ui/app/routes/savedqueries.js     | 33 ++++++++-------
 .../resources/ui/app/services/saved-queries.js  | 10 +++++
 4 files changed, 41 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/d7c8aeaa/contrib/views/hive20/src/main/java/org/apache/ambari/view/hive20/resources/savedQueries/SavedQueryResourceManager.java
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/java/org/apache/ambari/view/hive20/resources/savedQueries/SavedQueryResourceManager.java b/contrib/views/hive20/src/main/java/org/apache/ambari/view/hive20/resources/savedQueries/SavedQueryResourceManager.java
index ef497ce..3690683 100644
--- a/contrib/views/hive20/src/main/java/org/apache/ambari/view/hive20/resources/savedQueries/SavedQueryResourceManager.java
+++ b/contrib/views/hive20/src/main/java/org/apache/ambari/view/hive20/resources/savedQueries/SavedQueryResourceManager.java
@@ -6,9 +6,9 @@
  * 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
- *
+ * <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.
@@ -53,12 +53,11 @@ public class SavedQueryResourceManager extends PersonalCRUDResourceManager<Saved
 
   @Override
   public SavedQuery create(SavedQuery object) {
+    String query = object.getShortQuery();
+    object.setShortQuery(makeShortQuery(query));
     object = super.create(object);
     try {
-
-      if (object.getQueryFile() == null || object.getQueryFile().isEmpty()) {
-        createDefaultQueryFile(object);
-      }
+      createDefaultQueryFile(object, query);
 
     } catch (ServiceFormattedException e) {
       cleanupAfterErrorAndThrowAgain(object, e);
@@ -66,7 +65,7 @@ public class SavedQueryResourceManager extends PersonalCRUDResourceManager<Saved
     return object;
   }
 
-  private void createDefaultQueryFile(SavedQuery object) {
+  private void createDefaultQueryFile(SavedQuery object, String query) {
     String userScriptsPath = context.getProperties().get("scripts.dir");
     if (userScriptsPath == null) {
       String msg = "scripts.dir is not configured!";
@@ -82,7 +81,7 @@ public class SavedQueryResourceManager extends PersonalCRUDResourceManager<Saved
     String newFilePath = null;
     try {
       newFilePath = HdfsUtil.findUnallocatedFileName(sharedObjectsFactory.getHdfsApi(), baseFileName, ".hql");
-      HdfsUtil.putStringToFile(sharedObjectsFactory.getHdfsApi(), newFilePath, "");
+      HdfsUtil.putStringToFile(sharedObjectsFactory.getHdfsApi(), newFilePath, query);
     } catch (HdfsApiException e) {
       throw new ServiceFormattedException(e);
     }
@@ -94,28 +93,9 @@ public class SavedQueryResourceManager extends PersonalCRUDResourceManager<Saved
   @Override
   public SavedQuery read(Object id) throws ItemNotFound {
     SavedQuery savedQuery = super.read(id);
-    fillShortQueryField(savedQuery);
     return savedQuery;
   }
 
-  private void fillShortQueryField(SavedQuery savedQuery) {
-    if (savedQuery.getQueryFile() != null) {
-      FilePaginator paginator = new FilePaginator(savedQuery.getQueryFile(), sharedObjectsFactory.getHdfsApi());
-      String query = null;
-      try {
-        query = paginator.readPage(0);
-      } catch (IOException e) {
-        LOG.error("Can't read query file " + savedQuery.getQueryFile());
-        return;
-      } catch (InterruptedException e) {
-        LOG.error("Can't read query file " + savedQuery.getQueryFile());
-        return;
-      }
-      savedQuery.setShortQuery(makeShortQuery(query));
-    }
-    storageFactory.getStorage().store(SavedQuery.class, savedQuery);
-  }
-
   private void emptyShortQueryField(SavedQuery query) {
     query.setShortQuery("");
     storageFactory.getStorage().store(SavedQuery.class, query);
@@ -131,7 +111,7 @@ public class SavedQueryResourceManager extends PersonalCRUDResourceManager<Saved
   protected static String makeShortQuery(String query) {
     query = query.replaceAll("(?i)set\\s+[\\w\\-.]+(\\s*)=(\\s*)[\\w\\-.]+(\\s*);", "");
     query = query.trim();
-    return query.substring(0, (query.length() > 42)?42:query.length());
+    return query.substring(0, (query.length() > 42) ? 42 : query.length());
   }
 
   @Override
@@ -146,12 +126,6 @@ public class SavedQueryResourceManager extends PersonalCRUDResourceManager<Saved
   @Override
   public List<SavedQuery> readAll(FilteringStrategy filteringStrategy) {
     List<SavedQuery> queries = super.readAll(filteringStrategy);
-    for(SavedQuery query : queries) {
-      String shortQuery = query.getShortQuery();
-      if(shortQuery == null || shortQuery.isEmpty()) {
-        fillShortQueryField(query);
-      }
-    }
     return queries;
   }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/d7c8aeaa/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
index efab0ad..8f0085c 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/queries/query.js
@@ -156,6 +156,9 @@ export default Ember.Route.extend(UILoggerMixin, {
 
   },
   checkIfDeafultDatabaseExists(alldatabases){
+    if(this.get('controller.model').get('selectedDb')) {
+      return this.get('controller.model').get('selectedDb');
+    }
     let defaultDB = alldatabases.findBy('name', 'default'), selectedDb;
     if(defaultDB) {
       selectedDb = defaultDB.get("name");

http://git-wip-us.apache.org/repos/asf/ambari/blob/d7c8aeaa/contrib/views/hive20/src/main/resources/ui/app/routes/savedqueries.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/routes/savedqueries.js b/contrib/views/hive20/src/main/resources/ui/app/routes/savedqueries.js
index 7b18424..5369f8e 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/routes/savedqueries.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/routes/savedqueries.js
@@ -17,6 +17,7 @@
  */
 
 import Ember from 'ember';
+import UILoggerMixin from '../mixins/ui-logger';
 
 export default Ember.Route.extend({
 
@@ -84,7 +85,7 @@ export default Ember.Route.extend({
 
     openAsWorksheet(savedQuery){
 
-      let hasWorksheetModel = this.modelFor('queries');
+      let hasWorksheetModel = this.modelFor('queries'), self = this;
       let worksheetId;
 
       if (Ember.isEmpty(hasWorksheetModel)){
@@ -103,19 +104,23 @@ export default Ember.Route.extend({
         });
         worksheetId = `worksheet${worksheets.get('length') + 1}`;
       }
-
-      let localWs = {
-        id: worksheetId,
-        title: savedQuery.get('title'),
-        query: savedQuery.get('shortQuery'),
-        selectedDb : savedQuery.get('dataBase'),
-        owner: savedQuery.get('owner'),
-        selected: true
-      };
-
-      this.store.createRecord('worksheet', localWs );
-
-      this.transitionTo('queries.query', localWs.title);
+      this.get("savedQueries").fetchSavedQuery(savedQuery.get('queryFile')).then(function(response) {
+        let localWs = {
+          id: worksheetId,
+          title: savedQuery.get('title'),
+          queryFile: savedQuery.get('queryFile'),
+          query: response.file.fileContent,
+          selectedDb : savedQuery.get('dataBase'),
+          owner: savedQuery.get('owner'),
+          selected: true
+        };
+
+        self.store.createRecord('worksheet', localWs );
+
+        self.transitionTo('queries.query', localWs.title);
+      }, (error) => {
+         self.get('logger').danger('Failed to load the query', self.extractError(error));
+      });
     }
   }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/d7c8aeaa/contrib/views/hive20/src/main/resources/ui/app/services/saved-queries.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive20/src/main/resources/ui/app/services/saved-queries.js b/contrib/views/hive20/src/main/resources/ui/app/services/saved-queries.js
index 80a19f3..2752375 100644
--- a/contrib/views/hive20/src/main/resources/ui/app/services/saved-queries.js
+++ b/contrib/views/hive20/src/main/resources/ui/app/services/saved-queries.js
@@ -48,6 +48,16 @@ export default Ember.Service.extend({
       dataType:"json",
       headers: {'X-Requested-By': 'ambari'}
     })
+  },
+
+  fetchSavedQuery(path) {
+    let url = this.get('store').adapterFor('application').buildURL()+ '/files/' + encodeURIComponent(path);
+
+    return $.ajax({
+      type: "GET",
+      url: url,
+      headers: {'X-Requested-By': 'ambari'}
+    })
   }
 
 });