Repository: ambari
Updated Branches:
  refs/heads/branch-dev-logsearch 3013589a1 -> ea644cc43


http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/DownloadUtil.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/DownloadUtil.java
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/DownloadUtil.java
new file mode 100644
index 0000000..3fd4b45
--- /dev/null
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/DownloadUtil.java
@@ -0,0 +1,176 @@
+/*
+ * 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.logsearch.util;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import com.google.common.base.Splitter;
+import org.apache.ambari.logsearch.common.LogSearchConstants;
+import org.apache.ambari.logsearch.model.request.impl.ServiceLogExportRequest;
+import org.apache.ambari.logsearch.model.response.BarGraphData;
+import org.apache.ambari.logsearch.model.response.BarGraphDataListResponse;
+import org.apache.ambari.logsearch.model.response.NameValueData;
+import org.apache.ambari.logsearch.model.response.TemplateData;
+import org.apache.commons.lang.StringUtils;
+import org.apache.solr.common.SolrDocument;
+import org.apache.solr.common.SolrDocumentList;
+
+import static 
org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.LINE_NUMBER;
+import static 
org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.LOGTIME;
+import static 
org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.LOG_MESSAGE;
+import static 
org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.LEVEL;
+import static 
org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.HOST;
+import static 
org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.COMPONENT;
+import static 
org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.LOGGER_NAME;
+import static 
org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.THREAD_NAME;
+import static 
org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.FILE;
+
+
+public class DownloadUtil {
+
+  private DownloadUtil() {
+    throw new UnsupportedOperationException();
+  }
+
+  public static void fillModelsForLogFile(SolrDocumentList docList, 
Map<String, Object> models, ServiceLogExportRequest request,
+                                          String format, String from, String 
to) {
+    long numLogs = docList.getNumFound();
+    List<String> hosts = new ArrayList<>();
+    List<String> components = new ArrayList<>();
+    List<String> levels = new ArrayList<>();
+    List<TemplateData> logData = new ArrayList<>();
+    for (SolrDocument doc : docList) {
+      if (doc != null) {
+        String hostname = (String) doc.getFieldValue(HOST);
+        String comp = (String) doc.getFieldValue(COMPONENT);
+        String level = (String) doc.getFieldValue(LEVEL);
+
+        if (!hosts.contains(hostname)) {
+          hosts.add(hostname);
+        }
+
+        if (!components.contains(comp)) {
+          components.add(comp);
+        }
+
+        if (!levels.contains(level)) {
+          levels.add(level);
+        }
+
+        StringBuffer textToWrite = new StringBuffer();
+
+        if (doc.getFieldValue(LOGTIME) != null) {
+          textToWrite.append(doc.getFieldValue(LOGTIME).toString() + " ");
+        }
+        if (doc.getFieldValue(LEVEL) != null) {
+          textToWrite.append(doc.getFieldValue(LEVEL).toString()).append(" ");
+        }
+        if (doc.getFieldValue(THREAD_NAME) != null) {
+          
textToWrite.append(doc.getFieldValue(THREAD_NAME).toString().trim()).append(" 
");
+        }
+        if (doc.getFieldValue(LOGGER_NAME) != null) {
+          
textToWrite.append(doc.getFieldValue(LOGGER_NAME).toString().trim()).append(" 
");
+        }
+        if (doc.getFieldValue(FILE) != null && doc.getFieldValue(LINE_NUMBER) 
!= null) {
+          textToWrite
+            .append(doc.getFieldValue(FILE).toString())
+            .append(":")
+            .append(doc.getFieldValue(LINE_NUMBER).toString())
+            .append(" ");
+        }
+        if (doc.getFieldValue(LOG_MESSAGE) != null) {
+          textToWrite.append("- ")
+            .append(doc.getFieldValue(LOG_MESSAGE).toString());
+        }
+        logData.add(new TemplateData((textToWrite.toString())));
+      }
+    }
+    models.put("numberOfLogs", numLogs);
+    models.put("logs", logData);
+    models.put("hosts", "[ " + StringUtils.join(hosts, " ; ") + " ]");
+    models.put("components", "[ " + StringUtils.join(components, " ; ") + " 
]");
+    models.put("format", format);
+    models.put("from", from);
+    models.put("levels", StringUtils.join(levels, ", "));
+    models.put("to", to);
+    String includeString = request.getiMessage();
+    if (StringUtils.isBlank(includeString)) {
+      includeString = "\"\"";
+    } else {
+      List<String> include = 
Splitter.on(request.getiMessage()).splitToList(LogSearchConstants.I_E_SEPRATOR);
+      includeString = "\"" + StringUtils.join(include, "\", \"") + "\"";
+    }
+    models.put("iString", includeString);
+
+    String excludeString = request.geteMessage();
+    if (StringUtils.isBlank(excludeString)) {
+      excludeString = "\"\"";
+    } else {
+      List<String> exclude = 
Splitter.on(request.getiMessage()).splitToList(LogSearchConstants.I_E_SEPRATOR);
+      excludeString = "\"" + StringUtils.join(exclude, "\", \"") + "\"";
+    }
+    models.put("eString", excludeString);
+  }
+
+  public static void fillUserResourcesModel(Map<String, Object> models, 
BarGraphDataListResponse vBarUserDataList, BarGraphDataListResponse 
vBarResourceDataList) {
+    List<TemplateData> usersDataList = new ArrayList<>();
+    List<TemplateData> resourceDataList = new ArrayList<>();
+    Collection<BarGraphData> tableUserData = vBarUserDataList.getGraphData();
+    for (BarGraphData graphData : tableUserData) {
+      String userName = graphData.getName().length() > 45 ? 
graphData.getName().substring(0, 45) : graphData.getName();
+      Collection<NameValueData> vnameValueList = graphData.getDataCount();
+      usersDataList.add(new 
TemplateData(appendNameValueData(addBlank(userName), vnameValueList)));
+    }
+    Collection<BarGraphData> tableResourceData = 
vBarResourceDataList.getGraphData();
+    for (BarGraphData graphData : tableResourceData) {
+      String resourceName = graphData.getName().length() > 45 ? 
graphData.getName().substring(0, 45) : graphData.getName();
+      Collection<NameValueData> vnameValueList = graphData.getDataCount();
+      resourceDataList.add(new 
TemplateData(appendNameValueData(addBlank(resourceName), vnameValueList)));
+    }
+    models.put("users", usersDataList);
+    models.put("resources", resourceDataList);
+    models.put("usersSummary", vBarUserDataList.getGraphData().size());
+    models.put("resourcesSummary", vBarResourceDataList.getGraphData().size());
+  }
+
+  private static String appendNameValueData(String data, 
Collection<NameValueData> vnameValueList) {
+    int count = 0;
+    String blank = "";
+    for (NameValueData vNameValue : vnameValueList) {
+      data += blank + vNameValue.getName() + " " + vNameValue.getValue();
+      if (count == 0)
+        blank = addBlank(blank);
+      count++;
+    }
+    return data;
+  }
+
+  private static String addBlank(String field) {
+    int blanks = 50;
+    int strSize = field.length();
+    String fieldWithBlank = field;
+    for (int i = 0; i < blanks - strSize; i++) {
+      fieldWithBlank += " ";
+    }
+    return fieldWithBlank;
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/FileUtil.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/FileUtil.java
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/FileUtil.java
index 505b74d..f7330fa 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/FileUtil.java
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/FileUtil.java
@@ -19,19 +19,9 @@
 
 package org.apache.ambari.logsearch.util;
 
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
 import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
 import java.net.URL;
-import java.util.List;
-import java.util.Set;
 
-import org.apache.ambari.logsearch.common.MessageEnums;
-import org.apache.ambari.logsearch.view.VHost;
-import org.apache.ambari.logsearch.view.VSummary;
 import org.apache.log4j.Logger;
 
 public class FileUtil {
@@ -40,80 +30,6 @@ public class FileUtil {
   private FileUtil() {
     throw new UnsupportedOperationException();
   }
-  
-  public static Response saveToFile(String text, String fileName, VSummary 
vsummary) {
-    String mainExportedFile = "";
-    FileOutputStream fis = null;
-    try {
-      mainExportedFile = mainExportedFile + 
"**********************Summary**********************\n";
-      mainExportedFile = mainExportedFile + "Number of Logs : " + 
vsummary.getNumberLogs() + "\n";
-      mainExportedFile = mainExportedFile + "From           : " + 
vsummary.getFrom() + "\n";
-      mainExportedFile = mainExportedFile + "To             : " + 
vsummary.getTo() + "\n";
-
-      List<VHost> hosts = vsummary.getHosts();
-      String blankCharacterForHost = String.format("%-8s", "");
-      int numberHost = 0;
-      for (VHost host : hosts) {
-        numberHost += 1;
-        String h = host.getName();
-        String c = "";
-        Set<String> comp = host.getComponents();
-        boolean zonetar = true;
-        if (comp != null) {
-          for (String component : comp) {
-            if (zonetar) {
-              c = component;
-              zonetar = false;
-            } else {
-              c = c + ", " + component;
-            }
-          }
-        }
-        if (numberHost > 9){
-          blankCharacterForHost = String.format("%-7s", blankCharacterForHost);
-        }else if (numberHost > 99){
-          blankCharacterForHost = String.format("%-6s", blankCharacterForHost);
-        }else if (numberHost > 999){
-          blankCharacterForHost = String.format("%-5s", blankCharacterForHost);
-        }else if (numberHost > 9999){
-          blankCharacterForHost = String.format("%-4s", blankCharacterForHost);
-        }else if (numberHost > 99999){
-          blankCharacterForHost = String.format("%-3s", blankCharacterForHost);
-        }
-        if (numberHost == 1) {
-          mainExportedFile = mainExportedFile + "Host" + blankCharacterForHost 
+ "   : " + h + " [" + c + "] " + "\n";
-        } else if (numberHost > 1) {
-          mainExportedFile = mainExportedFile + "Host_" + numberHost + 
blankCharacterForHost + " : " + h + " [" + c + "] " + "\n";
-        }
-
-      }
-      mainExportedFile = mainExportedFile + "Levels"+String.format("%-9s", 
blankCharacterForHost)+": " + vsummary.getLevels() + "\n";
-      mainExportedFile = mainExportedFile + "Format"+String.format("%-9s", 
blankCharacterForHost)+": " + vsummary.getFormat() + "\n";
-      mainExportedFile = mainExportedFile + "\n";
-
-      mainExportedFile = mainExportedFile + "Included String: [" + 
vsummary.getIncludeString() + "]\n\n";
-      mainExportedFile = mainExportedFile + "Excluded String: [" + 
vsummary.getExcludeString() + "]\n\n";
-      mainExportedFile = mainExportedFile + 
"************************Logs***********************" + "\n";
-      mainExportedFile = mainExportedFile + text + "\n";
-      File file = File.createTempFile(fileName, vsummary.getFormat());
-      fis = new FileOutputStream(file);
-      fis.write(mainExportedFile.getBytes());
-      return Response
-        .ok(file, MediaType.APPLICATION_OCTET_STREAM)
-        .header("Content-Disposition", "attachment;filename=" + fileName + 
vsummary.getFormat())
-        .build();
-    } catch (Exception e) {
-      logger.error(e.getMessage());
-      throw RESTErrorUtil.createRESTException(e.getMessage(), 
MessageEnums.ERROR_SYSTEM);
-    } finally {
-      if (fis != null) {
-        try {
-          fis.close();
-        } catch (IOException e) {
-        }
-      }
-    }
-  }
 
   public static File getFileFromClasspath(String filename) {
     URL fileCompleteUrl = 
Thread.currentThread().getContextClassLoader().getResource(filename);

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/SolrUtil.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/SolrUtil.java
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/SolrUtil.java
index 33262f3..c67cf27 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/SolrUtil.java
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/SolrUtil.java
@@ -19,146 +19,45 @@
 
 package org.apache.ambari.logsearch.util;
 
-import java.util.Collection;
 import java.util.HashMap;
-import java.util.Locale;
+import java.util.Map;
 
 import org.apache.ambari.logsearch.common.LogSearchConstants;
-import org.apache.ambari.logsearch.dao.SolrDaoBase;
+import org.apache.lucene.analysis.core.KeywordTokenizerFactory;
+import org.apache.lucene.analysis.path.PathHierarchyTokenizerFactory;
+import org.apache.lucene.analysis.standard.StandardTokenizerFactory;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.schema.TrieDoubleField;
 import org.apache.solr.schema.TrieFloatField;
 import org.apache.solr.schema.TrieIntField;
 import org.apache.solr.schema.TrieLongField;
-import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang.StringUtils;
-import org.springframework.util.CollectionUtils;
 
 public class SolrUtil {
   private SolrUtil() {
     throw new UnsupportedOperationException();
   }
-  
-  public static String setField(String fieldName, String value) {
-    if (value == null || value.trim().length() == 0) {
-      return "";
-    }
-    return fieldName + ":" + value.trim().toLowerCase(Locale.ENGLISH);
-  }
-
-  public static String inList(String fieldName, int[] values) {
-    if (ArrayUtils.isEmpty(values)) {
-      return "";
-    }
-    String expr = "";
-    // Add the filter queries
-    for (int i : values) {
-      expr += i + " ";
-    }
-    if (values.length == 0) {
-      return fieldName + ":" + expr;
-    } else {
-      return fieldName + ":(" + expr + ")";
-    }
-  }
-
-  public static String inList(Collection<Long> values) {
-    if (CollectionUtils.isEmpty(values)) {
-      return "";
-    }
-    String expr = "";
-    for (Long value : values) {
-      expr += value.toString() + " ";
-    }
-
-    if (values.isEmpty()) {
-      return expr.trim();
-    } else {
-      return "(" + expr.trim() + ")";
-    }
-
-  }
-
-  public static String orList(String fieldName, String[] valueList, String 
wildCard) {
-    if (ArrayUtils.isEmpty(valueList)) {
-      return "";
-    }
-    
-    if (StringUtils.isBlank(wildCard)) {
-      wildCard = "";
-    }
-    
-    StringBuilder expr = new StringBuilder();
-    int count = -1;
-    for (String value : valueList) {
-      count++;
-      if (count > 0) {
-        expr.append(" OR ");
-      }
-      
-      expr.append( fieldName + ":"+ wildCard + value + wildCard);
-
-    }
-    if (valueList.length == 0) {
-      return expr.toString();
-    } else {
-      return "(" + expr + ")";
-    }
-
-  }
-
-  public static String andList(String fieldName, String[] valueList, String 
wildCard) {
-    if (ArrayUtils.isEmpty(valueList)) {
-      return "";
-    }
-    
-    if (StringUtils.isBlank(wildCard)) {
-      wildCard = "";
-    }
-    
-    StringBuilder expr = new StringBuilder();
-    int count = -1;
-    for (String value : valueList) {
-      count++;
-      if (count > 0) {
-        expr.append(" AND ");
-      }
-      
-      expr.append( fieldName + ":"+ wildCard + value + wildCard);
-
-    }
-    if (valueList.length == 0) {
-      return expr.toString();
-    } else {
-      return "(" + expr + ")";
-    }
-
-  }
 
   /**
    * Copied from Solr ClientUtils.escapeQueryChars and removed escaping *
    */
   public static String escapeQueryChars(String s) {
     StringBuilder sb = new StringBuilder();
-    int prev = 0;
     if (s != null) {
       for (int i = 0; i < s.length(); i++) {
         char c = s.charAt(i);
-        int ic = (int)c;
-        if( ic == 10 ) {
-          if( prev != 13) {
-            //Let's insert \r
-            sb.append('\\');
-            sb.append((char)13);
-          }
+        int ic = (int) c;
+        if (ic == 10) {
+          sb.append('\\');
+          sb.append((char) 13);
         }
         // Note: Remove || c == '*'
         // These characters are part of the query syntax and must be escaped
         if (c == '\\' || c == '+' || c == '-' || c == '!' || c == '('
-            || c == ')' || c == ':' || c == '^' || c == '[' || c == ']'
-            || c == '\"' || c == '{' || c == '}' || c == '~' || c == '?'
-            || c == '|' || c == '&' || c == ';' || c == '/'
-            || Character.isWhitespace(c)) {
+          || c == ')' || c == ':' || c == '^' || c == '[' || c == ']'
+          || c == '\"' || c == '{' || c == '}' || c == '~' || c == '?'
+          || c == '|' || c == '&' || c == ';' || c == '/'
+          || Character.isWhitespace(c)) {
           sb.append('\\');
         }
         sb.append(c);
@@ -167,25 +66,6 @@ public class SolrUtil {
     return sb.toString();
   }
 
-  private static String escapeForWhiteSpaceTokenizer(String search) {
-    if (search == null) {
-      return null;
-    }
-    String newString = search.trim();
-    String newSearch = escapeQueryChars(newString);
-    boolean isSingleWord = true;
-    for (int i = 0; i < search.length(); i++) {
-      if (Character.isWhitespace(search.charAt(i))) {
-        isSingleWord = false;
-      }
-    }
-    if (!isSingleWord) {
-      newSearch = "\"" + newSearch + "\"";
-    }
-
-    return newSearch;
-  }
-
   public static String escapeForStandardTokenizer(String search) {
     if (search == null) {
       return null;
@@ -224,16 +104,14 @@ public class SolrUtil {
    * This is a special case scenario to handle log_message for wild card
    * scenarios
    */
-  public static String escapeForLogMessage(String field, String search) {
+  public static String escapeForLogMessage(String search) {
     if (search.startsWith("*") && search.endsWith("*")) {
-      field = LogSearchConstants.SOLR_KEY_LOG_MESSAGE;
       search = escapeForKeyTokenizer(search);
     } else {
       // Use whitespace index
-      field = LogSearchConstants.SOLR_LOG_MESSAGE;
-      search = escapeForWhiteSpaceTokenizer(search);
+      search = escapeForStandardTokenizer(search);
     }
-    return field + ":" + search;
+    return search;
   }
 
   public static String makeSolrSearchString(String search) {
@@ -270,11 +148,11 @@ public class SolrUtil {
   }
   
 
-  public static boolean isSolrFieldNumber(String fieldType,SolrDaoBase 
solrDaoBase) {
+  public static boolean isSolrFieldNumber(String fieldType, Map<String, 
String> schemaFieldsMap) {
     if (StringUtils.isBlank(fieldType)) {
       return false;
     } else {
-      HashMap<String, Object> typeInfoMap = 
getFieldTypeInfoMap(fieldType,solrDaoBase);
+      HashMap<String, Object> typeInfoMap = getFieldTypeInfoMap(fieldType, 
schemaFieldsMap);
       if (typeInfoMap == null || typeInfoMap.isEmpty()) {
         return false;
       }
@@ -294,12 +172,63 @@ public class SolrUtil {
       return false;
     }
   }
+
+  public static String putWildCardByType(String str, String key, Map<String, 
String> schemaFieldsMap) {
+    String fieldType = schemaFieldsMap.get(key);
+    if (!StringUtils.isBlank(fieldType)) {
+      if (isSolrFieldNumber(fieldType, schemaFieldsMap)) {
+        String value = putEscapeCharacterForNumber(str, fieldType, 
schemaFieldsMap);
+        if (!StringUtils.isBlank(value)) {
+          return value;
+        } else {
+          return null;
+        }
+      } else if (checkTokenizer(fieldType, StandardTokenizerFactory.class, 
schemaFieldsMap)) {
+        return escapeForStandardTokenizer(str);
+      } else if (checkTokenizer(fieldType, KeywordTokenizerFactory.class, 
schemaFieldsMap)|| "string".equalsIgnoreCase(fieldType)) {
+        return makeSolrSearchStringWithoutAsterisk(str);
+      } else if (checkTokenizer(fieldType, 
PathHierarchyTokenizerFactory.class, schemaFieldsMap)) {
+        return str;
+      }
+    }
+    return str;
+  }
+
+  private static String putEscapeCharacterForNumber(String str,String 
fieldType, Map<String, String> schemaFieldsMap) {
+    if (!StringUtils.isBlank(str)) {
+      str = str.replace("*", "");
+    }
+    String escapeCharSting = parseInputValueAsPerFieldType(str,fieldType, 
schemaFieldsMap);
+    if (escapeCharSting == null || escapeCharSting.isEmpty()) {
+      return null;
+    }
+    escapeCharSting = escapeCharSting.replace("-", "\\-");
+    return escapeCharSting;
+  }
+
+  private static String parseInputValueAsPerFieldType(String str,String 
fieldType, Map<String, String> schemaFieldsMap) {
+    try {
+      HashMap<String, Object> fieldTypeInfoMap = 
SolrUtil.getFieldTypeInfoMap(fieldType, schemaFieldsMap);
+      String className = (String) fieldTypeInfoMap.get("class");
+      if (className.equalsIgnoreCase(TrieDoubleField.class.getSimpleName())) {
+        return "" + Double.parseDouble(str);
+      } else if 
(className.equalsIgnoreCase(TrieFloatField.class.getSimpleName())) {
+        return "" + Float.parseFloat(str);
+      } else if 
(className.equalsIgnoreCase(TrieLongField.class.getSimpleName())) {
+        return "" + Long.parseLong(str);
+      } else {
+        return "" + Integer.parseInt(str);
+      }
+    } catch (Exception e) {
+      return null;
+    }
+  }
   
-  public static HashMap<String, Object> getFieldTypeInfoMap(String 
fieldType,SolrDaoBase solrDaoBase) {
-    String fieldTypeMetaData = solrDaoBase.schemaFieldTypeMap.get(fieldType);
+  public static HashMap<String, Object> getFieldTypeInfoMap(String fieldType, 
Map<String, String> schemaFieldsTypeMap) {
+    String fieldTypeMetaData = schemaFieldsTypeMap.get(fieldType);
     HashMap<String, Object> fieldTypeMap = 
JSONUtil.jsonToMapObject(fieldTypeMetaData);
     if (fieldTypeMap == null) {
-      return new HashMap<String, Object>();
+      return new HashMap<>();
     }
     String classname = (String) fieldTypeMap.get("class");
     if (!StringUtils.isBlank(classname)) {
@@ -310,8 +239,7 @@ public class SolrUtil {
   }
   
   
//=============================================================================================================
-  
-  //Solr Facet Methods
+
   public static void setFacetField(SolrQuery solrQuery, String facetField) {
     solrQuery.setFacet(true);
     setRowCount(solrQuery, 0);
@@ -319,13 +247,6 @@ public class SolrUtil {
     setFacetLimit(solrQuery, -1);
   }
 
-  public static void setJSONFacet(SolrQuery solrQuery, String jsonQuery) {
-    solrQuery.setFacet(true);
-    setRowCount(solrQuery, 0);
-    solrQuery.set(LogSearchConstants.FACET_JSON_FIELD, jsonQuery);
-    setFacetLimit(solrQuery, -1);
-  }
-
   public static void setFacetSort(SolrQuery solrQuery, String sortType) {
     solrQuery.setFacet(true);
     solrQuery.setFacetSort(sortType);
@@ -339,50 +260,10 @@ public class SolrUtil {
     setFacetLimit(solrQuery, -1);
   }
 
-  public static void setFacetDate(SolrQuery solrQuery, String facetField, 
String from, String to, String unit) {
-    solrQuery.setFacet(true);
-    setRowCount(solrQuery, 0);
-    solrQuery.set(LogSearchConstants.FACET_DATE, facetField);
-    solrQuery.set(LogSearchConstants.FACET_DATE_START, from);
-    solrQuery.set(LogSearchConstants.FACET_DATE_END, to);
-    solrQuery.set(LogSearchConstants.FACET_DATE_GAP, unit);
-    solrQuery.set(LogSearchConstants.FACET_MINCOUNT, 0);
-    setFacetLimit(solrQuery, -1);
-  }
-
-  public static void setFacetRange(SolrQuery solrQuery, String facetField, 
String from, String to, String unit) {
-    solrQuery.setFacet(true);
-    setRowCount(solrQuery, 0);
-    solrQuery.set(LogSearchConstants.FACET_RANGE, facetField);
-    solrQuery.set(LogSearchConstants.FACET_RANGE_START, from);
-    solrQuery.set(LogSearchConstants.FACET_RANGE_END, to);
-    solrQuery.set(LogSearchConstants.FACET_RANGE_GAP, unit);
-    solrQuery.set(LogSearchConstants.FACET_MINCOUNT, 0);
-    setFacetLimit(solrQuery, -1);
-  }
-
   public static void setFacetLimit(SolrQuery solrQuery, int limit) {
     solrQuery.set("facet.limit", limit);
   }
 
-  //Solr Group Mehtods
-  public static void setGroupField(SolrQuery solrQuery, String groupField, int 
rows) {
-    solrQuery.set(LogSearchConstants.FACET_GROUP, true);
-    solrQuery.set(LogSearchConstants.FACET_GROUP_FIELD, groupField);
-    solrQuery.set(LogSearchConstants.FACET_GROUP_MAIN, true);
-    setRowCount(solrQuery, rows);
-  }
-
-  //Main Query
-  public static void setMainQuery(SolrQuery solrQuery, String query) {
-    String defalultQuery = "*:*";
-    if (StringUtils.isBlank(query)){
-      solrQuery.setQuery(defalultQuery);
-    }else{
-      solrQuery.setQuery(query);
-    }
-  }
-
   public static void setStart(SolrQuery solrQuery, int start) {
     int defaultStart = 0;
     if (start > defaultStart) {
@@ -392,7 +273,6 @@ public class SolrUtil {
     }
   }
 
-  //Set Number of Rows
   public static void setRowCount(SolrQuery solrQuery, int rows) {
     if (rows > 0) {
       solrQuery.setRows(rows);
@@ -401,18 +281,28 @@ public class SolrUtil {
       solrQuery.remove(LogSearchConstants.SORT);
     }
   }
-
-  //Solr Facet Methods
-  public static void setFacetFieldWithMincount(SolrQuery solrQuery, String 
facetField, int minCount) {
-    solrQuery.setFacet(true);
-    setRowCount(solrQuery, 0);
-    solrQuery.set(LogSearchConstants.FACET_FIELD, facetField);
-    solrQuery.set(LogSearchConstants.FACET_MINCOUNT, minCount);
-    setFacetLimit(solrQuery, -1);
-  }
   
   public static void setFl(SolrQuery solrQuery,String field){
     solrQuery.set(LogSearchConstants.FL, field);
   }
+
+  private static boolean checkTokenizer(String fieldType, Class 
tokenizerFactoryClass, Map<String, String> schemaFieldsMap) {
+    HashMap<String, Object> fieldTypeMap = 
SolrUtil.getFieldTypeInfoMap(fieldType ,schemaFieldsMap);
+    HashMap<String, Object> analyzer = (HashMap<String, Object>) 
fieldTypeMap.get("analyzer");
+    if (analyzer != null) {
+      HashMap<String, Object> tokenizerMap = (HashMap<String, Object>) 
analyzer.get("tokenizer");
+      if (tokenizerMap != null) {
+        String tokenizerClass = (String) tokenizerMap.get("class");
+        if (!StringUtils.isEmpty(tokenizerClass)) {
+          tokenizerClass =tokenizerClass.replace("solr.", "");
+          if (tokenizerClass.equalsIgnoreCase(tokenizerFactoryClass
+            .getSimpleName())) {
+            return true;
+          }
+        }
+      }
+    }
+    return false;
+  }
   
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/filters/LogsearchKRBAuthenticationFilter.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/filters/LogsearchKRBAuthenticationFilter.java
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/filters/LogsearchKRBAuthenticationFilter.java
index 8cd435b..29fd5b2 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/filters/LogsearchKRBAuthenticationFilter.java
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/filters/LogsearchKRBAuthenticationFilter.java
@@ -61,7 +61,6 @@ import 
org.apache.hadoop.security.authentication.server.KerberosAuthenticationHa
 import 
org.apache.hadoop.security.authentication.server.PseudoAuthenticationHandler;
 import org.apache.hadoop.security.authentication.util.KerberosName;
 import 
org.springframework.security.web.authentication.WebAuthenticationDetails;
-import org.springframework.stereotype.Component;
 
 public class LogsearchKRBAuthenticationFilter extends LogsearchKrbFilter {
   private static final Logger logger = 
LoggerFactory.getLogger(LogsearchKRBAuthenticationFilter.class);

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchAuthenticationProvider.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchAuthenticationProvider.java
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchAuthenticationProvider.java
index 05104b4..d37e545 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchAuthenticationProvider.java
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchAuthenticationProvider.java
@@ -27,11 +27,11 @@ import 
org.springframework.security.authentication.UsernamePasswordAuthenticatio
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.AuthenticationException;
 import 
org.springframework.security.web.authentication.WebAuthenticationDetails;
-import org.springframework.stereotype.Component;
 
 import javax.inject.Inject;
+import javax.inject.Named;
 
-@Component
+@Named
 public class LogsearchAuthenticationProvider extends
   LogsearchAbstractAuthenticationProvider {
   private static final Logger logger = Logger

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchExternalServerAuthenticationProvider.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchExternalServerAuthenticationProvider.java
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchExternalServerAuthenticationProvider.java
index a89b5dd..7e146ac 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchExternalServerAuthenticationProvider.java
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchExternalServerAuthenticationProvider.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import javax.inject.Inject;
+import javax.inject.Named;
 
 import org.apache.ambari.logsearch.common.ExternalServerClient;
 import org.apache.ambari.logsearch.common.PropertiesHelper;
@@ -34,14 +35,13 @@ import 
org.springframework.security.authentication.BadCredentialsException;
 import 
org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.AuthenticationException;
-import org.springframework.stereotype.Component;
 
 /**
  * 
  * Authentication provider to authenticate user from external-server using REST
  * call
  */
-@Component
+@Named
 public class LogsearchExternalServerAuthenticationProvider extends
     LogsearchAbstractAuthenticationProvider {
 
@@ -152,10 +152,9 @@ public class LogsearchExternalServerAuthenticationProvider 
extends
    */
   @SuppressWarnings("static-access")
   private boolean isAllowedRole(String responseJson) {
-    String allowedRoleList[] = PropertiesHelper
-        .getPropertyStringList(ALLOWED_ROLE_PROP);
+    String allowedRoleList[] = 
PropertiesHelper.getPropertyStringList(ALLOWED_ROLE_PROP);
 
-    List<String> values = new ArrayList<String>();
+    List<String> values = new ArrayList<>();
     JSONUtil.getValuesOfKey(responseJson,
         PRIVILEGE_INFO.PERMISSION_NAME.toString(), values);
     if (values.isEmpty())

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchFileAuthenticationProvider.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchFileAuthenticationProvider.java
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchFileAuthenticationProvider.java
index dc70b82..51b3547 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchFileAuthenticationProvider.java
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchFileAuthenticationProvider.java
@@ -32,11 +32,11 @@ import 
org.springframework.security.core.AuthenticationException;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
-import org.springframework.stereotype.Component;
 
 import javax.inject.Inject;
+import javax.inject.Named;
 
-@Component
+@Named
 public class LogsearchFileAuthenticationProvider extends 
LogsearchAbstractAuthenticationProvider {
 
   private static Logger logger = 
Logger.getLogger(LogsearchFileAuthenticationProvider.class);

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchLdapAuthenticationProvider.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchLdapAuthenticationProvider.java
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchLdapAuthenticationProvider.java
index 52dd66e..ed4d7ef 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchLdapAuthenticationProvider.java
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchLdapAuthenticationProvider.java
@@ -30,12 +30,12 @@ import 
org.springframework.security.core.AuthenticationException;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import 
org.springframework.security.ldap.authentication.LdapAuthenticationProvider;
 import org.springframework.security.ldap.search.FilterBasedLdapUserSearch;
-import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
 import javax.inject.Inject;
+import javax.inject.Named;
 
-@Component
+@Named
 public class LogsearchLdapAuthenticationProvider extends
   LogsearchAbstractAuthenticationProvider {
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchSimpleAuthenticationProvider.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchSimpleAuthenticationProvider.java
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchSimpleAuthenticationProvider.java
index 17d099b..400361b 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchSimpleAuthenticationProvider.java
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchSimpleAuthenticationProvider.java
@@ -27,11 +27,11 @@ import 
org.springframework.security.authentication.BadCredentialsException;
 import 
org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.AuthenticationException;
-import org.springframework.stereotype.Component;
 
 import javax.inject.Inject;
+import javax.inject.Named;
 
-@Component
+@Named
 public class LogsearchSimpleAuthenticationProvider extends 
LogsearchAbstractAuthenticationProvider {
 
   private static Logger logger = 
Logger.getLogger(LogsearchSimpleAuthenticationProvider.class);

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/resources/default.properties
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/resources/default.properties
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/resources/default.properties
index 9a44761..c98a482 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/resources/default.properties
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/resources/default.properties
@@ -24,4 +24,3 @@ 
logsearch.logfeeder.include.default.level=FATAL,ERROR,WARN,INFO,DEBUG,TRACE
 #login config
 logsearch.login.credentials.file=user_pass.json
 logsearch.login.ldap.config=logsearch-admin-site.xml
-logsearch.solr.warming.cron=0 0/10 * * * ?

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/resources/templates/audit_log_txt.ftl
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/resources/templates/audit_log_txt.ftl
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/resources/templates/audit_log_txt.ftl
new file mode 100644
index 0000000..587e366
--- /dev/null
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/resources/templates/audit_log_txt.ftl
@@ -0,0 +1,42 @@
+<#--
+  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.
+-->
+--------------------------------SUMMARY-----------------------------------
+Users  = ${usersSummary}
+Resources  = ${resourcesSummary}
+
+
+
+
+Users                                             Components/Access
+--------------------------------------------------------------------------
+<#if users??>
+  <#list users as user>
+${user.data}
+  </#list>
+</#if>
+
+
+
+
+
+Resources                                         Components/Access
+--------------------------------------------------------------------------
+<#if resources??>
+  <#list resources as resource>
+${resource.data}
+  </#list>
+</#if>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/resources/templates/service_log_txt.ftl
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/resources/templates/service_log_txt.ftl
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/resources/templates/service_log_txt.ftl
new file mode 100644
index 0000000..8a5e19d
--- /dev/null
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/resources/templates/service_log_txt.ftl
@@ -0,0 +1,36 @@
+<#--
+  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.
+-->
+**********************Summary**********************
+Number of Logs : ${numberOfLogs}
+From           : ${from}
+To             : ${to}
+Host           : ${hosts}
+Component      : ${components}
+Levels         : ${levels}
+Format         : ${format}
+
+Included String: [${iString}]
+
+Excluded String: [${eString}]
+
+************************Logs***********************
+2016-09-26 11:49:19,723 WARN MainThread lock.py:60 - Releasing the lock.
+<#if logs??>
+  <#list logs as log>
+${log.data}
+  </#list>
+</#if>

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/collection_bases/VLogListBase.js
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/collection_bases/VLogListBase.js
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/collection_bases/VLogListBase.js
index 08a8271..5fc4bac 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/collection_bases/VLogListBase.js
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/collection_bases/VLogListBase.js
@@ -89,7 +89,7 @@ define(['require',
 
       return this.constructor.nonCrudOperation.call(this, url, 'GET', options);
                },
-               getTruncatedLogs : function(token, options){
+    getTruncatedLogs : function(token, options){
                        var url = Globals.baseURL  + 'service/logs/truncated';
                        
                        options = _.extend({

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/utils/ViewUtils.js
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/utils/ViewUtils.js
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/utils/ViewUtils.js
index 4c23290..6d587cd 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/utils/ViewUtils.js
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/utils/ViewUtils.js
@@ -57,7 +57,7 @@ define(['require',
     if (params.bundle_id && !params.start_time && !params.end_time) {
       var collection = new VNameValueList();
 
-      collection.url = Globals.baseURL + "service/logs/solr/boundarydates";
+      collection.url = Globals.baseURL + "service/logs/boundarydates";
       collection.modelAttrName = "vNameValues";
       _.extend(collection.queryParams, {
         "bundle_id": params.bundle_id

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/audit/AuditAggregatedView.js
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/audit/AuditAggregatedView.js
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/audit/AuditAggregatedView.js
index ef6dce5..0822051 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/audit/AuditAggregatedView.js
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/audit/AuditAggregatedView.js
@@ -98,7 +98,7 @@ define(['require',
                     pageSize: 9999
                 }
                        });
-                       this.topUsers.url = Globals.baseURL + 
"audit/logs/users";
+                       this.topUsers.url = Globals.baseURL + 
"audit/logs/resources/10";
                        this.topUsers.modelAttrName = "graphData";
                        this.topResources = new VNameValueList([],{
                                state: {
@@ -106,7 +106,7 @@ define(['require',
                     pageSize: 9999
                 }
                        });
-                       this.topResources.url = Globals.baseURL + 
"audit/logs/resources";
+                       this.topResources.url = Globals.baseURL + 
"audit/logs/resources/10";
                        this.topResources.modelAttrName = "graphData";          
                        //initialize colors
                        this.colors = (new 
d3.scale.category20c().range().slice().reverse()).concat(new 
d3.scale.category20b().range().slice().reverse());
@@ -408,7 +408,7 @@ define(['require',
                        obj.utcOffset = moment().utcOffset();
                        obj.startIndex =  this.topUsers.state.currentPage * 
this.topUsers.state.pageSize;
                        var params = 
$.param(_.extend({},this.topUsers.queryParams,obj));
-                       var url = "api/v1/audit/logs/users/export?"+ params;
+                       var url = "api/v1/audit/logs/export?"+ params;
                        window.open(url);
                        this.onDialogClosed();
                }

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/dashboard/LogLevelBoxView.js
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/dashboard/LogLevelBoxView.js
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/dashboard/LogLevelBoxView.js
index 0e7f1b8..eb73fb8 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/dashboard/LogLevelBoxView.js
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/dashboard/LogLevelBoxView.js
@@ -62,7 +62,7 @@ define(['require',
                initialize: function(options) {
                        _.extend(this, 
_.pick(options,'vent','globalVent','params'));
                        this.logLevelList = new VLogLevelList();
-                       this.logLevelList.url = Globals.baseURL + 
"service/logs/levels/counts/namevalues";
+                       this.logLevelList.url = Globals.baseURL + 
"service/logs/levels/counts";
                        this.logLevelList.modelAttrName = "vNameValues";
                        this.bindEvents();
                },

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/filter/CreateLogfeederFilterView.js
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/filter/CreateLogfeederFilterView.js
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/filter/CreateLogfeederFilterView.js
index 2c7f0aa..9bdf0fa 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/filter/CreateLogfeederFilterView.js
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/filter/CreateLogfeederFilterView.js
@@ -211,10 +211,10 @@ define(['require',
             onEditHost : function(e){
                var $el = $(e.currentTarget);
                $el.hide();
-               if($el.data("type") == "host_name"){
-                       this.showHostSelect2($el.data("component_name"));
+               if($el.data("type") == "host"){
+                       this.showHostSelect2($el.data("component"));
                 }else{
-                       this.showExpiry($el.data("component_name"));
+                       this.showExpiry($el.data("component"));
                 }
             },
             hideHostSelect2 : function(forComponent){

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/tabs/HierarchyTabLayoutView.js
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/tabs/HierarchyTabLayoutView.js
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/tabs/HierarchyTabLayoutView.js
index 43ee5db..298f401 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/tabs/HierarchyTabLayoutView.js
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/tabs/HierarchyTabLayoutView.js
@@ -300,6 +300,7 @@ define(['require',
             eventName: Globals.eventName.serviceLogsExcludeColumns,
             myFormatData: function (query, searchCollection) {
               var obj = ViewUtils.replaceColumnNamesWithKeys(searchCollection, 
Globals.invertedServiceLogMappings, false);
+              console.log(obj)
               return {
                 excludeQuery: JSON.stringify(obj),
                 query: query

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/troubleshoot/TroubleShootLayoutView.js
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/troubleshoot/TroubleShootLayoutView.js
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/troubleshoot/TroubleShootLayoutView.js
index a6445c6..b19f3ce 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/troubleshoot/TroubleShootLayoutView.js
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/troubleshoot/TroubleShootLayoutView.js
@@ -82,7 +82,7 @@ define(['backbone',
 
                     }
                 });
-                this.serviceLogsCollection.url = Globals.baseURL + 
"service/logs/anygraph";
+                this.serviceLogsCollection.url = Globals.baseURL + 
"service/logs/count/anygraph";
                 this.serviceLogsCollection.modelAttrName = "graphData";
                 
                this.topUsers = new VNameValueList([],{
@@ -91,7 +91,7 @@ define(['backbone',
                         pageSize: 9999
                     }
                        });
-                       this.topUsers.url = Globals.baseURL + 
"audit/logs/users";
+                       this.topUsers.url = Globals.baseURL + 
"audit/logs/resources/10";
                        this.topUsers.modelAttrName = "graphData";
                        
                        this.serviceLoadCollection = new VLogList([], {
@@ -133,7 +133,7 @@ define(['backbone',
             },
             onRender : function(){
                var that = this;
-               this.fetchTopUsers(this.params);
+               this.fetchTopUsers(_.extend({field : "reqUser"},this.params));
                this.serviceLogsCollection.getServicesInfo({
                        success : function(resp){
                                Globals.servicesInfo = resp;

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/templates/tabs/LogFileView_tmpl.html
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/templates/tabs/LogFileView_tmpl.html
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/templates/tabs/LogFileView_tmpl.html
index f86190c..0f0f143 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/templates/tabs/LogFileView_tmpl.html
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/templates/tabs/LogFileView_tmpl.html
@@ -15,38 +15,6 @@
   limitations under the License.
 -->
 <div class="row">
-       <!--  div class="col-md-3">
-               <div class="row">
-                       <div class="col-md-12">
-                               <div class="box">
-                                       <div class="box-header">
-                                               <div class="box-name">
-                                                       <span>Search</span>
-                                               </div>
-                                               <div class="box-icons">
-                                                       <a 
class="collapse-link"> <i class="fa fa-chevron-up"></i>
-                                                       </a> <a class=""> <i 
class="fa fa-gear"></i>
-                                                       </a> <a 
class="close-link"> <i class="fa fa-close"></i>
-                                                       </a>
-                                               </div>
-                                               <div class="no-move"></div>
-                                       </div>
-                                       <div class="box-content">
-                                               <div class="input-group">
-                                                       <input 
data-id="hierarchySearch" type="text" class="form-control"
-                                                               
placeholder="Search" value="*:*"> <span
-                                                               
class="input-group-btn">
-                                                               <button 
data-id="hierarchySearchBtn"
-                                                                       
class="btn btn-default btn-search" type="button">
-                                                                       <i 
class="fa fa-search"></i>
-                                                               </button>
-                                                       </span>
-                                               </div>
-                                       </div>
-                               </div>
-                       </div>
-               </div>
-       </div-->
        <div class="col-md-12">
                <div class="row topLevelFilter">
             <div id="r_LogLevel" class="col-md-5"></div>
@@ -54,28 +22,17 @@
             <div id="r_LogSnapShot" class="col-md-1 col-sm-2"></div>
             <div class="row ">
                                <div class="col-md-12 fixedSearchBox hiddeBox">
-                                       <!-- div id="r_VSSearch"></div-->
                                        <div class="col-md-6" 
data-id="r_vsSearchIncCol"></div>
                                        <div class="col-md-6" 
data-id="r_vsSearchExCol"></div>  
                                </div>
                        </div>
         </div>
         <div class="setHeight_LogFile"></div>
-<!--           <div class="row">
-                       <div class="col-md-12">
-                               <div id="r_LogLevel"></div>
-                       </div>
-               </div> -->
                <div class="row">
                        <div class="col-md-12">
                                        <div id="r_Histogram"></div>
                        </div>
                </div>
-       <!--    <div class="row row-margin-bottom">
-                       <div class="col-md-12">
-                               <div id="r_VSSearch"></div>
-                       </div>
-               </div> -->
                <div class="row">
                        <div class="col-md-12">
                                <div class="box">
@@ -97,17 +54,13 @@
                                                                <i class="fa 
fa-sign-out"></i>
                                                        </a>
                                                        <a 
class="collapse-link"> <i class="fa fa-chevron-up"></i>
-                                                       </a> 
-                                                       <!-- <a 
class="expand-link"> <i class="fa fa-expand"></i></a>
-                                                       <a class="close-link"> 
<i class="fa fa-close"></i></a> -->
-                                                       
+                                                       </a>
                                                </div>
                                                <div class="no-move"></div>
                                        </div>
                                        <div class="box-content">
                                                <div class="col-md-4 
advance-find">
                                                        <div 
class="input-group">
-                                                               <!-- span 
class="input-group-addon">1 of 40</span -->
                                                                <span 
class="input-group-btn">
                                                        <button data-id="lock" 
title="Lock position" class="btn btn-default btn-search no-margin" 
type="button"><i class="fa fa-unlock"></i>
                                                        </button></span> 
@@ -135,7 +88,6 @@
                                                                        
</button>
                                                                        <button 
data-id="cancelFind" class="btn btn-default btn-search no-margin" 
style="display:none;">cancel</button>
                                                                        <button 
style="display:none;" class="no-margin btn-notification pageNotation" 
type="button"> </button>
-                                                                       <!-- 
<span class="pageNotation"></span> -->
                                                                </span>
                                                        </div>
                                                </div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-logsearch/ambari-logsearch-portal/src/test/java/org/apache/ambari/logsearch/query/converter/BaseServiceLogRequestQueryConverterTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/test/java/org/apache/ambari/logsearch/query/converter/BaseServiceLogRequestQueryConverterTest.java
 
b/ambari-logsearch/ambari-logsearch-portal/src/test/java/org/apache/ambari/logsearch/query/converter/BaseServiceLogRequestQueryConverterTest.java
new file mode 100644
index 0000000..91fe5ca
--- /dev/null
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/test/java/org/apache/ambari/logsearch/query/converter/BaseServiceLogRequestQueryConverterTest.java
@@ -0,0 +1,78 @@
+/*
+ * 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.logsearch.query.converter;
+
+import org.apache.ambari.logsearch.model.request.impl.ServiceLogRequest;
+import org.apache.solr.client.solrj.SolrQuery;
+import org.easymock.EasyMockRunner;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.data.solr.core.DefaultQueryParser;
+import org.springframework.data.solr.core.query.SimpleQuery;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@RunWith(EasyMockRunner.class)
+public class BaseServiceLogRequestQueryConverterTest {
+
+  private BaseServiceLogRequestQueryConverter underTest;
+
+  private Map<String, String> fieldMap = new HashMap<>();
+
+  private Map<String, String> fieldTypeMap = new HashMap<>();
+
+  @Before
+  public void setUp() {
+    underTest = new BaseServiceLogRequestQueryConverter();
+    fieldMap.put("case_id", "key_lower_case");
+    fieldMap.put("cluster", "key_lower_case");
+    fieldMap.put("bundle_id", "key_lower_case");
+    fieldTypeMap.put("key_lower_case", 
"{\"name\":\"key_lower_case\",\"class\":\"solr.TextField\",\"sortMissingLast\":true,"
 +
+      
"\"omitNorms\":true,\"analyzer\":{\"tokenizer\":{\"class\":\"solr.KeywordTokenizerFactory\"},"
 +
+      "\"filters\":[{\"class\":\"solr.LowerCaseFilterFactory\"}]}}");
+  }
+
+  @Test
+  public void testConvertRequest() {
+    // GIVEN
+    ServiceLogRequest logRequest = new ServiceLogRequest();
+    logRequest.setLevel("FATAL,ERROR,WARN,UNKNOWN");
+    logRequest.setStartIndex("0");
+    logRequest.setPage("0");
+    //logRequest.setPageSize("25");
+    logRequest.setFrom("2016-09-13T22:00:01.000Z");
+    logRequest.setTo("2016-09-14T22:00:01.000Z");
+    logRequest.setMustBe("logsearch_app,secure_log");
+    logRequest.setMustNot("hst_agent,system_message");
+    logRequest.setFileName("myfile");
+    logRequest.setComponentName("component");
+    logRequest.setHostName("logsearch.com}");
+
+    // WHEN
+    SimpleQuery query = underTest.convert(logRequest);
+    DefaultQueryParser defaultQueryParser = new DefaultQueryParser();
+    SolrQuery solrQuery = defaultQueryParser.doConstructSolrQuery(query);
+    // THEN
+    // TODO extends this test case later
+  }
+
+
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea644cc4/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LoggingRequestHelperImpl.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LoggingRequestHelperImpl.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LoggingRequestHelperImpl.java
index 061c607..eab0c04 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LoggingRequestHelperImpl.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LoggingRequestHelperImpl.java
@@ -64,7 +64,7 @@ public class LoggingRequestHelperImpl implements 
LoggingRequestHelper {
 
   private static final String LOGSEARCH_QUERY_PATH = "/api/v1/service/logs";
 
-  private static final String LOGSEARCH_GET_LOG_LEVELS_PATH = 
"/api/v1/service/logs/levels/counts/namevalues";
+  private static final String LOGSEARCH_GET_LOG_LEVELS_PATH = 
"/api/v1/service/logs/levels/counts";
 
   private static final String LOGSEARCH_ADMIN_CREDENTIAL_NAME = 
"logsearch.admin.credential";
 

Reply via email to