Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public CommandRequestInterface doDupeCheck(CommandRequest request) {
- try {
- User user = request.getSession().getUserNull(request.getUser());
- InodeHandle inode = request.getCurrentDirectory().getInodeHandle(request.getArgument(), user);
- if (inode.isLink()) {
- // Ignore, don't care about links
- return request;
- }
- IndexEngineInterface ie = GlobalContext.getGlobalContext().getIndexEngine();
- Map<String,String> inodes;
- AdvancedSearchParams params = new AdvancedSearchParams();
- params.setName(request.getArgument());
- params.setExact(true);
- try {
- inodes = ie.advancedFind(GlobalContext.getGlobalContext().getRoot(), params);
- } catch (IndexException e) {
- //Index Exception while searching
- logger.error(e.getMessage());
- return request;
- } catch (IllegalArgumentException e) {
- //Invalid Arguement while searching
- logger.info(e.getMessage());
- return request;
- }
- if (!inodes.isEmpty()) {
- for (Map.Entry<String,String> item : inodes.entrySet()) {
- boolean isDupe = false;
- InodeHandle sinode = item.getValue().equals("d") ? new DirectoryHandle(item.getKey()) : new FileHandle(item.getKey());
- try {
- if (inode.getPluginMetaData(DupeCheckFileData.DUPE)) {
- isDupe = true;
- }
- } catch (KeyNotFoundException e) {
- // This is fine, means file/dir has not been un-duped
- isDupe = true;
- } catch (FileNotFoundException e) {
- // File not found, not good, index refers to file that does not exist
- logger.warn("Index Contained an unexistent inode: " + item.getKey());
- }
- if (isDupe) {
- ConfigInterface config = GlobalContext.getConfig();
- if (config.checkPathPermission("dupecheck", user, request.getCurrentDirectory())) {
- request.setDeniedResponse(new CommandResponse(400,"File/Dir Already Exists: " + sinode.getPath()));
- request.setAllowed(false);
- return request;
- }
- }
- }
- }
- return request;
- } catch (FileNotFoundException e) {
- // File not found, let RETR handle it
- return request;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement