svnno****@sourc*****
svnno****@sourc*****
2008年 11月 18日 (火) 22:57:14 JST
Revision: 1372 http://svn.sourceforge.jp/view?root=pal&view=rev&rev=1372 Author: shinsuke Date: 2008-11-18 22:57:14 +0900 (Tue, 18 Nov 2008) Log Message: ----------- added pull-down box to an user list page. Modified Paths: -------------- scheduler/trunk/src/main/java/jp/sf/pal/scheduler/SchedulerConstants.java scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/admin/OnetimeScheduleAction.java scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/admin/RepeatScheduleAction.java scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/OnetimeScheduleAction.java scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/RepeatScheduleAction.java scheduler/trunk/src/main/java/jp/sf/pal/scheduler/form/user/OnetimeScheduleForm.java scheduler/trunk/src/main/java/jp/sf/pal/scheduler/form/user/RepeatScheduleForm.java scheduler/trunk/src/main/java/jp/sf/pal/scheduler/service/UserInfoService.java scheduler/trunk/src/main/webapp/WEB-INF/view/user/onetimeSchedule/userlist.jsp scheduler/trunk/src/main/webapp/WEB-INF/view/user/repeatSchedule/userlist.jsp -------------- next part -------------- Modified: scheduler/trunk/src/main/java/jp/sf/pal/scheduler/SchedulerConstants.java =================================================================== --- scheduler/trunk/src/main/java/jp/sf/pal/scheduler/SchedulerConstants.java 2008-11-18 12:29:52 UTC (rev 1371) +++ scheduler/trunk/src/main/java/jp/sf/pal/scheduler/SchedulerConstants.java 2008-11-18 13:57:14 UTC (rev 1372) @@ -8,4 +8,8 @@ public static final String ONETIME_SCHEDULE = "ONETIME"; + public static final String ROLE_PREFIX = "role::"; + + public static final String GROUP_PREFIX = "group::"; + } Modified: scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/admin/OnetimeScheduleAction.java =================================================================== --- scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/admin/OnetimeScheduleAction.java 2008-11-18 12:29:52 UTC (rev 1371) +++ scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/admin/OnetimeScheduleAction.java 2008-11-18 13:57:14 UTC (rev 1372) @@ -344,7 +344,7 @@ public List<UserInfo> getAvailableUserItems() { // TODO should not get all user - return userInfoService.getAvailableUserList( + return userInfoService.getAvailableUserList(null, null, onetimeScheduleForm.selectedUsers, null); } Modified: scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/admin/RepeatScheduleAction.java =================================================================== --- scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/admin/RepeatScheduleAction.java 2008-11-18 12:29:52 UTC (rev 1371) +++ scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/admin/RepeatScheduleAction.java 2008-11-18 13:57:14 UTC (rev 1372) @@ -344,7 +344,7 @@ public List<UserInfo> getAvailableUserItems() { // TODO should not get all user - return userInfoService.getAvailableUserList( + return userInfoService.getAvailableUserList(null, null, repeatScheduleForm.selectedUsers, null); } Modified: scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/OnetimeScheduleAction.java =================================================================== --- scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/OnetimeScheduleAction.java 2008-11-18 12:29:52 UTC (rev 1371) +++ scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/OnetimeScheduleAction.java 2008-11-18 13:57:14 UTC (rev 1372) @@ -8,6 +8,7 @@ import javax.servlet.http.HttpServletRequest; +import jp.sf.pal.scheduler.SchedulerConstants; import jp.sf.pal.scheduler.common.CommonConstants; import jp.sf.pal.scheduler.common.dxo.PagerDxo; import jp.sf.pal.scheduler.common.util.CalendarUtil; @@ -279,9 +280,32 @@ @Execute(validator = false, input = "error.jsp") public String selectusers() { + if (onetimeScheduleForm.userGroup == null) { + String userId = request.getRemoteUser(); + List<Map<String, String>> userGroupList = userInfoService + .getUserGroupList(userId); + if (!userGroupList.isEmpty()) { + onetimeScheduleForm.userGroup = userGroupList.get(0).get( + "value"); + } + } return "userlist.jsp"; } + @Execute(validator = true, input = "error.jsp") + public String changeusergroup() { + if (onetimeScheduleForm.userGroup == null) { + String userId = request.getRemoteUser(); + List<Map<String, String>> userGroupList = userInfoService + .getUserGroupList(userId); + if (!userGroupList.isEmpty()) { + onetimeScheduleForm.userGroup = userGroupList.get(0).get( + "value"); + } + } + return "userlist.jsp"; + } + @Execute(validator = false, input = "error.jsp") public String setusers() { return "edit.jsp"; @@ -369,10 +393,31 @@ private void loadDetailsPageParameters() { } + public List<Map<String, String>> getUserGroupItems() { + String userId = request.getRemoteUser(); + return userInfoService.getUserGroupList(userId); + } + public List<UserInfo> getAvailableUserItems() { - // TODO should not get all user - return userInfoService.getAvailableUserList( - onetimeScheduleForm.selectedUsers, null); + String roleId = null; + String groupId = null; + if (onetimeScheduleForm.userGroup != null) { + if (onetimeScheduleForm.userGroup + .startsWith(SchedulerConstants.ROLE_PREFIX)) { + roleId = onetimeScheduleForm.userGroup + .substring(SchedulerConstants.ROLE_PREFIX.length()); + } else if (onetimeScheduleForm.userGroup + .startsWith(SchedulerConstants.GROUP_PREFIX)) { + groupId = onetimeScheduleForm.userGroup + .substring(SchedulerConstants.GROUP_PREFIX.length()); + } + } + if (roleId == null && groupId == null) { + return new ArrayList<UserInfo>(); + } else { + return userInfoService.getAvailableUserList(roleId, groupId, + onetimeScheduleForm.selectedUsers, null); + } } public List<UserInfo> getSelectedUserItems() { Modified: scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/RepeatScheduleAction.java =================================================================== --- scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/RepeatScheduleAction.java 2008-11-18 12:29:52 UTC (rev 1371) +++ scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/RepeatScheduleAction.java 2008-11-18 13:57:14 UTC (rev 1372) @@ -8,6 +8,7 @@ import javax.servlet.http.HttpServletRequest; +import jp.sf.pal.scheduler.SchedulerConstants; import jp.sf.pal.scheduler.common.CommonConstants; import jp.sf.pal.scheduler.common.dxo.PagerDxo; import jp.sf.pal.scheduler.common.util.CalendarUtil; @@ -278,9 +279,32 @@ @Execute(validator = false, input = "error.jsp") public String selectusers() { + if (repeatScheduleForm.userGroup == null) { + String userId = request.getRemoteUser(); + List<Map<String, String>> userGroupList = userInfoService + .getUserGroupList(userId); + if (!userGroupList.isEmpty()) { + repeatScheduleForm.userGroup = userGroupList.get(0) + .get("value"); + } + } return "userlist.jsp"; } + @Execute(validator = true, input = "error.jsp") + public String changeusergroup() { + if (repeatScheduleForm.userGroup == null) { + String userId = request.getRemoteUser(); + List<Map<String, String>> userGroupList = userInfoService + .getUserGroupList(userId); + if (!userGroupList.isEmpty()) { + repeatScheduleForm.userGroup = userGroupList.get(0) + .get("value"); + } + } + return "userlist.jsp"; + } + @Execute(validator = false, input = "error.jsp") public String setusers() { return "edit.jsp"; @@ -368,10 +392,31 @@ private void loadDetailsPageParameters() { } + public List<Map<String, String>> getUserGroupItems() { + String userId = request.getRemoteUser(); + return userInfoService.getUserGroupList(userId); + } + public List<UserInfo> getAvailableUserItems() { - // TODO should not get all user - return userInfoService.getAvailableUserList( - repeatScheduleForm.selectedUsers, null); + String roleId = null; + String groupId = null; + if (repeatScheduleForm.userGroup != null) { + if (repeatScheduleForm.userGroup + .startsWith(SchedulerConstants.ROLE_PREFIX)) { + roleId = repeatScheduleForm.userGroup + .substring(SchedulerConstants.ROLE_PREFIX.length()); + } else if (repeatScheduleForm.userGroup + .startsWith(SchedulerConstants.GROUP_PREFIX)) { + groupId = repeatScheduleForm.userGroup + .substring(SchedulerConstants.GROUP_PREFIX.length()); + } + } + if (roleId == null && groupId == null) { + return new ArrayList<UserInfo>(); + } else { + return userInfoService.getAvailableUserList(roleId, groupId, + repeatScheduleForm.selectedUsers, null); + } } public List<UserInfo> getSelectedUserItems() { Modified: scheduler/trunk/src/main/java/jp/sf/pal/scheduler/form/user/OnetimeScheduleForm.java =================================================================== --- scheduler/trunk/src/main/java/jp/sf/pal/scheduler/form/user/OnetimeScheduleForm.java 2008-11-18 12:29:52 UTC (rev 1371) +++ scheduler/trunk/src/main/java/jp/sf/pal/scheduler/form/user/OnetimeScheduleForm.java 2008-11-18 13:57:14 UTC (rev 1372) @@ -84,7 +84,7 @@ public String endTimeM; - @Required + @Required(target = "confirm,create,update,delete") @Maxbytelength(maxbytelength = 1) public String secret; @@ -115,6 +115,9 @@ public String[] selectedUsers; + @Required(target = "changeusergroup") + public String userGroup; + @IntegerType public String pageNumber; @@ -159,6 +162,7 @@ removedUsers = null; selectedUsers = null; secret = "F"; + userGroup = null; } public String getStartDate() { Modified: scheduler/trunk/src/main/java/jp/sf/pal/scheduler/form/user/RepeatScheduleForm.java =================================================================== --- scheduler/trunk/src/main/java/jp/sf/pal/scheduler/form/user/RepeatScheduleForm.java 2008-11-18 12:29:52 UTC (rev 1371) +++ scheduler/trunk/src/main/java/jp/sf/pal/scheduler/form/user/RepeatScheduleForm.java 2008-11-18 13:57:14 UTC (rev 1372) @@ -80,7 +80,7 @@ public String endTimeM; - @Required + @Required(target = "confirm,create,update,delete") @Maxbytelength(maxbytelength = 1) public String secret; @@ -115,6 +115,9 @@ public String[] selectedUsers; + @Required(target = "changeusergroup") + public String userGroup; + @IntegerType public String pageNumber; @@ -160,6 +163,7 @@ removedUsers = null; selectedUsers = null; secret = "F"; + userGroup = null; } public String getStartDate() { Modified: scheduler/trunk/src/main/java/jp/sf/pal/scheduler/service/UserInfoService.java =================================================================== --- scheduler/trunk/src/main/java/jp/sf/pal/scheduler/service/UserInfoService.java 2008-11-18 12:29:52 UTC (rev 1371) +++ scheduler/trunk/src/main/java/jp/sf/pal/scheduler/service/UserInfoService.java 2008-11-18 13:57:14 UTC (rev 1372) @@ -4,10 +4,19 @@ import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import jp.sf.pal.scheduler.SchedulerConstants; +import jp.sf.pal.scheduler.db.cbean.GroupMappingCB; +import jp.sf.pal.scheduler.db.cbean.RoleMappingCB; import jp.sf.pal.scheduler.db.cbean.UserInfoCB; +import jp.sf.pal.scheduler.db.exbhv.GroupMappingBhv; +import jp.sf.pal.scheduler.db.exbhv.RoleMappingBhv; import jp.sf.pal.scheduler.db.exbhv.UserInfoBhv; +import jp.sf.pal.scheduler.db.exentity.GroupMapping; +import jp.sf.pal.scheduler.db.exentity.RoleMapping; import jp.sf.pal.scheduler.db.exentity.UserInfo; public class UserInfoService implements Serializable { @@ -16,6 +25,10 @@ private transient UserInfoBhv userInfoBhv; + private transient RoleMappingBhv roleMappingBhv; + + private transient GroupMappingBhv groupMappingBhv; + public void initUserInfo(String userId) { UserInfoCB cb = new UserInfoCB(); cb.query().setUserId_Equal(userId); @@ -33,23 +46,70 @@ } } - public List<UserInfo> getAvailableUserList(String[] selectedUsers, - String userId) { - UserInfoCB cb = new UserInfoCB(); + public List<UserInfo> getAvailableUserList(String roleId, String groupId, + String[] selectedUsers, String userId) { + if (roleId == null && groupId == null) { + UserInfoCB cb = new UserInfoCB(); - // setup + // setup - if (userId != null) { - cb.query().setUserId_Equal(userId); - } - if (selectedUsers != null) { - List<String> excludedUserIdList = new ArrayList<String>(); - for (String uid : selectedUsers) { - excludedUserIdList.add(uid); + if (userId != null) { + cb.query().setUserId_Equal(userId); } - cb.query().setUserId_NotInScope(excludedUserIdList); + if (selectedUsers != null) { + List<String> excludedUserIdList = new ArrayList<String>(); + for (String uid : selectedUsers) { + excludedUserIdList.add(uid); + } + cb.query().setUserId_NotInScope(excludedUserIdList); + } + return userInfoBhv.selectList(cb); + } else if (roleId != null) { + RoleMappingCB cb = new RoleMappingCB(); + + // setup + cb.setupSelect_UserInfo(); + + if (selectedUsers != null) { + List<String> excludedUserIdList = new ArrayList<String>(); + for (String uid : selectedUsers) { + excludedUserIdList.add(uid); + } + cb.query().setUserId_NotInScope(excludedUserIdList); + } + cb.query().setRoleId_Equal(roleId); + List<RoleMapping> roleMappingList = roleMappingBhv.selectList(cb); + + List<UserInfo> userInfoList = new ArrayList<UserInfo>(); + for (RoleMapping roleMapping : roleMappingList) { + userInfoList.add(roleMapping.getUserInfo()); + } + return userInfoList; + } else if (groupId != null) { + GroupMappingCB cb = new GroupMappingCB(); + + // setup + cb.setupSelect_UserInfo(); + + if (selectedUsers != null) { + List<String> excludedUserIdList = new ArrayList<String>(); + for (String uid : selectedUsers) { + excludedUserIdList.add(uid); + } + cb.query().setUserId_NotInScope(excludedUserIdList); + } + cb.query().setGroupId_Equal(groupId); + List<GroupMapping> groupMappingList = groupMappingBhv + .selectList(cb); + + List<UserInfo> userInfoList = new ArrayList<UserInfo>(); + for (GroupMapping groupMapping : groupMappingList) { + userInfoList.add(groupMapping.getUserInfo()); + } + return userInfoList; + } else { + return new ArrayList<UserInfo>(); } - return userInfoBhv.selectList(cb); } public List<UserInfo> getSelectedUserList(String[] selectedUsers) { @@ -71,6 +131,50 @@ return userInfoBhv.selectList(cb); } + public List<Map<String, String>> getUserGroupList(String userId) { + List<Map<String, String>> userGroupList = new ArrayList<Map<String, String>>(); + + RoleMappingCB cb1 = new RoleMappingCB(); + // setup + cb1.setupSelect_RoleInfo(); + cb1.query().setUserId_Equal(userId); + cb1.query().addOrderBy_RoleId_Asc(); + List<RoleMapping> roleMappingList = roleMappingBhv.selectList(cb1); + for (RoleMapping roleMapping : roleMappingList) { + Map<String, String> map = new HashMap<String, String>(); + map.put("value", SchedulerConstants.ROLE_PREFIX + + roleMapping.getRoleId()); + String name = roleMapping.getRoleInfo().getName(); + if (name == null) { + map.put("label", roleMapping.getRoleId()); + } else { + map.put("label", name); + } + userGroupList.add(map); + } + + GroupMappingCB cb2 = new GroupMappingCB(); + // setup + cb2.setupSelect_GroupInfo(); + cb2.query().setUserId_Equal(userId); + cb2.query().addOrderBy_GroupId_Asc(); + List<GroupMapping> groupMappingList = groupMappingBhv.selectList(cb2); + for (GroupMapping groupMapping : groupMappingList) { + Map<String, String> map = new HashMap<String, String>(); + map.put("value", SchedulerConstants.GROUP_PREFIX + + groupMapping.getGroupId()); + String name = groupMapping.getGroupInfo().getName(); + if (name == null) { + map.put("label", groupMapping.getGroupId()); + } else { + map.put("label", name); + } + userGroupList.add(map); + } + + return userGroupList; + } + public UserInfoBhv getUserInfoBhv() { return userInfoBhv; } @@ -78,4 +182,20 @@ public void setUserInfoBhv(UserInfoBhv userInfoBhv) { this.userInfoBhv = userInfoBhv; } + + public RoleMappingBhv getRoleMappingBhv() { + return roleMappingBhv; + } + + public void setRoleMappingBhv(RoleMappingBhv roleMappingBhv) { + this.roleMappingBhv = roleMappingBhv; + } + + public GroupMappingBhv getGroupMappingBhv() { + return groupMappingBhv; + } + + public void setGroupMappingBhv(GroupMappingBhv groupMappingBhv) { + this.groupMappingBhv = groupMappingBhv; + } } Modified: scheduler/trunk/src/main/webapp/WEB-INF/view/user/onetimeSchedule/userlist.jsp =================================================================== --- scheduler/trunk/src/main/webapp/WEB-INF/view/user/onetimeSchedule/userlist.jsp 2008-11-18 12:29:52 UTC (rev 1371) +++ scheduler/trunk/src/main/webapp/WEB-INF/view/user/onetimeSchedule/userlist.jsp 2008-11-18 13:57:14 UTC (rev 1372) @@ -40,6 +40,29 @@ <html:hidden property="endTime"/> <html:hidden property="content"/> <div class="form-table" style="float:left;width: 200px;"> +<table style="margin-bottom: 5px;"> + <thead> + <tr> + <th>User Group</th> + </tr> + </thead> + <tbody> + <tr> + <td> +<html:select property="userGroup" style="width:180px;"> + <c:forEach var="u" varStatus="s" items="${userGroupItems}"> + <html:option value="${u.value}">${f:h(u.label)}</html:option> + </c:forEach> +</html:select> + </td> + </tr> + <tr> + <td style="text-align: center;"> +<input type="submit" name="changeusergroup" value="Display"/> + </td> + </tr> + </tbody> +</table> <table> <thead> <tr> @@ -49,8 +72,7 @@ <tbody> <tr> <td> -<html:select property="addedUsers" multiple="true" size="10" style="width:180px;"> -<!-- TODO i18n --> +<html:select property="addedUsers" multiple="true" size="8" style="width:180px;"> <c:forEach var="u" varStatus="s" items="${availableUserItems}"> <html:option value="${f:u(u.userId)}"><bean:message key="display.name" arg0="${f:h(u.nameArg0)}" arg1="${f:h(u.nameArg1)}" arg2="${f:h(u.nameArg2)}"/></html:option> </c:forEach> @@ -60,7 +82,7 @@ </tbody> </table> </div> -<div style="float:left;width: 100px;height: 200px;text-align: center;padding-top:60px;"> +<div style="float:left;width: 100px;text-align: center;padding-top:100px;"> <input type="submit" name="addusers" value="Add >>"/> <input type="submit" name="removeusers" value="<< Remove"/> </div> Modified: scheduler/trunk/src/main/webapp/WEB-INF/view/user/repeatSchedule/userlist.jsp =================================================================== --- scheduler/trunk/src/main/webapp/WEB-INF/view/user/repeatSchedule/userlist.jsp 2008-11-18 12:29:52 UTC (rev 1371) +++ scheduler/trunk/src/main/webapp/WEB-INF/view/user/repeatSchedule/userlist.jsp 2008-11-18 13:57:14 UTC (rev 1372) @@ -41,6 +41,29 @@ <html:hidden property="content"/> <html:hidden property="type"/> <div class="form-table" style="float:left;width: 200px;"> +<table style="margin-bottom: 5px;"> + <thead> + <tr> + <th>User Group</th> + </tr> + </thead> + <tbody> + <tr> + <td> +<html:select property="userGroup" style="width:180px;"> + <c:forEach var="u" varStatus="s" items="${userGroupItems}"> + <html:option value="${u.value}">${f:h(u.label)}</html:option> + </c:forEach> +</html:select> + </td> + </tr> + <tr> + <td style="text-align: center;"> +<input type="submit" name="changeusergroup" value="Display"/> + </td> + </tr> + </tbody> +</table> <table> <thead> <tr> @@ -50,8 +73,7 @@ <tbody> <tr> <td> -<html:select property="addedUsers" multiple="true" size="10" style="width:180px;"> -<!-- TODO i18n --> +<html:select property="addedUsers" multiple="true" size="8" style="width:180px;"> <c:forEach var="u" varStatus="s" items="${availableUserItems}"> <html:option value="${f:u(u.userId)}"><bean:message key="display.name" arg0="${f:h(u.nameArg0)}" arg1="${f:h(u.nameArg1)}" arg2="${f:h(u.nameArg2)}"/></html:option> </c:forEach> @@ -61,7 +83,7 @@ </tbody> </table> </div> -<div style="float:left;width: 100px;height: 200px;text-align: center;padding-top:60px;"> +<div style="float:left;width: 100px;text-align: center;padding-top:100px;"> <input type="submit" name="addusers" value="Add >>"/> <input type="submit" name="removeusers" value="<< Remove"/> </div>