You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by je...@apache.org on 2016/01/21 23:55:23 UTC
[42/96] [abbrv] [partial] incubator-geode git commit: GEODE-12:
rename pulse to gemfire-pulse and make build pass
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/446f451a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/DataBrowser.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/DataBrowser.java b/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/DataBrowser.java
new file mode 100644
index 0000000..ff715f4
--- /dev/null
+++ b/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/DataBrowser.java
@@ -0,0 +1,274 @@
+/*
+ * =========================================================================
+ * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ * ========================================================================
+ */
+
+package com.vmware.gemfire.tools.pulse.internal.data;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.SimpleDateFormat;
+import java.util.Iterator;
+import java.util.ResourceBundle;
+import java.util.Scanner;
+
+import com.vmware.gemfire.tools.pulse.internal.json.JSONArray;
+import com.vmware.gemfire.tools.pulse.internal.json.JSONException;
+import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
+import com.vmware.gemfire.tools.pulse.internal.log.PulseLogWriter;
+import com.vmware.gemfire.tools.pulse.internal.util.StringUtils;
+
+/**
+ * Class DataBrowser This class contains Data browser functionalities for
+ * managing queries and histories.
+ *
+ * @author Sachin K
+ * @since version 7.5.Beta 2013-03-25
+ */
+public class DataBrowser {
+
+ private final PulseLogWriter LOGGER = PulseLogWriter.getLogger();
+ private final ResourceBundle resourceBundle = Repository.get()
+ .getResourceBundle();
+
+ private final String queryHistoryFile = PulseConstants.PULSE_QUERY_HISTORY_FILE_LOCATION
+ + System.getProperty("file.separator")
+ + PulseConstants.PULSE_QUERY_HISTORY_FILE_NAME;
+
+ private SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
+ PulseConstants.PULSE_QUERY_HISTORY_DATE_PATTERN);
+
+ /**
+ * addQueryInHistory method adds user's query into query history file
+ *
+ * @param userId
+ * Logged in User's Id
+ * @param queryText
+ * Query text to execute
+ */
+ public boolean addQueryInHistory(String queryText, String userId) {
+
+ boolean operationStatus = false;
+ if (StringUtils.isNotNullNotEmptyNotWhiteSpace(queryText)
+ && StringUtils.isNotNullNotEmptyNotWhiteSpace(userId)) {
+
+ // Fetch all queries from query log file
+ JSONObject queries = fetchAllQueriesFromFile();
+
+ // Get user's query history list
+ JSONObject userQueries = null;
+ try {
+ userQueries = queries.getJSONObject(userId);
+ } catch (JSONException e) {
+ userQueries = new JSONObject();
+ }
+
+ // Add query in user's query history list
+ try {
+ userQueries.put(Long.toString(System.currentTimeMillis()), queryText);
+ queries.put(userId, userQueries);
+ } catch (JSONException e) {
+ if (LOGGER.fineEnabled()) {
+ LOGGER.fine("JSONException Occured while adding user's query : " + e.getMessage());
+ }
+ }
+
+ // Store queries in file back
+ operationStatus = storeQueriesInFile(queries);
+
+ }
+
+ return operationStatus;
+ }
+
+ /**
+ * deleteQueryById method deletes query from query history file
+ *
+ * @param userId
+ * Logged in user's Unique Id
+ * @param queryId
+ * Unique Id of Query to be deleted
+ * @return boolean
+ */
+ public boolean deleteQueryById(String userId, String queryId) {
+
+ boolean operationStatus = false;
+ if (StringUtils.isNotNullNotEmptyNotWhiteSpace(queryId)
+ && StringUtils.isNotNullNotEmptyNotWhiteSpace(userId)) {
+
+ // Fetch all queries from query log file
+ JSONObject queries = fetchAllQueriesFromFile();
+
+ // Get user's query history list
+ JSONObject userQueries = null;
+ try {
+ userQueries = queries.getJSONObject(userId);
+ } catch (JSONException e) {
+ userQueries = new JSONObject();
+ }
+
+ // Remove user's query
+ try {
+ userQueries.remove(queryId);
+ queries.put(userId, userQueries);
+ } catch (JSONException e) {
+ if (LOGGER.fineEnabled()) {
+ LOGGER.fine("JSONException Occured while deleting user's query : " + e.getMessage());
+ }
+ }
+
+ // Store queries in file back
+ operationStatus = storeQueriesInFile(queries);
+
+ }
+
+ return operationStatus;
+ }
+
+ /**
+ * getQueryHistoryByUserId method reads and lists out the queries from history
+ * file
+ *
+ * @param userId
+ * Logged in User's Id
+ * @throws JSONException
+ */
+ public JSONArray getQueryHistoryByUserId(String userId) {
+
+ JSONArray queryList = new JSONArray();
+
+ if (StringUtils.isNotNullNotEmptyNotWhiteSpace(userId)) {
+
+ // Fetch all queries from query log file
+ JSONObject queries = fetchAllQueriesFromFile();
+
+ // Get user's query history list
+ JSONObject userQueries = null;
+ try {
+ userQueries = queries.getJSONObject(userId);
+ } catch (JSONException e) {
+ userQueries = new JSONObject();
+ }
+
+ try {
+ Iterator<?> it = userQueries.keys();
+ while (it.hasNext()) {
+ String key = (String) it.next();
+ JSONObject queryItem = new JSONObject();
+ queryItem.put("queryId", key);
+ queryItem.put("queryText", userQueries.get(key).toString());
+ queryItem.put("queryDateTime",
+ simpleDateFormat.format(Long.valueOf(key)));
+ queryList.put(queryItem);
+ }
+ } catch (JSONException e) {
+ if (LOGGER.fineEnabled()) {
+ LOGGER.fine("JSONException Occured: " + e.getMessage());
+ }
+ }
+ }
+
+ return queryList;
+ }
+
+ /**
+ * generateQueryKey method fetches queries from query history file
+ *
+ * @return Properties A collection queries in form of key and values
+ */
+ private JSONObject fetchAllQueriesFromFile() {
+ InputStream inputStream = null;
+ JSONObject queriesJSON = new JSONObject();
+
+ try {
+ inputStream = new FileInputStream(queryHistoryFile);
+ String inputStreamString = new Scanner(inputStream, "UTF-8")
+ .useDelimiter("\\A").next();
+ queriesJSON = new JSONObject(inputStreamString);
+ } catch (FileNotFoundException e) {
+ if (LOGGER.fineEnabled()) {
+ LOGGER.fine(resourceBundle
+ .getString("LOG_MSG_DATA_BROWSER_QUERY_HISTORY_FILE_NOT_FOUND")
+ + " : " + e.getMessage());
+ }
+ } catch (Exception e) {
+ if (LOGGER.infoEnabled()) {
+ LOGGER.info(e.getMessage());
+ }
+ } finally {
+ // Close input stream
+ if (inputStream != null) {
+ try {
+ inputStream.close();
+ } catch (IOException e) {
+ if (LOGGER.infoEnabled()) {
+ LOGGER.info(e.getMessage());
+ }
+ }
+ }
+ }
+
+ return queriesJSON;
+ }
+
+ /**
+ * generateQueryKey method stores queries in query history file.
+ *
+ * @return Boolean true is operation is successful, false otherwise
+ * @param properties
+ * a collection queries in form of key and values
+ */
+ private boolean storeQueriesInFile(JSONObject queries) {
+ boolean operationStatus = false;
+ FileOutputStream fileOut = null;
+
+ File file = new File(queryHistoryFile);
+ try {
+ fileOut = new FileOutputStream(file);
+
+ // if file does not exists, then create it
+ if (!file.exists()) {
+ file.createNewFile();
+ }
+
+ // get the content in bytes
+ byte[] contentInBytes = queries.toString().getBytes();
+
+ fileOut.write(contentInBytes);
+ fileOut.flush();
+
+ operationStatus = true;
+ } catch (FileNotFoundException e) {
+
+ if (LOGGER.fineEnabled()) {
+ LOGGER.fine(resourceBundle
+ .getString("LOG_MSG_DATA_BROWSER_QUERY_HISTORY_FILE_NOT_FOUND")
+ + " : " + e.getMessage());
+ }
+ } catch (IOException e) {
+ if (LOGGER.infoEnabled()) {
+ LOGGER.info(e.getMessage());
+ }
+ } finally {
+ if (fileOut != null) {
+ try {
+ fileOut.close();
+ } catch (IOException e) {
+ if (LOGGER.infoEnabled()) {
+ LOGGER.info(e.getMessage());
+ }
+ }
+ }
+ }
+ return operationStatus;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/446f451a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/IClusterUpdater.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/IClusterUpdater.java b/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/IClusterUpdater.java
new file mode 100644
index 0000000..bc5e062
--- /dev/null
+++ b/gemfire-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/IClusterUpdater.java
@@ -0,0 +1,27 @@
+/*
+ * =========================================================================
+ * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ * ========================================================================
+ */
+
+package com.vmware.gemfire.tools.pulse.internal.data;
+
+import com.vmware.gemfire.tools.pulse.internal.json.JSONException;
+import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
+
+/**
+ * Interface having updateData() function which is getting Override by both
+ * MockDataUpdater and JMXDataUpdater
+ *
+ * @author Anand Hariharan
+ * @since version 7.0.Beta 2012-09-23
+ *
+ */
+public interface IClusterUpdater {
+ boolean updateData();
+
+ JSONObject executeQuery(String queryText, String members, int limit) throws JSONException;
+}