Coverage Report - jp.co.y_net.amm.page.GroupListPage
 
Classes in this File Line Coverage Branch Coverage Complexity
GroupListPage
0%
0/55
0%
0/6
0
GroupListPage$1
0%
0/2
N/A
0
GroupListPage$10
0%
0/24
0%
0/2
0
GroupListPage$11
0%
0/21
0%
0/2
0
GroupListPage$11$1
0%
0/12
0%
0/2
0
GroupListPage$11$2
0%
0/10
0%
0/2
0
GroupListPage$11$3
0%
0/11
0%
0/2
0
GroupListPage$11$4
0%
0/15
0%
0/2
0
GroupListPage$11$5
0%
0/11
0%
0/2
0
GroupListPage$12
0%
0/2
N/A
0
GroupListPage$2
0%
0/8
0%
0/2
0
GroupListPage$3
0%
0/15
0%
0/8
0
GroupListPage$4
0%
0/3
0%
0/2
0
GroupListPage$5
0%
0/3
N/A
0
GroupListPage$6
0%
0/3
0%
0/2
0
GroupListPage$7
0%
0/3
N/A
0
GroupListPage$8
0%
0/13
N/A
0
GroupListPage$8$1
0%
0/13
0%
0/2
0
GroupListPage$9
0%
0/2
N/A
0
 
 1  0
 package jp.co.y_net.amm.page;
 2  
 
 3  
 import java.util.ArrayList;
 4  
 import java.util.Collections;
 5  
 import java.util.Date;
 6  
 import java.util.List;
 7  
 
 8  
 import jp.co.y_net.amm.AppSession;
 9  
 import jp.co.y_net.amm.AppSession.LoginUser;
 10  
 import jp.co.y_net.amm.common.AppStringUtils;
 11  
 import jp.co.y_net.amm.common.AppUtils;
 12  
 import jp.co.y_net.amm.dao.Grp;
 13  
 import jp.co.y_net.amm.dao.Grpusr;
 14  
 import jp.co.y_net.amm.dao.Usr;
 15  
 
 16  
 import org.apache.wicket.ajax.AjaxRequestTarget;
 17  
 import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator;
 18  
 import org.apache.wicket.markup.html.WebMarkupContainer;
 19  
 import org.apache.wicket.markup.html.basic.Label;
 20  
 import org.apache.wicket.markup.html.form.Form;
 21  
 import org.apache.wicket.markup.html.form.TextField;
 22  
 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
 23  
 import org.apache.wicket.markup.html.list.ListItem;
 24  
 import org.apache.wicket.markup.html.list.PageableListView;
 25  
 import org.apache.wicket.markup.html.panel.FeedbackPanel;
 26  
 import org.apache.wicket.model.IModel;
 27  
 import org.apache.wicket.model.LoadableDetachableModel;
 28  
 import org.apache.wicket.model.Model;
 29  
 import org.apache.wicket.model.PropertyModel;
 30  
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 31  
 
 32  
 public class GroupListPage extends CommonFrameA {
 33  
     private static final long serialVersionUID = 1L;
 34  
 
 35  
     /*
 36  
      * 画面入力値
 37  
      */
 38  
     /* グループ作成.名称 */
 39  0
     private String groupnameValue = "";
 40  
     
 41  
     /**
 42  
      * ログインチェック定義
 43  
      * @see jp.co.y_net.amm.page.AppPage#validateLogin()
 44  
      */
 45  
     @Override
 46  
     public boolean validateLogin() {
 47  0
         if(AppSession.get().isLogin()) {
 48  0
             return true;
 49  
         }
 50  0
         return false;
 51  
     }
 52  
     
 53  0
     public GroupListPage(PageParameters pageParams) {
 54  
         
 55  
         /* 共通戻るリンクの設置 */
 56  0
         createCommonBackLinks();
 57  
         
 58  
         /* フィードバックメッセージ */
 59  0
         final FeedbackPanel feedbackPanel = new FeedbackPanel("feedback");
 60  0
         feedbackPanel.setOutputMarkupId(true);
 61  0
         add(feedbackPanel);
 62  
         
 63  
         /* 入力フォーム */
 64  0
         Form<Void> form  = new Form<Void>("form");
 65  0
         add(form);
 66  
         
 67  
         /* 初期表示エラーチェック・共通変数設定 --------------------------------------------------------------------- */
 68  0
         form.setVisible(false); // Formはエラーチェックが完了するまで非表示とする。
 69  
 
 70  0
         final LoginUser loginUser  = AppSession.get().getLoginUser();
 71  0
         if(loginUser == null) {
 72  0
             error("ログイン情報が取得できません。");
 73  0
             return;
 74  
         }
 75  0
         final Integer loginUserId = loginUser.getUsrid();
 76  
         
 77  0
         if(hasInputError()) return; // ----------エラーがあれば中止
 78  0
         form.setVisible(true);
 79  
         
 80  
         /* Form内の設定 ----------------------------------------------------------------------------------------------*/
 81  
         /* 完了メッセージ */
 82  0
         Model<String> resultMessageModel = new Model<String>() {
 83  
 //            @Override
 84  
 //            public String getObject() {
 85  
 //                if(complete) {
 86  
 //                    return "";
 87  
 //                }
 88  
 //                return "";
 89  
 //            }
 90  
         };
 91  0
         final Label resutlMessage = new Label("resutlMessage", resultMessageModel);
 92  0
         resutlMessage.setOutputMarkupId(true);
 93  0
         form.add(resutlMessage);
 94  
         
 95  
         /* -----------------------------------------------------------------------------------------------------------*/
 96  
         
 97  
         /*
 98  
          * listA = 管理グループ一覧のモデル
 99  
          *  リクエストごとにloadが実行される
 100  
          */
 101  0
         final IModel<List<Grp>> listAModel = new LoadableDetachableModel<List<Grp>>() {
 102  
             /*  */
 103  
             @Override
 104  
             protected List<Grp> load() {
 105  
                 
 106  0
                 Grp cndGrp = new Grp();
 107  
                 
 108  0
                 if(Usr.KIND_運営管理者 == loginUser.getKind()) {
 109  
                     // 運営管理者は全て表示
 110  
                 } else {
 111  0
                     cndGrp.setAdminusrid(loginUserId); // 自分の管理しているグループに絞り込む
 112  
                 }
 113  
                 
 114  0
                 List<Grp> list = grpDao.get(cndGrp);
 115  
                 
 116  
                 /* 作成日の新しい順でソート*/
 117  0
                 Collections.sort(list, new Grp.CreatedateComparator(true));
 118  0
                 return list;
 119  
             }
 120  
             
 121  
         };
 122  
         /*
 123  
          * listB = 参加グループ一覧のモデル
 124  
          *  リクエストごとにloadが実行される
 125  
          */
 126  0
         final IModel<List<Grpusr>> listBModel = new LoadableDetachableModel<List<Grpusr>>() {
 127  
             @Override
 128  
             protected List<Grpusr> load() {
 129  0
                 Grpusr cndGrpusr = new Grpusr();
 130  0
                 cndGrpusr.setUsrid(loginUserId);
 131  0
                 List<Grpusr> list = grpusrDao.get(cndGrpusr);
 132  
                 
 133  
                 /* 
 134  
                  *・自分が管理者のグループは除外する
 135  
                  *・脱退者は除外する
 136  
                  */
 137  0
                 List<Grpusr> tmp = new ArrayList<Grpusr>();
 138  0
                 for(Grpusr gu: list) {
 139  0
                     Grp g = grpDao.getByGrpid(gu.getGrpid());
 140  0
                     if(g == null) {
 141  
                         // 追加しない
 142  0
                     } else if(g.getAdminusrid().equals(loginUserId)) {
 143  
                         // 追加しない
 144  0
                     } else if(Grpusr.STATUS_脱退.equals(gu.getStatus())) {
 145  
                         // 追加しない
 146  
                     } else {
 147  0
                         tmp.add(gu);
 148  
                     }
 149  
                     
 150  
                 }
 151  0
                 list = tmp;
 152  
                 
 153  
                 /* 参加日の新しい順でソート*/
 154  0
                 Collections.sort(list, new Grpusr.JoindateComparator(true));
 155  0
                 return list;
 156  
             }
 157  
         };
 158  
         
 159  
         
 160  
         /* コンテナの設定 ------------------------------------------------------------------------------------------------*/
 161  
         /* 
 162  
          * 画面の部分更新の対象となるコンテナ
 163  
          *  ページをインスタンス化するときに初期非表示としてはいけない。
 164  
          */
 165  
         
 166  
         /* 管理グループ一覧 */
 167  0
         final WebMarkupContainer listAContainer = new WebMarkupContainer("listAContainer");
 168  0
         listAContainer.setOutputMarkupId(true);
 169  0
         form.add(listAContainer);
 170  
         
 171  0
         final WebMarkupContainer listAContainerData = new WebMarkupContainer("listAContainerData"){
 172  
             @Override
 173  
             public boolean isVisible() {
 174  0
                 return listAModel.getObject().isEmpty() == false;
 175  
             }
 176  
         };
 177  0
         listAContainerData.setOutputMarkupPlaceholderTag(true);// 初期非表示の場合に、後から表示できるようにする
 178  0
         listAContainer.add(listAContainerData);
 179  
         
 180  0
         final WebMarkupContainer listAContainerNoData = new WebMarkupContainer("listAContainerNoData"){
 181  
             @Override
 182  
             public boolean isVisible() {
 183  0
                 return listAModel.getObject().isEmpty();
 184  
             }
 185  
         };
 186  0
         listAContainerNoData.setOutputMarkupPlaceholderTag(true);// 初期非表示の場合に、後から表示できるようにする
 187  0
         listAContainer.add(listAContainerNoData);
 188  
         
 189  
         /* 参加グループ一覧 */
 190  0
         final WebMarkupContainer listBContainer = new WebMarkupContainer("listBContainer");
 191  0
         listBContainer.setOutputMarkupId(true);
 192  0
         form.add(listBContainer);
 193  
         
 194  0
         final WebMarkupContainer listBContainerData = new WebMarkupContainer("listBContainerData"){
 195  
             @Override
 196  
             public boolean isVisible() {
 197  0
                 return listBModel.getObject().isEmpty() == false;
 198  
             }
 199  
         };
 200  0
         listBContainerData.setOutputMarkupPlaceholderTag(true);// 初期非表示の場合に、後から表示できるようにする
 201  0
         listBContainer.add(listBContainerData);
 202  
         
 203  0
         final WebMarkupContainer listBContainerNoData = new WebMarkupContainer("listBContainerNoData"){
 204  
             @Override
 205  
             public boolean isVisible() {
 206  0
                 return listBModel.getObject().isEmpty();
 207  
             }
 208  
         };
 209  0
         listBContainerNoData.setOutputMarkupPlaceholderTag(true);// 初期非表示の場合に、後から表示できるようにする
 210  0
         listBContainer.add(listBContainerNoData);
 211  
         
 212  
         /* 一覧の設定 ------------------------------------------------------------------------------------------------*/
 213  
         
 214  
         
 215  
         /*listA = 管理グループ一覧 ------------------------------------------------------------------- */
 216  0
         final PageableListView<Grp> listA = new PageableListView<Grp>("listA", listAModel, 5) {
 217  
             private static final long serialVersionUID = 1L;
 218  
             @Override
 219  
             protected void populateItem(ListItem<Grp> item) {
 220  
                 
 221  0
                 final Grp grp = item.getModelObject();
 222  
 
 223  0
                 item.add(new Label("groupname", grp.getName())); // グループ名
 224  0
                 item.add(new Label("createdate" , AppUtils.toStrYyyyMMdd(grp.getCreatedate()))); // 作成日
 225  0
                 item.add(new Label("membercount" , grpusrDao.getMembercount参加中AsString(grp.getGrpid()))); // 参加人数
 226  
                 
 227  0
                 String adminname = usrDao.getByUsrid(grp.getAdminusrid()).getName();
 228  0
                 item.add(new Label("leadername" , adminname)); // 管理者
 229  
                 
 230  
                 /* 「メンバーリストへ」*/
 231  0
                 PageParameters param = new PageParameters();
 232  0
                 param.add("grpid", grp.getGrpid());
 233  0
                 item.add(new BookmarkablePageLink<Void>("goMemberlist", GroupMemberListPage.class, param));
 234  
                 
 235  
                 /* グループ削除 ボタン */
 236  0
                 item.add(new ConfirmAjaxButton("buttonDelete"){
 237  
                     
 238  
                     @Override
 239  
                     protected String getConfirmMessage() {
 240  0
                         return "すべてのメンバーを脱退させ、グループを削除します。";
 241  
                     }
 242  
                     @Override
 243  
                     void executableWork() {
 244  
                         /* データ操作 */
 245  0
                         grpDao.removeLogical(grp, loginUserId); // 【論理削除】
 246  
                         
 247  
                         // 紐づくメンバーも削除
 248  0
                         Grpusr members = new Grpusr();
 249  0
                         members.setGrpid(grp.getGrpid());
 250  0
                         for(Grpusr member: grpusrDao.get(members)) {
 251  0
                             member.set脱退設定();
 252  0
                             grpusrDao.update(member, loginUserId);
 253  
                         }
 254  0
                     }
 255  
                     @Override
 256  
                     void executeAfter(AjaxRequestTarget target) {
 257  
                         
 258  
                         /* メッセージ表示 */
 259  0
                         feedbackPanel.info(grp.getName() + " のすべてのメンバーを脱退させ、グループを削除しました。");
 260  
 //                        /* LoadableDetachableModel#load を再実行させるためのデタッチ */
 261  
 //                        listAModel.detach(); 
 262  
                         
 263  0
                         target.add(listAContainer);
 264  0
                     }
 265  
                 });
 266  0
             }
 267  
         };
 268  0
         listAContainerData.add(listA);
 269  
         
 270  
         /* ページングの部品 */
 271  0
         final AjaxPagingNavigator pagingListA = new AjaxPagingNavigator("pagingListA", listA){};
 272  0
         listAContainerData.add(pagingListA);
 273  
 
 274  
         
 275  
         /* グループ作成.名称 */
 276  0
         TextField<String> inputgroupname = new TextField<String>("inputgroupname", new PropertyModel<String>(this, "groupnameValue"));
 277  0
         listAContainer.add(inputgroupname);
 278  
         
 279  
         /* グループを作成する ボタン */
 280  0
         listAContainer.add(new ConfirmAjaxButton("buttonCreateGroup"){
 281  
             @Override
 282  
             protected String getConfirmMessage() {
 283  0
                 return "グループを作成します。";
 284  
             }
 285  
             @Override
 286  
             boolean executeBefore() {
 287  
                 /* 入力値変換 */
 288  0
                 groupnameValue = AppStringUtils.trim(groupnameValue);
 289  
                 /* 入力値検査 */
 290  0
                 validItem(groupnameValue, "グループ名", 1, 512);
 291  0
                 if(hasInputError()) return false; // ここまででエラーチェック
 292  0
                 return true;
 293  
             }
 294  
             @Override
 295  
             void executableWork() {
 296  
                 /* データ更新 */
 297  0
                 Grp group = new Grp();
 298  0
                 group.setName(groupnameValue);
 299  0
                 group.setAdminusrid(loginUser.getUsrid());
 300  0
                 group.setCreatedate(AppUtils.createNowLong());
 301  0
                 grpDao.add(group, loginUserId); // 【データ更新】
 302  
                 
 303  0
                 Grpusr member = new Grpusr();
 304  0
                 member.setGrpid(group.getGrpid());
 305  0
                 member.setUsrid(loginUser.getUsrid());
 306  0
                 member.setJoindate(AppUtils.createNowLong());
 307  0
                 member.setAdmindate(AppUtils.createNowLong());
 308  0
                 member.setStatus(Grpusr.STATUS_参加中);
 309  0
                 grpusrDao.add(member, loginUserId); // 【データ更新】
 310  0
             }
 311  
             @Override
 312  
             void executeAfter(AjaxRequestTarget target) {
 313  
                 
 314  
                 /* メッセージ表示 */
 315  0
                 feedbackPanel.info("グループ「" + groupnameValue + "」を作成しました。");
 316  
                 
 317  
                 /* 入力項目初期化 */
 318  0
                 groupnameValue = "";
 319  
                 
 320  
                 /* 画面部品の更新 */
 321  0
                 target.add(listAContainer); // 管理グループ一覧領域
 322  0
             }
 323  
         });
 324  
 
 325  
 
 326  
         /*listB = 参加グループ一覧 ------------------------------------------------------------------- */
 327  
         
 328  0
         final PageableListView<Grpusr> listB = new PageableListView<Grpusr>("listB", listBModel, 20) {
 329  
             private static final long serialVersionUID = 1L;
 330  
             @Override
 331  
             protected void populateItem(ListItem<Grpusr> item) {
 332  
                 
 333  0
                 final Grpusr grpusr = item.getModelObject();
 334  0
                 final Grp grp = grpDao.getByGrpid(grpusr.getGrpid());
 335  
                 
 336  0
                 final String groupname = grp.getName();
 337  
 
 338  0
                 item.add(new Label("groupname", groupname)); // グループ名
 339  0
                 item.add(new Label("membercount" , grpusrDao.getMembercount参加中AsString(grp.getGrpid()))); // 参加人数
 340  
                 
 341  0
                 String adminname = usrDao.getByUsrid(grp.getAdminusrid()).getName();
 342  0
                 item.add(new Label("leadername" , adminname)); // 管理者
 343  
                 
 344  
                 
 345  0
                 Date joindate = AppUtils.toDate(grpusr.getJoindate());
 346  0
                 String joindateStr = "";
 347  0
                 if(joindate != null) {
 348  0
                     joindateStr = AppUtils.toStrYyyyMMdd(joindate);
 349  
                 }
 350  0
                 item.add(new Label("joindate" , joindateStr)); // 参加日
 351  0
                 item.add(new Label("status" , grpusr.getStatus合算())); // 状態
 352  
                 
 353  
                 
 354  
                 /* 参加する ボタン */
 355  0
                 item.add(new ConfirmAjaxButton("buttonJoin"){
 356  
                     @Override
 357  
                     protected String getConfirmMessage() {
 358  0
                         return "グループ「" + groupname + "」に参加します。";
 359  
                     }
 360  
                     @Override
 361  
                     void executableWork() {
 362  
                         /* データ操作 */
 363  0
                         grpusr.setJoindate(AppUtils.createNowLong()); // 参加日時
 364  0
                         grpusr.setStatus(Grpusr.STATUS_参加中);
 365  0
                         grpusrDao.update(grpusr, loginUserId); // 【データ更新】
 366  0
                     }
 367  
                     @Override
 368  
                     void executeAfter(AjaxRequestTarget target) {
 369  
                         
 370  
                         /* メッセージ表示 */
 371  0
                         feedbackPanel.info("グループ「" + groupname + "」に参加しました。");
 372  
 
 373  
                         /* 画面部品の更新 */
 374  0
                         target.add(listBContainer); // 参加グループ一覧領域
 375  0
                     }
 376  
                     @Override
 377  
                     public boolean isVisible() {
 378  
                         /* 招待中状態で無ければ非表示 */
 379  0
                         if(Grpusr.STATUS_招待中.equals(grpusr.getStatus()) == false) return false;
 380  
                         
 381  0
                         return true;
 382  
                     }
 383  
                 });
 384  
                 /* 参加しない ボタン */
 385  0
                 item.add(new ConfirmAjaxButton("buttonReject"){
 386  
                     @Override
 387  
                     protected String getConfirmMessage() {
 388  0
                         return "グループ「" + groupname + "」への参加を辞退します。";
 389  
                     }
 390  
                     @Override
 391  
                     void executableWork() {
 392  
                         /* データ操作 */
 393  0
                         grpusrDao.removeLogical(grpusr, loginUserId); // 【論理削除】
 394  0
                     }
 395  
                     @Override
 396  
                     void executeAfter(AjaxRequestTarget target) {
 397  
                         
 398  
                         /* メッセージ表示 */
 399  0
                         feedbackPanel.info("グループ「" + groupname + "」への参加を辞退しました。");
 400  
                         
 401  
                         /* 画面部品の更新 */
 402  0
                         target.add(listBContainer); // 参加グループ一覧領域
 403  0
                     }
 404  
                     @Override
 405  
                     public boolean isVisible() {
 406  
                         /* 招待中状態で無ければ非表示 */
 407  0
                         if(Grpusr.STATUS_招待中.equals(grpusr.getStatus()) == false) return false;
 408  
                         
 409  0
                         return true;
 410  
                     }
 411  
                 });
 412  
                 /* 脱退する ボタン */
 413  0
                 item.add(new ConfirmAjaxButton("buttonLeave"){
 414  
                     @Override
 415  
                     protected String getConfirmMessage() {
 416  0
                         return "グループ「" + groupname + "」から脱退します。";
 417  
                     }
 418  
                     @Override
 419  
                     void executableWork() {
 420  
                         /* データ操作 */
 421  0
                         grpusr.set脱退設定();
 422  0
                         grpusrDao.update(grpusr, loginUserId); // 【データ更新】
 423  0
                     }
 424  
                     @Override
 425  
                     void executeAfter(AjaxRequestTarget target) {
 426  
                         
 427  
                         /* メッセージ表示 */
 428  0
                         feedbackPanel.info("グループ「" + groupname + "」から脱退しました。");
 429  
                         
 430  
                         /* 画面部品の更新 */
 431  0
                         target.add(listBContainer); // 参加グループ一覧領域
 432  0
                     }
 433  
                     @Override
 434  
                     public boolean isVisible() {
 435  0
                         if (Grpusr.STATUS_参加中.equals(grpusr.getStatus()) == false) return false;
 436  0
                         return true;
 437  
                     }
 438  
                 });
 439  
                 
 440  
                 /* 承諾する ボタン */
 441  0
                 item.add(new ConfirmAjaxButton("buttonAdminAccept"){
 442  
                     @Override
 443  
                     protected String getConfirmMessage() {
 444  0
                         return "グループ「" + groupname + "」の管理者を承諾します。";
 445  
                     }
 446  
                     @Override
 447  
                     void executableWork() {
 448  
                         /* データ操作 */
 449  0
                         grpusr.setAdmindate(AppUtils.createNowLong()); // 管理者就任日時
 450  0
                         grpusr.setStatusadmin(Grpusr.STATUS_ADMIN_移管完了);
 451  0
                         grpusrDao.update(grpusr, loginUserId); // 【データ更新】
 452  
                         
 453  0
                         grp.setAdminusrid(loginUser.getUsrid());
 454  0
                         grpDao.update(grp, loginUserId); // 【データ更新】
 455  0
                     }
 456  
                     @Override
 457  
                     void executeAfter(AjaxRequestTarget target) {
 458  
                         
 459  
                         /* メッセージ表示 */
 460  0
                         feedbackPanel.info("グループ「" + groupname + "」の管理者を承諾しました。");
 461  
                         
 462  
                         /* 画面部品の更新 */
 463  0
                         target.add(listAContainer); // 管理グループ一覧領域
 464  0
                         target.add(listBContainer); // 参加グループ一覧領域
 465  0
                     }
 466  
                     @Override
 467  
                     public boolean isVisible() {
 468  
                         /* 移管依頼中でなければ表示しない */
 469  0
                         if(Grpusr.STATUS_ADMIN_移管依頼中.equals(grpusr.getStatusadmin()) == false) return false;
 470  0
                         return true;
 471  
                     }
 472  
                 });
 473  
                 /* 承諾しない ボタン */
 474  0
                 item.add(new ConfirmAjaxButton("buttonAdminReject"){
 475  
                     @Override
 476  
                     protected String getConfirmMessage() {
 477  0
                         return "グループ「" + groupname + "」の管理者を辞退します。";
 478  
                     }
 479  
                     @Override
 480  
                     void executableWork() {
 481  
                         /* データ操作 */
 482  0
                         grpusr.setStatusadmin(Grpusr.STATUS_ADMIN_未設定);
 483  0
                         grpusrDao.update(grpusr, loginUserId); // 【データ更新】
 484  0
                     }
 485  
                     @Override
 486  
                     void executeAfter(AjaxRequestTarget target) {
 487  
                         
 488  
                         /* メッセージ表示 */
 489  0
                         feedbackPanel.info("グループ「" + groupname + "」の管理者を辞退しました。");
 490  
                         
 491  
                         /* 画面部品の更新 */
 492  0
                         target.add(listBContainer); // 参加グループ一覧領域
 493  0
                     }
 494  
                     @Override
 495  
                     public boolean isVisible() {
 496  
                         /* 移管依頼中でなければ表示しない */
 497  0
                         if(Grpusr.STATUS_ADMIN_移管依頼中.equals(grpusr.getStatusadmin()) == false) return false;
 498  0
                         return true;
 499  
                     }
 500  
                 });
 501  0
             }
 502  
         };
 503  0
         listBContainerData.add(listB);
 504  
         
 505  
         /* ページングの部品 */
 506  0
         final AjaxPagingNavigator pagingListB = new AjaxPagingNavigator("pagingListB", listB){};
 507  0
         listBContainerData.add(pagingListB);
 508  
         
 509  0
     }
 510  
 
 511  
 
 512  
 }