开源夏令营第四周-copy、move操作Plus

这篇文章是对上篇文章的一个补充,上篇文章的整体思路是正确的,但是情况没考虑全,会出现一个BUG,感谢林老师的及时指正!


Seafile的一个最大特点是资料的安全性,资料库可以进行端到端的加密,并且在相互共享资料库时可以加一些权限操作,比如只读权限。这样当我们在进行移动、拷贝这些涉及不同资料库的操作时就应该考虑多种情况:

1.如果当前资料库是加密的,那么只能复制、移动到当前资料库

2.如果当前资料库不是加密的,那么可以复制、移动到所有的非加密资料库中

3.不能复制、移动到权限为只读的资料库


对于这些要求我们可以在列出所有资料库时加些限制,不列出没有move、copy权限的资料库,这样既可以为用户节省时间,也不会造成不必要的麻烦(因为就算要强制copy、move到没有权限的资料库,服务器也不会接受这个请求)


简单考虑过后,直接在代码中加入两个判断变量:是否加密,是否只读。在列出资料库列表时可根据这两个参数来决定列出哪些资料库。

自然语言:

if 原始资料库加密 then 只列出这个资料库

else 对所有资料库进行筛选(if 这个资料库不加密不只读 then 列出)

Java代码:

public void setSuitRepos(List<SeafRepo> repos, boolean repoIsEncrypted, String repoID) {
        this.repos.clear();
        for (SeafRepo repo: repos) {
            if (repoIsEncrypted) {
                if (repo.id.equals(repoID)) {
                    this.repos.add(repo);
                }
            }else if (hasRepoWritePermission(repo) && !repo.encrypted) {
                this.repos.add(repo);
            }
        }
        notifyDataSetChanged();
    }


这样就能达到所需功能,具体code请参照 本项目的代码


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值