Advertisement
Guest User

Untitled

a guest
Jun 19th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.15 KB | None | 0 0
  1. public CommandRequestInterface doDupeCheck(CommandRequest request) {
  2. try {
  3. User user = request.getSession().getUserNull(request.getUser());
  4. InodeHandle inode = request.getCurrentDirectory().getInodeHandle(request.getArgument(), user);
  5.  
  6. if (inode.isLink()) {
  7. // Ignore, don't care about links
  8. return request;
  9. }
  10.  
  11. IndexEngineInterface ie = GlobalContext.getGlobalContext().getIndexEngine();
  12. Map<String,String> inodes;
  13.  
  14. AdvancedSearchParams params = new AdvancedSearchParams();
  15. params.setName(request.getArgument());
  16. params.setExact(true);
  17.  
  18. try {
  19. inodes = ie.advancedFind(GlobalContext.getGlobalContext().getRoot(), params);
  20. } catch (IndexException e) {
  21. //Index Exception while searching
  22. logger.error(e.getMessage());
  23. return request;
  24. } catch (IllegalArgumentException e) {
  25. //Invalid Arguement while searching
  26. logger.info(e.getMessage());
  27. return request;
  28. }
  29.  
  30. if (!inodes.isEmpty()) {
  31. for (Map.Entry<String,String> item : inodes.entrySet()) {
  32. boolean isDupe = false;
  33.  
  34. InodeHandle sinode = item.getValue().equals("d") ? new DirectoryHandle(item.getKey()) : new FileHandle(item.getKey());
  35.  
  36. try {
  37. if (inode.getPluginMetaData(DupeCheckFileData.DUPE)) {
  38. isDupe = true;
  39. }
  40. } catch (KeyNotFoundException e) {
  41. // This is fine, means file/dir has not been un-duped
  42. isDupe = true;
  43. } catch (FileNotFoundException e) {
  44. // File not found, not good, index refers to file that does not exist
  45. logger.warn("Index Contained an unexistent inode: " + item.getKey());
  46. }
  47.  
  48. if (isDupe) {
  49. ConfigInterface config = GlobalContext.getConfig();
  50. if (config.checkPathPermission("dupecheck", user, request.getCurrentDirectory())) {
  51. request.setDeniedResponse(new CommandResponse(400,"File/Dir Already Exists: " + sinode.getPath()));
  52. request.setAllowed(false);
  53. return request;
  54. }
  55. }
  56.  
  57.  
  58. }
  59.  
  60. }
  61.  
  62. return request;
  63. } catch (FileNotFoundException e) {
  64. // File not found, let RETR handle it
  65. return request;
  66. }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement