/javaProject/SerializationBiblio/src/models/IndexLibrary.java

https://bitbucket.org/ericson_cepeda/repbiblioteca · Java · 115 lines · 90 code · 22 blank · 3 comment · 7 complexity · f7638e60851ed7fc5aa09d9cc9b23a30 MD5 · raw file

  1. package models;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6. import world.BibliotecaTDO;
  7. import world.DeweyClassification;
  8. import world.Serializacion;
  9. import com.mongodb.BasicDBObject;
  10. import com.mongodb.DB;
  11. import com.mongodb.DBCollection;
  12. import com.mongodb.DBObject;
  13. import config.MongoConnector;
  14. public class IndexLibrary {
  15. private static DBCollection getIndexCollection(){
  16. MongoConnector mc = MongoConnector.getInstance( );
  17. DB bdConex = mc.getMongoDB( );
  18. return bdConex.getCollection( MongoConnector.INDEX_COLLECTION );
  19. }
  20. private static DBCollection getBooksCollection(){
  21. MongoConnector mc = MongoConnector.getInstance( );
  22. DB bdConex = mc.getMongoDB( );
  23. return bdConex.getCollection( MongoConnector.BOOKS_COLLECTION );
  24. }
  25. public static long countIndexLibrary(){
  26. DBCollection booksCollection = getIndexCollection();
  27. return booksCollection.count();
  28. }
  29. public static void cleanLibaryIndex(){
  30. MongoConnector mc = MongoConnector.getInstance( );
  31. DB bdConex = mc.getMongoDB( );
  32. DBCollection indexCollection = bdConex.getCollection( MongoConnector.INDEX_COLLECTION );
  33. indexCollection.drop();
  34. BasicDBObject query = new BasicDBObject();
  35. query.put("capped", false);
  36. query.put("size", 0);
  37. query.put("max", 0);
  38. bdConex.createCollection(MongoConnector.INDEX_COLLECTION, query);
  39. // BasicDBObject query = new BasicDBObject();
  40. // query.put("position", java.util.regex.Pattern.compile(".*"));
  41. // indexCollection.findAndRemove(query);
  42. }
  43. public static boolean saveHashPosition(BibliotecaTDO objeto, int currentPosition){
  44. DBCollection booksCollection = getIndexCollection();
  45. BasicDBObject query = new BasicDBObject();
  46. query.put("position", ""+currentPosition);
  47. query.put("title", objeto.getTitulo());
  48. DBObject newTuple = ( DBObject )query;
  49. booksCollection.insert( newTuple );
  50. return newTuple.get( "_id" ) != null ? true : false;
  51. }
  52. public static List<DBObject> getIndexBookByTitle(String title){
  53. title = title.replaceAll(Serializacion.SPECIAL, "\\\\$1");
  54. DBCollection indexCollection = getIndexCollection();
  55. BasicDBObject query = new BasicDBObject();
  56. query.put("title", java.util.regex.Pattern.compile(".*"+title+".*"));
  57. return indexCollection.find(query).toArray();
  58. }
  59. public static List<List<DBObject>> getBookByTitleAndAuthor(BibliotecaTDO libraryBook){
  60. String title = libraryBook.getTitulo().replaceAll(Serializacion.SPECIAL, "\\\\$1");
  61. String autor = libraryBook.getAutorPersonal().get(0).replaceAll(Serializacion.SPECIAL, "\\\\$1");
  62. DBCollection indexCollection = getBooksCollection();
  63. List<List<DBObject>> results = new ArrayList<List<DBObject>>();
  64. String[] queries = {"core.metadata.title","arxiv.title","googleDTO.volumeInfo.title","isbnBooks.TitleLong"};
  65. String[] authorQueries = {"core.metadata.creator","arxiv.authors","googleDTO.volumeInfo.authors","isbnBooks.AuthorsText"};
  66. int counter = 0;
  67. for (String string : queries) {
  68. BasicDBObject query = new BasicDBObject();
  69. query.put(string, java.util.regex.Pattern.compile(".*"+title+".*"));
  70. List<DBObject> fromCollection = indexCollection.find(query).toArray();
  71. BasicDBObject queryAuthor = new BasicDBObject();
  72. queryAuthor.put(authorQueries[counter], java.util.regex.Pattern.compile(".*"+autor+".*"));
  73. List<DBObject> fromAuthorCollection = indexCollection.find(query).toArray();
  74. if (fromCollection.size() > 0)
  75. results.add(fromCollection);
  76. else if (fromAuthorCollection.size() > 0){
  77. results.add(fromAuthorCollection);
  78. }
  79. counter++;
  80. }
  81. if (results.size() > 0)
  82. return results;
  83. return null;
  84. }
  85. public static BasicDBObject getDeweyCategories(String deweyFromLocalLibrary){
  86. Pattern deweyPattern = Pattern.compile("([0-9]+\\.[0-9]+)");
  87. Matcher matched = deweyPattern.matcher(deweyFromLocalLibrary);
  88. if (matched.find()){
  89. deweyFromLocalLibrary = matched.group(1);
  90. }
  91. return DeweyClassification.categoriasDewey(deweyFromLocalLibrary);
  92. }
  93. }