关于Liferay的deactivate user的研究
2013-08-12 11:10
357 查看
当用户在控制面板中选择deactivate user的时候:
它会去走到EditUserAction的processAction()方法,在判断清楚动作是Constants.DEACTIVATE之后,它会调用deleteUser()方法:
这段代码如下:
这个方法接下来会利用动态代理机制调用UserServiceImpl的updateStatus(long userId,int status)方法:
这个方法从调试信息中可以看到,我们要操作的用户id是12113,然后状态位要改成5,这个5应该是对应的Deactivate。
最终,这个方法会调用UserLocalServiceImpl.updateStatus(userId,status)方法:
它其实是对用户表User_进行了操作,并且吧其中UserId 为12113(Jessica这个用户)的状态为改成了5(deactivate):
这个表的DDL如下:
特别注意第2个字段(UserId)和最后一个字段(Status).
而当我们进行操作的时候,很容易从Hypersonic数据库的log中看到我们更新这个字段的操作(不过不明白为什么Update要拆分2条,一条是Delete,一条是insert)
总结:
(1)其实当Deactivate用户时候,并没有真正让用户信息从User_表中删除,仅仅是吧Status位置改成Deactivate.
(2)用户的Restore,Deactivate,Delete操作都合并在了deleteUser()方法中。
(3)Hypersonic操作很不智能,Update方法必须被拆分为一个Delete加一个Insert方法
它会去走到EditUserAction的processAction()方法,在判断清楚动作是Constants.DEACTIVATE之后,它会调用deleteUser()方法:
这段代码如下:
protected void deleteUsers(ActionRequest actionRequest) throws Exception { String cmd = ParamUtil.getString(actionRequest, Constants.CMD); long[] deleteUserIds = StringUtil.split( ParamUtil.getString(actionRequest, "deleteUserIds"), 0L); for (int i = 0; i < deleteUserIds.length; i++) { if (cmd.equals(Constants.DEACTIVATE) || cmd.equals(Constants.RESTORE)) { int status = WorkflowConstants.STATUS_APPROVED; if (cmd.equals(Constants.DEACTIVATE)) { status = WorkflowConstants.STATUS_INACTIVE; } UserServiceUtil.updateStatus(deleteUserIds[i], status); } else { UserServiceUtil.deleteUser(deleteUserIds[i]); } } }可以发现deleteUser不仅仅是只删除用户,它是几种情况的糅合体,不仅仅是Delete,而且Deactivate,Restore都会走到这个方法中,我们因为是DEACTIVATE,所以走的分支是第16行,最终它先获取我们操作的用户的id,然后会调用UserServiceUtil.updateStatus(deleteUserIds[i],status)方法:
这个方法接下来会利用动态代理机制调用UserServiceImpl的updateStatus(long userId,int status)方法:
这个方法从调试信息中可以看到,我们要操作的用户id是12113,然后状态位要改成5,这个5应该是对应的Deactivate。
最终,这个方法会调用UserLocalServiceImpl.updateStatus(userId,status)方法:
它其实是对用户表User_进行了操作,并且吧其中UserId 为12113(Jessica这个用户)的状态为改成了5(deactivate):
这个表的DDL如下:
特别注意第2个字段(UserId)和最后一个字段(Status).
而当我们进行操作的时候,很容易从Hypersonic数据库的log中看到我们更新这个字段的操作(不过不明白为什么Update要拆分2条,一条是Delete,一条是insert)
总结:
(1)其实当Deactivate用户时候,并没有真正让用户信息从User_表中删除,仅仅是吧Status位置改成Deactivate.
(2)用户的Restore,Deactivate,Delete操作都合并在了deleteUser()方法中。
(3)Hypersonic操作很不智能,Update方法必须被拆分为一个Delete加一个Insert方法
相关文章推荐
- 关于Liferay中用户接受用户协议的研究 推荐
- 【XJB研究】关于几种LCA求法的时间
- 关于rem自适应的一点研究
- C++关于不能返回局部变量的指针的研究
- 工具条研究手记(8)- 关于工具条按钮文字的显示
- 关于CT107D开发板矩阵按键前两列不工作问题的研究
- 关于TileBrush中Viewbox,Viewport以及Stretch,AlignmentX/Y的详细研究
- 关于AOP的研究(转)
- 【SAP HANA】关于SAP HANA中带层次结构的Attribute View创建、激活状况下在系统中生成对象的研究
- 关于android推送服务-点击通知栏回不到当前应用程序的问题研究
- 关于IE浏览器缓存问题研究和chrome,firefox,浏览器隐私模式的体会。
- 关于2016年9-10月份的研究方向
- 关于Android中图片大小、内存占用与drawable文件夹关系的研究与分析
- 关于Java占用内存的研究
- 关于 HTML5、Jquery、Phonegap 跨域问题的研究
- 关于研究思考的一些感悟
- 最近正在研究Liferay portal 各种问题--
- 关于IPTV中的流传输技术研究与分析
- 关于Python的super用法研究(zt)
- 关于IFRAME 自适应高度的研究