Advertisement
Guest User

Untitled

a guest
Feb 21st, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.19 KB | None | 0 0
  1. package accesoDatos;
  2.  
  3. import java.sql.SQLException;
  4. import java.sql.Statement;
  5. import java.util.HashMap;
  6. import java.util.SortedSet;
  7. import java.util.TreeSet;
  8.  
  9. import org.bson.Document;
  10. import org.bson.conversions.Bson;
  11.  
  12. import com.mongodb.*;
  13. import com.mongodb.client.*;
  14.  
  15. import logicaRefrescos.Deposito;
  16. import logicaRefrescos.Dispensador;
  17.  
  18. public class AccesoMongo implements Datos {
  19.  
  20. MongoClient mongoClient;
  21. MongoCollection<Document> collection;
  22. MongoDatabase db;
  23.  
  24. public AccesoMongo() {
  25. try {
  26. // PASO 1: Conexión al Server de MongoDB Pasandole el host y el
  27. // puerto
  28. mongoClient = new MongoClient("localhost", 27017);
  29.  
  30. // PASO 2: Conexión a la base de datos
  31. db = mongoClient.getDatabase("maquinarefrescos");
  32. System.out.println("Conectado a BD MONGO");
  33.  
  34. } catch (Exception e) {
  35. System.out.println("Error leyendo la BD MONGO: " + e.getMessage());
  36. System.out.println("Fin de la ejecucion del programa");
  37. System.exit(1);
  38. }
  39.  
  40. }
  41.  
  42. @Override
  43. public HashMap<Integer, Deposito> obtenerDepositos() {
  44.  
  45. HashMap<Integer, Deposito> depositosCreados = new HashMap<Integer, Deposito>();
  46.  
  47. Deposito nuevoDep;
  48. String nombreMoneda;
  49. int valor;
  50. int cantidad;
  51.  
  52. try {
  53.  
  54. // PASO 3: Obtenemos una coleccion para trabajar con ella
  55. collection = db.getCollection("depositos");
  56.  
  57. // PASO 4.2.1: "READ" -> Leemos todos los documentos de la base de
  58. // datos
  59. int numDocumentos = (int) collection.count();
  60. System.out.println("Número de documentos (registros) en la colección depositos: " + numDocumentos + "\n");
  61.  
  62. // Busco todos los documentos de la colección, creo el objeto
  63. // deposito y lo almaceno en el hashmap
  64. MongoCursor<Document> cursor = collection.find().iterator();
  65.  
  66. while (cursor.hasNext()) {
  67. Document rs = cursor.next();
  68. nombreMoneda = rs.getString("nombre");
  69. valor = rs.getInteger("valor");
  70. cantidad = rs.getInteger("cantidad");
  71. nuevoDep = new Deposito(nombreMoneda, valor, cantidad);
  72. // Una vez creado el deposito con valor de la moneda y cantidad
  73. // lo metemos en el hashmap
  74. depositosCreados.put(valor, nuevoDep);
  75.  
  76. //System.out.println(cursor.next().toString());
  77. }
  78. } catch (Exception ex) {
  79. System.out.println("Error leyendo la coleccion: no se ha podido acceder a los datos");
  80. System.out.println(ex.getMessage());
  81. ex.printStackTrace();
  82. System.out.println("Fin de la ejecucion del programa");
  83. System.exit(1);
  84. }
  85.  
  86. System.out.println("Leidos datos de la coleccion de Depositos");
  87. return depositosCreados;
  88. }
  89.  
  90. @Override
  91. public HashMap<String, Dispensador> obtenerDispensadores() {
  92. HashMap<String, Dispensador> dispensadoresCreados = new HashMap<String, Dispensador>();
  93.  
  94. Dispensador nuevoDis;
  95. String nombre;
  96. String clave;
  97. int precio;
  98. int cantidad;
  99.  
  100. try {
  101.  
  102. // PASO 3: Obtenemos una coleccion para trabajar con ella
  103. collection = db.getCollection("dispensadores");
  104.  
  105. // PASO 4.2.1: "READ" -> Leemos todos los documentos de la base de
  106. // datos
  107. int numDocumentos = (int) collection.count();
  108. System.out.println("Número de documentos (registros) en la colección dispensadores: " + numDocumentos + "\n");
  109.  
  110. // Busco todos los documentos de la colección, creo el objeto
  111. // deposito y lo almaceno en el hashmap
  112. MongoCursor<Document> cursor = collection.find().iterator();
  113.  
  114. while (cursor.hasNext()) {
  115. Document rs = cursor.next();
  116. nombre = rs.getString("nombre");
  117. clave = rs.getString("clave");
  118. //System.out.println(clave);
  119. precio = rs.getInteger("precio");
  120. cantidad = rs.getInteger("cantidad");
  121. nuevoDis = new Dispensador(clave,nombre, precio, cantidad);
  122. // Una vez creado el dispensador lo metemos en el hashmap
  123. dispensadoresCreados.put(clave, nuevoDis);
  124.  
  125. //System.out.println(cursor.next().toString());
  126. }
  127. } catch (Exception ex) {
  128. System.out.println("Error leyendo la coleccion: no se ha podido acceder a los datos");
  129. System.out.println(ex.getMessage());
  130. System.out.println("Fin de la ejecucion del programa");
  131. System.exit(1);
  132. }
  133.  
  134. System.out.println("Leidos datos de la coleccion de Dispensadores");
  135. return dispensadoresCreados;
  136. }
  137.  
  138. @Override
  139. public boolean guardarDepositos(HashMap<Integer, Deposito> depositos) {
  140. boolean todoOK = false;
  141.  
  142. todoOK = this.guardarDepv1(depositos);
  143.  
  144. return todoOK;
  145.  
  146. }
  147.  
  148. //Actualizamos borrando la colleccion y volviendo a escribir
  149. private boolean guardarDepv1(HashMap<Integer, Deposito> depositos) {
  150. boolean todoOK = true;
  151.  
  152. try {
  153. Deposito auxDep;
  154. collection = db.getCollection("depositos");
  155.  
  156. // Para que salga ordenado el hashmap de monedas (de stackoverflow)
  157. SortedSet<Integer> keys = new TreeSet<Integer>(depositos.keySet());
  158. for (int key : keys) {
  159. auxDep = (Deposito) depositos.get(key);
  160. Bson filter = new Document("nombre", auxDep.getNombreMoneda());
  161. Bson newValue = new Document("cantidad", auxDep.getCantidad());
  162. Bson updateOperationDocument = new Document("$set", newValue);
  163. collection.updateOne(filter, updateOperationDocument);
  164.  
  165. }
  166. } catch (Exception e) {
  167. todoOK = false;
  168. System.out.println("Opcion guardar datos de Depositos no disponible por el momento");
  169. e.printStackTrace();
  170. }
  171.  
  172. return todoOK;
  173.  
  174. }
  175.  
  176.  
  177. private Document depToDocument(Deposito auxDep) {
  178. // Creamos una instancia Documento
  179. Document dbObjectDeposito = new Document();
  180.  
  181. dbObjectDeposito.append("nombre", auxDep.getNombreMoneda());
  182. dbObjectDeposito.append("valor", auxDep.getValor());
  183. dbObjectDeposito.append("cantidad", auxDep.getCantidad());
  184.  
  185. return dbObjectDeposito;
  186. }
  187.  
  188.  
  189.  
  190. @Override
  191. public boolean guardarDispensadores(HashMap<String, Dispensador> dispensadores) {
  192. boolean todoOK = false;
  193.  
  194. todoOK = this.guardarDisv1(dispensadores);
  195.  
  196. return todoOK;
  197. }
  198.  
  199. //Actualizamos borrando la colleccion y volviendo a escribir
  200. private boolean guardarDisv1(HashMap<String, Dispensador> dispensadores) {
  201. boolean todoOK = true;
  202.  
  203. try {
  204. Dispensador auxDis;
  205. collection = db.getCollection("dispensadores");
  206. for (HashMap.Entry<String, Dispensador> entry : dispensadores.entrySet()) {
  207. auxDis = (Dispensador) entry.getValue();
  208. Bson filter = new Document("nombre", auxDis.getClave());
  209. Bson newValue = new Document("cantidad", auxDis.getCantidad());
  210. Bson updateOperationDocument = new Document("$set", newValue);
  211. collection.updateOne(filter, updateOperationDocument);
  212.  
  213. }
  214. } catch (Exception e) {
  215. todoOK = false;
  216. System.out.println("Opcion guardar datos de Depositos no disponible por el momento");
  217. e.printStackTrace();
  218. }
  219.  
  220. return todoOK;
  221.  
  222. }
  223.  
  224. private Document disToDocument(Dispensador auxDis) {
  225. // Creamos una instancia Documento
  226. Document dbObjectDeposito = new Document();
  227.  
  228. dbObjectDeposito.append("id", auxDis.getId());
  229. dbObjectDeposito.append("clave", auxDis.getClave());
  230. dbObjectDeposito.append("nombre", auxDis.getNombreProducto());
  231. dbObjectDeposito.append("precio", auxDis.getPrecio());
  232. dbObjectDeposito.append("cantidad", auxDis.getCantidad());
  233.  
  234. return dbObjectDeposito;
  235. }
  236.  
  237. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement