/webportal/src/main/java/org/ala/logger/client/RemoteLogger.java

http://alageospatialportal.googlecode.com/ · Java · 181 lines · 134 code · 30 blank · 17 comment · 11 complexity · 029236deee759336175e335153227a18 MD5 · raw file

  1. package org.ala.logger.client;
  2. import au.org.emii.portal.settings.SettingsSupplementary;
  3. import au.org.emii.portal.util.LayerSelection;
  4. import java.net.URLDecoder;
  5. import javax.servlet.http.Cookie;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpSession;
  8. import org.apache.commons.httpclient.HttpClient;
  9. import org.apache.commons.httpclient.methods.GetMethod;
  10. import org.apache.commons.httpclient.methods.PostMethod;
  11. import org.apache.commons.lang.StringUtils;
  12. import org.apache.log4j.Logger;
  13. import org.springframework.beans.factory.annotation.Required;
  14. import org.zkoss.zk.ui.Executions;
  15. import org.zkoss.zk.ui.Sessions;
  16. /**
  17. * Helper class to send logging information to the logger-service
  18. *
  19. * @author ajay
  20. */
  21. public class RemoteLogger {
  22. Logger logger = Logger.getLogger(this.getClass());
  23. SettingsSupplementary settingsSupplementary;
  24. String logger_service = "";
  25. String appid = "";
  26. private void init() {
  27. logger_service = settingsSupplementary.getValue("logging_url");
  28. appid = settingsSupplementary.getValue("app_id");
  29. }
  30. public SettingsSupplementary getSettingsSupplementary() {
  31. return settingsSupplementary;
  32. }
  33. @Required
  34. public void setSettingsSupplementary(SettingsSupplementary settingsSupplementary) {
  35. this.settingsSupplementary = settingsSupplementary;
  36. }
  37. public void logMapSpecies(String name, String lsid, String area, String extra) {
  38. logMapSpecies(name, lsid, area, "Species", extra);
  39. }
  40. public void logMapSpecies(String name, String lsid, String area, String type, String extra) {
  41. sendToServer(type, name, lsid, area, "", extra, "mapped", "0", "");
  42. }
  43. public void logMapArea(String name, String type, String area) {
  44. logMapArea(name, type, area, "");
  45. }
  46. public void logMapArea(String name, String type, String area, String extra) {
  47. logMapArea(name, type, area, "", "");
  48. }
  49. public void logMapArea(String name, String type, String area, String layer, String extra) {
  50. sendToServer(type, name, "", area, layer, extra, "mapped", "0", "");
  51. }
  52. public void logMapAnalysis(String name, String type, String area, String species, String layers, String pid, String options, String status) {
  53. sendToServer(type, name, species, area, layers, options, status, "0", pid);
  54. }
  55. public void logMapAnalysisUpdateStatus(String pid, String status) {
  56. sendToServer(pid, status);
  57. }
  58. private int sendToServer(String type, String name, String lsid, String area, String layers, String extra, String status, String privacy, String pid) {
  59. try {
  60. // StringBuffer sbProcessUrl = new StringBuffer();
  61. // sbProcessUrl.append(logger_service);
  62. // sbProcessUrl.append("/log/action?").append("?");
  63. // sbProcessUrl.append("email=guest@ala.org.au").append("&");
  64. // sbProcessUrl.append("appid=").append(appid).append("&");
  65. // sbProcessUrl.append("userip=").append(userip).append("&");
  66. // sbProcessUrl.append("type=").append(type).append("&");
  67. // sbProcessUrl.append("name=").append(name).append("&");
  68. // sbProcessUrl.append("specieslsid=").append(lsid).append("&");
  69. // //sbProcessUrl.append("area=").append(area).append("&");
  70. // sbProcessUrl.append("status=mapped").append("&");
  71. // sbProcessUrl.append("privacy=0");
  72. if (StringUtils.isBlank(logger_service)) {
  73. init();
  74. }
  75. String sessionid = ((HttpSession) Sessions.getCurrent().getNativeSession()).getId();
  76. String userip = Executions.getCurrent().getHeader("x-forwarded-for");
  77. if (StringUtils.isBlank(userip)) {
  78. userip = Sessions.getCurrent().getRemoteAddr();
  79. if (StringUtils.isBlank(userip)) {
  80. userip = "";
  81. }
  82. }
  83. String useremail = "guest@ala.org.au";
  84. try {
  85. Cookie[] cookies = ((HttpServletRequest) Executions.getCurrent().getNativeRequest()).getCookies();
  86. if (cookies != null) {
  87. for (Cookie cookie : cookies) {
  88. if (cookie.getName().equals("ALA-Auth")) {
  89. useremail = cookie.getValue();
  90. break;
  91. }
  92. }
  93. }
  94. } catch (Exception e) {
  95. }
  96. System.out.println("Sending log to: " + logger_service + "/log/action");
  97. HttpClient client = new HttpClient();
  98. PostMethod post = new PostMethod(logger_service + "/log/action");
  99. post.addRequestHeader("Accept", "application/json");
  100. String category1 = "", category2 = "";
  101. String[] types = type.split("-");
  102. category1 = StringUtils.capitalize(types[0].trim());
  103. if (types.length > 1) {
  104. category2 = StringUtils.capitalize(types[1].trim());
  105. }
  106. if (StringUtils.isBlank(lsid)) {
  107. lsid = "";
  108. }
  109. if (StringUtils.isBlank(pid)) {
  110. pid = "";
  111. }
  112. if (StringUtils.isBlank(area)) {
  113. area = "";
  114. }
  115. post.addParameter("email", useremail);
  116. post.addParameter("appid", appid);
  117. post.addParameter("userip", userip);
  118. post.addParameter("sessionid", sessionid);
  119. post.addParameter("type", type);
  120. post.addParameter("category1", category1);
  121. post.addParameter("category2", category2);
  122. post.addParameter("name", name);
  123. post.addParameter("processid", pid);
  124. post.addParameter("specieslsid", lsid);
  125. post.addParameter("layers", layers);
  126. post.addParameter("status", status);
  127. post.addParameter("privacy", privacy);
  128. post.addParameter("area", area);
  129. post.addParameter("extra", extra);
  130. logger.debug("logging " + type + " action for user session " + sessionid + " for user " + useremail + " from " + userip);
  131. return client.executeMethod(post);
  132. } catch (Exception e) {
  133. System.out.println("Error sending logging information to server:");
  134. e.printStackTrace(System.out);
  135. }
  136. return -1;
  137. }
  138. private int sendToServer(String pid, String status) {
  139. try {
  140. HttpClient client = new HttpClient();
  141. GetMethod get = new GetMethod(logger_service + "/log/update/" + pid + "/" + status);
  142. get.addRequestHeader("Accept", "application/json");
  143. logger.debug("logging status update on " + pid);
  144. return client.executeMethod(get);
  145. } catch (Exception e) {
  146. System.out.println("Error sending logging information to server:");
  147. e.printStackTrace(System.out);
  148. }
  149. return -1;
  150. }
  151. }