/src/main/java/org/openshift/parks/mongo/DBConnection.java

https://gitlab.com/gshipley/kohls-demo · Java · 91 lines · 72 code · 18 blank · 1 comment · 11 complexity · c1fd1e2eeb7e77fb0dfb89b16a6ffad5 MD5 · raw file

  1. package org.openshift.parks.mongo;
  2. import com.mongodb.MongoClient;
  3. import com.mongodb.MongoCredential;
  4. import com.mongodb.ServerAddress;
  5. import com.mongodb.client.MongoCollection;
  6. import com.mongodb.client.MongoDatabase;
  7. import org.bson.Document;
  8. import javax.annotation.PostConstruct;
  9. import javax.enterprise.context.ApplicationScoped;
  10. import javax.inject.Named;
  11. import java.io.BufferedReader;
  12. import java.io.InputStream;
  13. import java.io.InputStreamReader;
  14. import java.util.Arrays;
  15. @Named
  16. @ApplicationScoped
  17. public class DBConnection {
  18. private static final String FILENAME = "/kohls.json";
  19. private static final String COLLECTION_NAME = "stores";
  20. private MongoDatabase mongoDB;
  21. @PostConstruct
  22. public void afterCreate() {
  23. String mongoHost = (System.getenv("MONGODB_SERVICE_HOST") == null) ? "127.0.0.1" : System.getenv("MONGODB_SERVICE_HOST");
  24. String mongoPort = (System.getenv("MONGODB_SERVICE_PORT") == null) ? "27017" : System.getenv("MONGODB_SERVICE_PORT");
  25. String mongoUser = (System.getenv("MONGODB_USER")== null) ? "mongodb" : System.getenv("MONGODB_USER");
  26. String mongoPassword = (System.getenv("MONGODB_PASSWORD") == null) ? "mongodb" : System.getenv("MONGODB_PASSWORD");
  27. String mongoDBName = (System.getenv("MONGODB_DATABASE") == null) ? "mongodb" : System.getenv("MONGODB_DATABASE");
  28. // Check if we are using a mongoDB template or mongodb RHEL 7 image
  29. if (mongoHost == null) {
  30. mongoHost = System.getenv("MONGODB_24_RHEL7_SERVICE_HOST");
  31. }
  32. if (mongoPort == null) {
  33. mongoPort = System.getenv("MONGODB_24_RHEL7_SERVICE_PORT");
  34. }
  35. int port = Integer.decode(mongoPort);
  36. try {
  37. MongoCredential credential = MongoCredential.createCredential(mongoUser, mongoDBName, mongoPassword.toCharArray());
  38. MongoClient mongoClient = new MongoClient(new ServerAddress(mongoHost, Integer.parseInt(mongoPort)), Arrays.asList(credential));
  39. mongoDB = mongoClient.getDatabase(mongoDBName);
  40. } catch (Exception e) {
  41. e.printStackTrace();
  42. }
  43. this.initDatabase(mongoDB);
  44. }
  45. public MongoDatabase getDB() {
  46. return mongoDB;
  47. }
  48. public MongoCollection getCollection() {
  49. return mongoDB.getCollection(COLLECTION_NAME);
  50. }
  51. private void initDatabase(MongoDatabase mongoDB) {
  52. MongoCollection storeListCollection = getCollection();
  53. int imported = 0;
  54. if (storeListCollection.count() < 1) {
  55. System.out.println("The database is empty. We need to populate it");
  56. try {
  57. String currentLine = new String();
  58. InputStream is = getClass().getClassLoader().getResourceAsStream(FILENAME);
  59. BufferedReader in = new BufferedReader(new InputStreamReader(is));
  60. while ((currentLine = in.readLine()) != null) {
  61. storeListCollection.insertOne(Document.parse(currentLine.toString()));
  62. imported++;
  63. }
  64. System.out.println("Successfully imported " + imported + " elements.");
  65. } catch (Exception e) {
  66. e.printStackTrace();
  67. }
  68. }
  69. }
  70. public void checkDatabase() {
  71. this.initDatabase(mongoDB);
  72. }
  73. }