public SwiftHomeFinderService(final SwiftSession session) { super(session, new PathContainerService()); } }
private Map<Path, Boolean> getRoomEncryptionStatus(final Map<TransferItem, TransferStatus> files) throws BackgroundException { final Map<Path, Boolean> rooms = new HashMap<>(); for(Map.Entry<TransferItem, TransferStatus> entry : files.entrySet()) { // Get top level room final Path container = new PathContainerService().getContainer(entry.getKey().remote); if(rooms.containsKey(container)) { continue; } rooms.put(container, nodeid.isEncrypted(entry.getKey().remote)); } return rooms; }
@Override public Void pre(final Transfer.Type type, final Map<TransferItem, TransferStatus> files, final ConnectionCallback callback) throws BackgroundException { switch(type) { case download: break; default: { final Map<Path, Boolean> rooms = this.getRoomEncryptionStatus(files); for(Map.Entry<TransferItem, TransferStatus> entry : files.entrySet()) { final Path container = new PathContainerService().getContainer(entry.getKey().remote); if(rooms.get(container)) { final TransferStatus status = entry.getValue(); nodeid.setFileKey(status); } } } } return null; }
@Override public void post(final Transfer.Type type, final Map<TransferItem, TransferStatus> files, final ConnectionCallback callback) throws BackgroundException { switch(type) { case download: break; default: if(PreferencesFactory.get().getBoolean("sds.encryption.missingkeys.upload")) { if(session.userAccount().isEncryptionEnabled()) { final SDSMissingFileKeysSchedulerFeature background = new SDSMissingFileKeysSchedulerFeature(session, nodeid); final Map<Path, Boolean> rooms = this.getRoomEncryptionStatus(files); for(Map.Entry<TransferItem, TransferStatus> entry : files.entrySet()) { final Path container = new PathContainerService().getContainer(entry.getKey().remote); if(rooms.get(container)) { background.operate(callback, entry.getKey().remote); } } } } } }
public DefaultPathPredicate(final Path file) { final Path.Type type = file.isSymbolicLink() ? Path.Type.symboliclink : file.isFile() ? Path.Type.file : Path.Type.directory; String qualifier = StringUtils.EMPTY; if(StringUtils.isNotBlank(file.attributes().getRegion())) { if(new PathContainerService().isContainer(file)) { qualifier += file.attributes().getRegion(); } } if(file.isFile()) { if(StringUtils.isNotBlank(file.attributes().getVersionId())) { qualifier += file.attributes().getVersionId(); } } final String path = file.getAbsolute(); reference = "[" + type + "]" + "-" + qualifier + path; }
if(new PathContainerService().isContainer(file)) { attributes += file.attributes().getRegion();
final Path container = new PathContainerService().getContainer(file); if(container.attributes().getCustom().containsKey(SDSAttributesFinderFeature.KEY_ENCRYPTED)) { return Boolean.valueOf(container.attributes().getCustom().get(SDSAttributesFinderFeature.KEY_ENCRYPTED));
@Override public PathAttributes find(final Path file) throws BackgroundException { if(file.isRoot()) { return PathAttributes.EMPTY; } if(new PathContainerService().isContainer(file)) { return PathAttributes.EMPTY; } final AttributedList<Path> list = new FileidDriveListService(session, fileid, file).list(file.getParent(), new DisabledListProgressListener()); final Path found = list.find(new DriveFileidProvider.IgnoreTrashedPathPredicate(file)); if(null == found) { throw new NotfoundException(file.getAbsolute()); } return found.attributes(); }