SHARE
TWEET

Untitled

a guest Jun 19th, 2017 45 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.     }
RAW Paste Data
Top