private void storeTweet(BufferedReader br, HTTPResponseHandler hrh) {
			try {
				/*
				 * If the post request contains body, read it in, Otherwise,
				 * return a 400 Bad Request
				 */
				if (br.ready()) {
					char[] bodyChars = new char[1000];
					br.read(bodyChars);
					StringBuffer sb = new StringBuffer();
					sb.append(bodyChars);
					String postBody = sb.toString().trim();

					/*
					 * Convert the post request to JSONObject, Then get the
					 * hashtags and tweet
					 */
					JSONParser jp = new JSONParser();
					JSONObject requestBody = (JSONObject) jp.parse(postBody);

					if (requestBody.containsKey("tweet")
							&& requestBody.containsKey("hashtags")) {

						String tweet = requestBody.get("tweet").toString();

						JSONArray hashtags = (JSONArray) requestBody
								.get("hashtags");

						for (int i = 0; i < hashtags.size(); i++) {
							/*
							 * If the data server contains no this hashtag,
							 * create a new one in the data hashmap
							 */
							String storeTerm = hashtags.get(i).toString();
							if (!ds_tweetsMap.containsKey(hashtags.get(i)
									.toString())) {
								sendNewdataToSecondary(postBody, hrh);
								logger.info("Create a new hashtag in data server!");
								TweetsData tweetsData = new TweetsData();
								tweetsData.setVersionNum(0);
								tweetsData.addTweets(tweet);
								ds_tweetsMap.setTweetsHashMap(storeTerm,
										tweetsData);
								ds_tweetsMap.increaseDataServerVersion();
								// Update LogMap
								ds_tweetsMap.addLogData(
										ds_tweetsMap.getDataServerVersion(),
										tweet, hashtags);
								logger.info("Successfully save the tweet into data server! My current dataVersion is: "
										+ ds_tweetsMap.getDataServerVersion());
							}
							/*
							 * If the data server contains this hashtag and does
							 * not have this tweet about this hashtag, save the
							 * tweet in and updata the version number
							 */
							else {
								logger.info("Update a hashtag in data server!");
								JSONArray tweetsArray = ds_tweetsMap
										.getTweetsArray(storeTerm);
								if (!tweetsArray.contains(tweet)) {
									sendNewdataToSecondary(postBody, hrh);
									int newVersionNum = ds_tweetsMap
											.getVersionNum(storeTerm) + 1;
									ds_tweetsMap.setVersionNum(storeTerm,
											newVersionNum);
									ds_tweetsMap.addTweets(storeTerm, tweet);
									ds_tweetsMap.increaseDataServerVersion();
									// Update LogMap
									ds_tweetsMap
											.addLogData(ds_tweetsMap
													.getDataServerVersion(),
													tweet, hashtags);
									logger.info("Successfully save the tweet into data server! My current dataVersion is: "
											+ ds_tweetsMap
													.getDataServerVersion());
								} else {
									hrh.response(406, "Not Acceptable",
											"This tweet exists in data server!");
									logger.info("This tweet exists in data server!");
								}
							}
						}
					} else {
						hrh.response(400, "Bad Request",
								"You do not post any tweet!");
						logger.info("No tweet or no hashtag in this post request!");
					}
				} else {
					hrh.response(400, "Bad Request",
							"Front End do not post anything!");
					logger.info("Post request body is empty!");
				}
			} catch (IOException e) {
				logger.debug(e.getMessage(), e);
			} catch (ParseException e) {
				logger.debug(e.getMessage(), e);
			}
		}