/hello-spring-mongodb/src/main/java/org/cloudfoundry/services/HomeController.java

https://github.com/opal29/cloudfoundry-samples · Java · 125 lines · 104 code · 17 blank · 4 comment · 12 complexity · 5a8074af6239e991e84b7efea3ba0096 MD5 · raw file

  1. package org.cloudfoundry.services;
  2. import static org.springframework.data.mongodb.core.query.Criteria.where;
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import java.util.Map;
  8. import java.util.Properties;
  9. import java.util.Random;
  10. import javax.servlet.http.HttpServletResponse;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.beans.factory.annotation.Qualifier;
  13. import org.springframework.dao.DataAccessException;
  14. import org.springframework.data.mongodb.MongoDbFactory;
  15. import org.springframework.data.mongodb.core.CollectionCallback;
  16. import org.springframework.data.mongodb.core.MongoTemplate;
  17. import org.springframework.data.mongodb.core.query.Query;
  18. import org.springframework.stereotype.Controller;
  19. import org.springframework.ui.Model;
  20. import org.springframework.web.bind.annotation.RequestMapping;
  21. import org.springframework.web.bind.annotation.RequestMethod;
  22. import com.mongodb.DBCollection;
  23. import com.mongodb.MongoException;
  24. /**
  25. * Handles requests for the application home page.
  26. */
  27. @Controller
  28. public class HomeController {
  29. @Autowired(required = false)
  30. MongoDbFactory mongoDbFactory;
  31. @Autowired(required = false)
  32. MongoTemplate mongoTemplate;
  33. @Autowired(required = false)
  34. @Qualifier(value = "serviceProperties")
  35. Properties serviceProperties;
  36. @RequestMapping(value = "/", method = RequestMethod.GET)
  37. public String home(Model model) {
  38. List<String> services = new ArrayList<String>();
  39. if (mongoDbFactory != null) {
  40. services.add("MongoDB: " + mongoDbFactory.getDb().getMongo().getAddress());
  41. }
  42. Random generator = new Random();
  43. Person p = new Person("Joe Cloud-" + generator.nextInt(100), generator.nextInt(100));
  44. mongoTemplate.save(p);
  45. List<Person> people = mongoTemplate.find(new Query(where("age").lt(100)), Person.class);
  46. model.addAttribute("people", people);
  47. model.addAttribute("services", services);
  48. model.addAttribute("serviceProperties", getServicePropertiesAsList());
  49. String environmentName = (System.getenv("VCAP_APPLICATION") != null) ? "Cloud" : "Local";
  50. model.addAttribute("environmentName", environmentName);
  51. return "home";
  52. }
  53. @RequestMapping("/env")
  54. public void env(HttpServletResponse response) throws IOException {
  55. response.setContentType("text/plain");
  56. PrintWriter out = response.getWriter();
  57. out.println("System Properties:");
  58. for (Map.Entry<Object, Object> property : System.getProperties()
  59. .entrySet()) {
  60. out.println(property.getKey() + ": " + property.getValue());
  61. }
  62. out.println();
  63. out.println("System Environment:");
  64. for (Map.Entry<String, String> envvar : System.getenv().entrySet()) {
  65. out.println(envvar.getKey() + ": " + envvar.getValue());
  66. }
  67. }
  68. @RequestMapping("/service-properties")
  69. public void services(HttpServletResponse response) throws IOException {
  70. response.setContentType("text/plain");
  71. PrintWriter out = response.getWriter();
  72. if (serviceProperties != null) {
  73. out.println("Cloud Service Properties:");
  74. // Map envMap = System.getenv();
  75. for (Object key : serviceProperties.keySet()) {
  76. out.println(key + ": " + serviceProperties.get(key));
  77. }
  78. } else {
  79. out.println("No Cloud Service Properties found. Check configuration file for <cloud:service-properties/> element");
  80. }
  81. out.println(")<a href=\"/\">Return to previous page.</a>");
  82. out.println();
  83. }
  84. private List<String> getServicePropertiesAsList() {
  85. List<String> propList = new ArrayList<String>();
  86. if (serviceProperties != null) {
  87. for (Object key : serviceProperties.keySet()) {
  88. propList.add(key + ": " + serviceProperties.get(key));
  89. }
  90. }
  91. return propList;
  92. }
  93. @RequestMapping("/deleteAll")
  94. public void deleteAll(HttpServletResponse response) throws IOException {
  95. response.setContentType("text/plain");
  96. PrintWriter out = response.getWriter();
  97. long count = mongoTemplate.execute(Person.class,
  98. new CollectionCallback<Long>() {
  99. @Override
  100. public Long doInCollection(DBCollection collection)
  101. throws MongoException, DataAccessException {
  102. return collection.count();
  103. }
  104. });
  105. out.println("Deleted " + count + " entries");
  106. mongoTemplate.dropCollection("Person");
  107. }
  108. }