public WritePermissionWorker(final List<Path> files, final PermissionOverwrite overwrite, final RecursiveCallback<Permission> callback, final ProgressListener listener) { this.files = files; this.permissions = new HashMap<>(); for(Path f : files) { this.permissions.put(f, overwrite.resolve(f.attributes().getPermission())); } this.callback = callback; this.listener = listener; }
/** * @param workdir Working directory in browser * @param name Folder name or null if unknown * @return True if creating directory will succeed */ default boolean isSupported(Path workdir, String name) { return workdir.attributes().getPermission().isWritable(); }
@Override public Permission getUnixPermission(final Path file) throws BackgroundException { return new LocalAttributesFinderFeature(session).find(file).getPermission(); }
/** * @param workdir Working directory * @return True if creating an empty file is possible. */ default boolean isSupported(Path workdir) { return workdir.attributes().getPermission().isWritable(); }
default boolean isSupported(final Path file) { return file.attributes().getPermission().isWritable(); }
@Override public Permission getUnixPermission(final Path file) throws BackgroundException { return new SFTPAttributesFinderFeature(session).find(file).getPermission(); }
@Override protected int compareFirst(final Path p1, final Path p2) { if(Permission.EMPTY.equals(p1.attributes().getPermission()) && Permission.EMPTY.equals(p2.attributes().getPermission())) { return 0; } if(Permission.EMPTY.equals(p1.attributes().getPermission())) { return -1; } if(Permission.EMPTY.equals(p2.attributes().getPermission())) { return 1; } Integer perm1 = Integer.valueOf(p1.attributes().getPermission().getMode()); Integer perm2 = Integer.valueOf(p2.attributes().getPermission().getMode()); if(perm1 > perm2) { return ascending ? 1 : -1; } else if(perm1 < perm2) { return ascending ? -1 : 1; } return 0; } }
/** * @param source Source file or folder * @param target Target file or folder * @return False if not supported for given files */ default boolean isSupported(Path source, Path target) { return target.getParent().attributes().getPermission().isWritable(); }
@Override public Permission getUnixPermission(final Path file) throws BackgroundException { try { return new FTPAttributesFinderFeature(session).find(file).getPermission(); } catch(InteroperabilityException e) { for(Path f : session.getFeature(ListService.class).list(file.getParent(), new DisabledListProgressListener())) { if(f.equals(file)) { return f.attributes().getPermission(); } } } throw new NotfoundException(file.getAbsolute()); }
if(Permission.EMPTY != next.attributes().getPermission()) { copy.append(next.attributes().getPermission().getMode());
final PathAttributes attributes = new PathAttributes(file.attributes()); if(inflated.getName().startsWith(DIR_PREFIX)) { final Permission permission = attributes.getPermission(); permission.setUser(permission.getUser().or(Permission.Action.execute)); permission.setGroup(permission.getGroup().or(Permission.Action.execute));
final Permission permission = item.attributes().getPermission(); value = NSAttributedString.attributedStringWithAttributes( permission.toString(),
if(file.attributes().getPermission().isExecutable()) { return this.iconNamed("executable.tiff", size); if(Permission.EMPTY != file.attributes().getPermission()) { if(!file.attributes().getPermission().isExecutable()) { final NSImage badge = this.iconNamed("privatefolderbadge.tiff", size); badge.setName("privatefolderbadge"); return this.folderIcon(size, badge); if(!file.attributes().getPermission().isReadable()) { if(file.attributes().getPermission().isWritable()) { final NSImage badge = this.iconNamed("dropfolderbadge.tiff", size); badge.setName("dropfolderbadge"); if(!file.attributes().getPermission().isWritable()) { final NSImage badge = this.iconNamed("readonlyfolderbadge.tiff", size); badge.setName("readonlyfolderbadge");
@Override public PermissionOverwrite run(final Session<?> session) throws BackgroundException { final UnixPermission feature = session.getFeature(UnixPermission.class); final List<Permission> permissions = new ArrayList<>(); for(Path next : files) { if(this.isCanceled()) { throw new ConnectionCanceledException(); } if(Permission.EMPTY == next.attributes().getPermission()) { next.attributes().setPermission(feature.getUnixPermission(next)); } permissions.add(next.attributes().getPermission()); } final PermissionOverwrite overwrite = new PermissionOverwrite(); final Supplier<Stream<Permission>> supplier = permissions::stream; overwrite.user.read = resolveOverwrite(map(supplier, Permission::getUser, Permission.Action.read)); overwrite.user.write = resolveOverwrite(map(supplier, Permission::getUser, Permission.Action.write)); overwrite.user.execute = resolveOverwrite(map(supplier, Permission::getUser, Permission.Action.execute)); overwrite.group.read = resolveOverwrite(map(supplier, Permission::getGroup, Permission.Action.read)); overwrite.group.write = resolveOverwrite(map(supplier, Permission::getGroup, Permission.Action.write)); overwrite.group.execute = resolveOverwrite(map(supplier, Permission::getGroup, Permission.Action.execute)); overwrite.other.read = resolveOverwrite(map(supplier, Permission::getOther, Permission.Action.read)); overwrite.other.write = resolveOverwrite(map(supplier, Permission::getOther, Permission.Action.write)); overwrite.other.execute = resolveOverwrite(map(supplier, Permission::getOther, Permission.Action.execute)); return overwrite; }
permission = attributes.getPermission();
@Override public void visit(final AttributedList<Path> list, final int index, final Path file) { if(l) { if(file.isSymbolicLink()) { console.printf("%n%sl%s\t%s\t%s -> %s%s", Ansi.ansi().bold(), file.attributes().getPermission().getSymbol(), formatter.getMediumFormat( file.attributes().getModificationDate()), file.getName(), file.getSymlinkTarget().getAbsolute(), Ansi.ansi().reset()); } else { console.printf("%n%s%s%s\t%s\t%s\t%s%s", Ansi.ansi().bold(), file.isDirectory() ? "d" : "-", file.attributes().getPermission().getSymbol(), formatter.getMediumFormat( file.attributes().getModificationDate()), StringUtils.isNotBlank(file.attributes().getRegion()) ? file.attributes().getRegion() : StringUtils.EMPTY, file.getName(), Ansi.ansi().reset()); } } else { console.printf("%n%s%s%s", Ansi.ansi().bold(), file.getName(), Ansi.ansi().reset()); } }
status.setPermission(attributes.getPermission());
if(status.isExists()) { status.setPermission(status.getRemote().getPermission());