添加私人日记支持的需求分析

根据javar的建议和“issue 17”,特提出如下需求分析:

1、征对目标、评论、日记,都可以添加私人帖子属性;

2、如果父类的属性是私人的,那么子类帖也相应成了私人的;

3、子类帖可以单独设为私人的;

4、私人帖和公共帖可以相互转换;如果原来的公共帖成了私有帖,那么其下的子帖也将成为私有,但如果子帖是别人写的又怎么办呢?

5、目标的状态设定后暂时不支持状态转换;

6、RSS订阅一律不计算私人帖;

7、帖子数目的计算要计算私人帖;

8、除非不可抗力(如黑客入侵等等)和司法请求,私人帖为作者的隐私,网站要绝对的维护作者的隐私权。

详细分析:

1、对象模型:ArticleInfo需要增加一个字段visibility(可见性):0为public,1为privated,以后可以考虑增加2为friend,而且为必须字段(不过对于留言是没有意义的);

2、创建目标时,如果选择可见性为privated,则目标下的评论、日记、日记的评论的可见性均为privated;而且,日记不能编辑为public,除非把日记的目标改变,而且,就算目标改变为public,它下面的评论除非作者编辑,仍然是privated;已经成为public的目标不能修改为privated,因为其他用户可能加入了这个目标;已经为privated的目标也不能修改为public,但可以通过把它下面的日记等子帖修改为public而与人共享其中的子帖;

3、创建日记和目标的评论时,其默认可见性继承于目标,如果目标为privated,则它们必须为privated,且没有选择的项;如果目标为public,可以有选择项使它为privated,但默认值是public。

4、在评论日记时,如果日记为privated,则为privated,且无选择项(这种情况实际上是自己评论自己的私有日记,别人是不可能看到你的私人日记的);如果日记为public,可以有选项使其为privated,评论别人的public的日记,但是把评论设为私人的,则原作者也看不见评论,但是如果原作者把日记改为私有了,则谁也看不见评论了;

3 thoughts on “添加私人日记支持的需求分析”

  1. 今天,看来,昨天的逻辑太复杂了,不好实现,别人也一时半会不会明白。现在简化一下:

    1、只有目标和日记有可见性属性,它们下面的评论的属性的直接继承它们的;为了以后的扩展(例如:添加friend可见性),用整数代表,可见是1,不可见是2,0或空代表无意义(如评论的可见性就没有意义);

    2、撰写目标时,默认为public,可以选择为privated,如果目标为public,日记默认为public,但有选项使它privated;如果目标为privated,日记为privated,且无选项使它为public;

    3、修改日记时,原来是privated,可以有选项使它成为public;原来是pubic,现在转为了privated,如果下面有别人的评论则不能转换,如果没有则可以转换;

    页面布置:

    1、添加目标时,一个选择框,默认是public,选了则是privated;

    2、写日记时有两个地方:

    1)、是在某个已知目标下面:如果目标是public,则在下面显示使其为privated的选择框;如果目标是privated,则不显示这个选择框,因为只能是privated;为了实现简便,目标是privated时,也显示选择框,选不选日记都是privated;

    2)、在目标未知,需要在列表中选择目标的时候,因为这时事先不知道目标是pubic还是privated,所以显示使其成为privated的选择框,如果目标是public,则选了选择框日记就成了privated;如果目标是privated,选不选都是privated;

    3、修改日记时,两个单选纽,默认是原属性;如果下面有别人的评论,选择成为privated后提交了会回转编辑页面并报错。

    需要修改代码的地方:

    1、ArticleInfo.java:需要加一个visibility字段;

    2、目标列表(有所有目标列表和搜索目标列表)的返回通过visibility过滤,所以在ArticleDB.getCPageList()中需要传入visibility标志,这个标志可以通过pageSize参数传入,如果是作者本人,则把原来的pageSize加上1000,这样,如果pageSize>1000了,就知道是作者本人了;为了防止在RSS订阅中泄漏私有内容,应该把RSS的条目数控制在100以下;

       日记列表也是如此,ArticleDB.getArtList()也是如此;

    3、所以,IndexAction.java,DiaryAction.java,DiaryResultAction.java,GoalResultAction.java,mygoals包下面的3个action,MyDiariesAction.java,RSSAction.java都需要作点变动;

      还有,下列jsp页面要改动:disall.jsp,WriteDiaryToday.jsp,writeAdvice.jsp,editAdvice.jsp。

      暂时分析到这里,下面可以动手修改了。

  2.   在帖子列表中得到所有公共帖子和作者本人的私有的帖子的方法不能通过在pageSize中传入参数来实现,需要在其中的条件参数中加上" AND (visilibity<>1 OR (visilibity=1 AND userID=" + currentUserID + "))"。

      另外,为了防止通过显示每篇帖子的url查看私人帖,需要在DisGoalContentAcrion.java,JoinGoalAction.java ,ToWriteAdviceAction.java,PostAdvice0Action.java,ToSubscribeMailAction.java,等显示帖子内容的代码中加上验证语句。

      另外,再查一下能否通过直接输入*.jsp的url来取得私人帖子。

  3. 为了在RSS订阅中便于控制私有的评论不被纳入RSS feed,决定,每篇帖子都加上visibility标志,0是public,1是privated.

Comments are closed.