/Backend/FileService/src/main/java/mongodb/dao/FileDAOImpl.java

https://gitlab.com/AimeTPGM/OfficerBossProject · Java · 133 lines · 116 code · 17 blank · 0 comment · 10 complexity · 1690abffb7830239bd39a73681cd7899 MD5 · raw file

  1. package mongodb.dao;
  2. import java.io.InputStream;
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import org.bson.types.ObjectId;
  8. import org.springframework.data.mongodb.core.MongoOperations;
  9. import org.springframework.data.mongodb.core.query.Criteria;
  10. import org.springframework.data.mongodb.core.query.Query;
  11. import com.mongodb.BasicDBObject;
  12. import com.mongodb.DB;
  13. import com.mongodb.DBCursor;
  14. import com.mongodb.DBObject;
  15. import com.mongodb.gridfs.GridFS;
  16. import com.mongodb.gridfs.GridFSDBFile;
  17. import com.mongodb.gridfs.GridFSInputFile;
  18. import main.model.MyFile;
  19. import main.model.MyFileWithoutIS;
  20. import mongodb.main.MongoDBMain;
  21. public class FileDAOImpl implements FileDAO{
  22. private MongoOperations mongoOps;
  23. private static final String COLLECTION = MongoDBMain.getCollection();
  24. private static final String DB_NAME = MongoDBMain.getDBName();
  25. private static final DB DB = MongoDBMain.getMongoClient().getDB(DB_NAME);
  26. private static final GridFS gfs = new GridFS(DB,COLLECTION);
  27. public FileDAOImpl(MongoOperations mongoOps){
  28. this.mongoOps=mongoOps;
  29. }
  30. public void create(InputStream inputStream, String filename, String documentId) {
  31. System.out.println("DAO: putting file to DB");
  32. GridFS gfs = new GridFS(DB,COLLECTION);
  33. GridFSInputFile gfsFile = gfs.createFile(inputStream, filename);
  34. gfsFile.put("documentId", documentId);
  35. gfsFile.save();
  36. System.out.println("DAO: success");
  37. }
  38. public List<Map> getAllFiles() {
  39. List<Map> files = new ArrayList<Map>();
  40. Map<String, String> filesdetail = new HashMap<String, String>();
  41. DBCursor cursor = gfs.getFileList();
  42. while (cursor.hasNext()) {
  43. filesdetail.clear();
  44. DBObject temp = cursor.next();
  45. System.out.println(temp);
  46. filesdetail.put("documentId", (String) temp.get("documentId"));
  47. filesdetail.put("filename", (String) temp.get("filename"));
  48. files.add(filesdetail);
  49. }
  50. return files;
  51. }
  52. public MyFile readByDocumentId(String documentId) {
  53. MyFile temp = new MyFile();
  54. System.out.println("DAO: querying file by document id: "+documentId);
  55. BasicDBObject query = new BasicDBObject();
  56. query.put("documentId", documentId);
  57. GridFSDBFile result = gfs.findOne(query);
  58. if (result != null){
  59. System.out.println("DAO: returning a file, filename: "+result.getFilename());
  60. temp.setFilename(result.getFilename());
  61. temp.setInputStream(result.getInputStream());
  62. }
  63. else {
  64. temp = null;
  65. }
  66. return temp;
  67. }
  68. public List<MyFile> readAllByDocumentId(String documentId){
  69. System.out.println("DAO: Querying all files by document id: "+documentId);
  70. BasicDBObject query = new BasicDBObject();
  71. query.put("documentId", documentId);
  72. List<GridFSDBFile> result = gfs.find(query);
  73. if(result.size() == 0) return null;
  74. List<MyFile> files = new ArrayList<MyFile>();
  75. for (int i = 0; i < result.size(); i++) {
  76. MyFile file = new MyFile();
  77. file.setId(result.get(i).getId().toString());
  78. file.setDocumentId(documentId);
  79. file.setFilename(result.get(i).getFilename());
  80. file.setInputStream(result.get(i).getInputStream());
  81. files.add(file);
  82. }
  83. return files;
  84. }
  85. public MyFile readById(String id) {
  86. System.out.println("DAO: querying file by file id: "+id);
  87. BasicDBObject query = new BasicDBObject();
  88. query.put("_id", new ObjectId(id));
  89. GridFSDBFile result = gfs.findOne(query);
  90. System.out.println("DAO: returning a file");
  91. MyFile temp = new MyFile();
  92. if (result != null){
  93. System.out.println("DAO: returning a file, filename: "+result.getFilename());
  94. temp.setFilename(result.getFilename());
  95. temp.setInputStream(result.getInputStream());
  96. }
  97. else {
  98. temp = null;
  99. }
  100. return temp;
  101. }
  102. public void deleteByDocumentId(String id) {
  103. System.out.println("DAO: deleting file by document id: "+id);
  104. BasicDBObject query = new BasicDBObject();
  105. query.put("documentId", id);
  106. gfs.remove(gfs.findOne(query));
  107. System.out.println("DAO: deleted!");
  108. }
  109. public void deleteById(String id) {
  110. System.out.println("DAO: deleting file by file id: "+id);
  111. BasicDBObject query = new BasicDBObject();
  112. query.put("_id", new ObjectId(id));
  113. gfs.remove(gfs.findOne(query));
  114. System.out.println("DAO: deleted!");
  115. }
  116. }