##### Coverage Report - jp.co.y_net.amm.page.OrgMemberListPage

Classes in this File | Line Coverage | Branch Coverage | Complexity

OrgMemberListPage

0% | 0/56

0% | 0/10

0.0;0

OrgMemberListPage$1

0% | 0/5

0% | 0/2

0.0;0

OrgMemberListPage$2

0% | 0/2

N/A | N/A

0.0;0

OrgMemberListPage$3

0% | 0/7

0% | 0/4

0.0;0

OrgMemberListPage$4

0% | 0/4

N/A | N/A

0.0;0

OrgMemberListPage$5

0% | 0/18

0% | 0/10

0.0;0

OrgMemberListPage$6

0% | 0/27

0% | 0/6

0.0;0

OrgMemberListPage$6$1

0% | 0/7

0% | 0/2

0.0;0

OrgMemberListPage$6$2

0% | 0/6

N/A | N/A

0.0;0

OrgMemberListPage$7

0% | 0/2

N/A | N/A

0.0;0

OrgMemberListPage$8

0% | 0/15

0% | 0/4

0.0;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.List;

6

     import java.util.Map;

7

     import java.util.Map.Entry;

8

9

     import jp.co.y_net.amm.AppSession;

10

     import jp.co.y_net.amm.common.ChoiceElement;

11

     import jp.co.y_net.amm.common.ResourceReader;

12

     import jp.co.y_net.amm.dao.Org;

13

     import jp.co.y_net.amm.dao.Usr;

14

15

     import org.apache.commons.lang.StringUtils;

16

     import org.apache.wicket.ajax.AjaxRequestTarget;

17

     import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;

18

     import org.apache.wicket.ajax.markup.html.form.AjaxButton;

19

     import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator;

20

     import org.apache.wicket.markup.html.WebMarkupContainer;

21

     import org.apache.wicket.markup.html.basic.Label;

22

     import org.apache.wicket.markup.html.form.DropDownChoice;

23

     import org.apache.wicket.markup.html.form.Form;

24

     import org.apache.wicket.markup.html.form.TextField;

25

     import org.apache.wicket.markup.html.link.ExternalLink;

26

     import org.apache.wicket.markup.html.link.Link;

27

     import org.apache.wicket.markup.html.list.ListItem;

28

     import org.apache.wicket.markup.html.list.PageableListView;

29

     import org.apache.wicket.markup.html.panel.FeedbackPanel;

30

     import org.apache.wicket.model.IModel;

31

     import org.apache.wicket.model.LoadableDetachableModel;

32

     import org.apache.wicket.model.Model;

33

     import org.apache.wicket.request.mapper.parameter.PageParameters;

34

35

     public class OrgMemberListPage extends CommonFrameA {

36

             private static final long serialVersionUID = 1L;

37

38

         /*

39

          * 画面入力値

40

          */

41

         // 無し

42

43

         /*

44

          * 画面の状態

45

          */

46

0

             private boolean complete = true;

47

48

         /**

49

          * ログインチェック定義

50

          * @see jp.co.y_net.amm.page.AppPage#validateLogin()

51

          */

52

         @Override

53

         public boolean validateLogin() {

54

0

             if(AppSession.get().isLogin()) {

55

0

                 if(AppSession.get().getLoginUser().getKind().equals(Usr.KIND_運営管理者)) {

56

0

                     return true;

57

                 }

58

             }

59

0

             return false;

60

         }

61

62

0

         public OrgMemberListPage(PageParameters pageParams) {

63

64

             /* 戻るリンク */

65

0

             add(new ExternalLink("lnkSysAdmin", ResourceReader.getStringQuick("url.back.sysadmin")));

66

67

             /* フィードバックメッセージ */

68

0

             final FeedbackPanel feedbackPanel = new FeedbackPanel("feedback");

69

0

             feedbackPanel.setOutputMarkupId(true);

70

0

             add(feedbackPanel);

71

72

             /* 入力フォーム */

73

0

             Form<Void> form  = new Form<Void>("form");

74

0

             add(form);

75

76

             /* 初期表示エラーチェック ----------------------------------------------------------------------------------- */

77

0

             form.setVisible(false); // Formはエラーチェックが完了するまで非表示とする。

78

             // なし

79

80

0

             if(hasInputError()) return; // ----------エラーがあれば中止

81

0

             form.setVisible(true);

82

83

             /* Form内の設定 ----------------------------------------------------------------------------------------------*/

84

             /* 完了メッセージ */

85

0

             Model<String> resultMessageModel = new Model<String>() {

86

                 @Override

87

                 public String getObject() {

88

0

                     if(complete) {

89

0

                         return "";

90

                     }

91

0

                     return "";

92

                 }

93

             };

94

0

             final Label resutlMessage = new Label("resutlMessage", resultMessageModel);

95

0

             resutlMessage.setOutputMarkupId(true);

96

0

             form.add(resutlMessage);

97

98

             /* 入力コンポーネントの設定 ----------------------------------------------------------------------------------*/

99

100

             /* 絞り込み */

101

             // 会員の種類

102

0

             List<ChoiceElement> choiceKind = new ArrayList<ChoiceElement>();

103

0

             choiceKind.add(new ChoiceElement(" ","(選択してください)"));

104

0

             Map<String, String> map = Org.getOrgkindMap();

105

0

             for(Entry<String, String> e: map.entrySet()) {

106

0

                 choiceKind.add(new ChoiceElement(e.getKey(), e.getValue()));

107

             }

108

0

             final Model<ChoiceElement> kindModel = new Model<ChoiceElement>();

109

0

             ChoiceElement.setDropDownList(kindModel, choiceKind, " "); // 初期値設定

110

0

             final DropDownChoice<ChoiceElement> filterKind = new DropDownChoice<ChoiceElement>(

111

0

                     "filterKind", kindModel, choiceKind, new ChoiceElement.Renderer());

112

0

             form.add(filterKind);

113

             // 名称|氏名での絞り込み

114

0

             final TextField<String> filterName = new TextField<String>("filterName", Model.of("")){

115

             };

116

0

             form.add(filterName);

117

             // 名称|氏名のラベル

118

0

             final Label labelFilterName = new Label("labelFilterName", new Model<String>(){

119

                 @Override

120

                 public String getObject() {

121

0

                     if(kindModel.getObject().getId().equals(" ")) {

122

0

                         return "名称か氏名";

123

                     } else {

124

0

                         if(kindModel.getObject().getId().equals(Org.KIND_PERSONAL_STR)) {

125

0

                             return "会員の氏名";

126

                         } else {

127

0

                             return "会員の名称";

128

                         }

129

                     }

130

                 }

131

             });

132

0

             labelFilterName.setOutputMarkupId(true);

133

0

             form.add(labelFilterName);

134

             // 会員の種類で表示するラベルを変更する。

135

0

             filterKind.add(new AjaxFormComponentUpdatingBehavior("onchange") {

136

                 @Override

137

                 protected void onUpdate(AjaxRequestTarget target) {

138

0

                     target.add(labelFilterName);

139

0

                 }

140

             });

141

142

     //        /* 所属機関 */

143

     //        List<ChoiceElement> choiceOrg = new ArrayList<ChoiceElement>();

144

     //        choiceOrg.add(new ChoiceElement(" ",""));

145

     //        choiceOrg.add(new ChoiceElement("personal","(個人)")); // 個人

146

     //        for(Org o: orgDao.get()) {

147

     //            choiceOrg.add(new ChoiceElement(String.valueOf(o.getOrgid()), o.getName()));

148

     //        }

149

     //        final Model<ChoiceElement> orgModel = new Model<ChoiceElement>();

150

     //        ChoiceElement.setDropDownList(orgModel, choiceOrg, " "); // 初期値設定

151

     //

152

     //        final DropDownChoice<ChoiceElement> selectOrg = new DropDownChoice<ChoiceElement>(

153

     //                "selectOrg", orgModel, choiceOrg, new ChoiceElement.Renderer());

154

     //        form.add(selectOrg);

155

156

             /* コンテナの設定 ------------------------------------------------------------------------------------------------*/

157

             /*

158

              * 画面の部分更新の対象となるコンテナ

159

              * 　ページをインスタンス化するときに初期非表示としてはいけない。

160

              */

161

0

             final WebMarkupContainer orglistContainer = new WebMarkupContainer("orglistContainer");

162

0

             orglistContainer.setOutputMarkupId(true);

163

0

             form.add(orglistContainer);

164

165

0

             final WebMarkupContainer orglistContainerData = new WebMarkupContainer("orglistContainerData");

166

0

             orglistContainer.add(orglistContainerData);

167

168

0

             final WebMarkupContainer orglistContainerNoData = new WebMarkupContainer("orglistContainerNoData");

169

0

             orglistContainer.add(orglistContainerNoData);

170

171

             /* 一覧の設定 ------------------------------------------------------------------------------------------------*/

172

173

             // LoadableDetachableModel は リクエストの最初に load にてデータを取得するモデル

174

0

             final IModel<List<Org>> orgModel = new LoadableDetachableModel<List<Org>>() {

175

                 @Override

176

                 protected List<Org> load() {

177

178

0

                     List<Org> list = new ArrayList<Org>();

179

180

0

                     if(kindModel.getObject().getId().equals(" ")) {

181

                         /* 「（選択してください）」のままなので、検索しない*/

182

183

                     } else {

184

0

                         String targetName = filterName.getValue();

185

0

                         if(targetName != null) targetName = targetName.trim();

186

187

0

                         Org cnd = new Org();

188

0

                         Integer kind = Integer.parseInt(kindModel.getObject().getId());

189

0

                         cnd.setKind(kind);

190

0

                         List<Org> results = orgDao.get(cnd);

191

192

0

                         if(StringUtils.isEmpty(targetName)) {

193

0

                             list.addAll(results);

194

0

                         } else {

195

0

                             for(Org result: results) {

196

0

                                 if(result.getNameOrAdminname().contains(targetName)) {

197

0

                                     list.add(result);

198

                                 }

199

                             }

200

                         }

201

                     }

202

203

                     /* 申請日付の新しい順でソート*/

204

0

                     Collections.sort(list, new Org.EntryDateComparator(true));

205

206

0

                     return list;

207

                 }

208

             };

209

0

             final PageableListView<Org> orglist = new PageableListView<Org>("orglist", orgModel, 20) {

210

                 private static final long serialVersionUID = 1L;

211

212

                 @Override

213

                 protected void populateItem(ListItem<Org> item) {

214

0

                     final Org org = item.getModelObject();

215

216

                     /* 会員種別 */

217

0

                     item.add(new Label("kind", org.getKind_Disp()));

218

219

                     /* 名称とリンク */

220

0

                     final PageParameters param = new PageParameters();

221

0

                     param.add("orgid", org.getOrgid());

222

                     //BookmarkablePageLink<Void> lnkName = new BookmarkablePageLink<Void>("lnkName", OrgDetailPage.class, param);

223

0

                     Link<Void> lnkName = new Link<Void>("lnkName") {

224

                         @Override

225

                         public void onClick() {

226

0

                             OrgDetailPage nextPage = new OrgDetailPage(param);

227

0

                             nextPage.setReturnPage(getPage());

228

0

                             setResponsePage(nextPage);

229

0

                         }

230

231

                         @Override

232

                         protected boolean isLinkEnabled() {

233

0

                             return Org.STATUS_本登録済み == org.getStatus();

234

                         }

235

236

                     };

237

238

0

                     String name = org.getNameOrAdminname();

239

0

                     if(StringUtils.isEmpty(name)) {

240

0

                         name = "※"; // 仮に値が取得できない場合でも、リンクに使用されるため、疑似値を設定した。

241

                     }

242

0

                     Label lnklblName = new Label("lnklblName", name);

243

0

                     lnkName.add(lnklblName);

244

0

                     item.add(lnkName);

245

246

                     /* ステータス */

247

0

                     item.add(new Label("status", org.getStatus_Disp()));

248

249

                     /* 申請日時 */

250

0

                     item.add(new Label("entrydate" , org.getEntrydate_Disp()));

251

252

                     /* 会員一覧へのリンク */

253

0

                     Link<Void> lnkMemberlist = new Link<Void>("lnkMemberlist"){

254

                         @Override

255

                         public void onClick() {

256

0

                             MemberListPage nextPage = new MemberListPage(param);

257

0

                             nextPage.setReturnPage(getPage());

258

0

                             setResponsePage(nextPage);

259

0

                         }

260

                     };

261

0

                     item.add(lnkMemberlist);

262

263

                     /* 会員数（登録可能会員数）*/

264

                     String limitnum;

265

0

                     Usr usrCnd = new Usr();

266

0

                     usrCnd.setOrgid(org.getOrgid());

267

0

                     Usr usrCndNot = new Usr();

268

0

                     usrCndNot.setStatus(Usr.STATUS_退会);

269

0

                     List<Usr> usrs = usrDao.get(usrCnd, usrCndNot); // 該当組織で退会していないデータのリスト

270

0

                     limitnum = String.valueOf(usrs.size());

271

0

                     if(org.getLimitnum() != null && org.getLimitnum() >= 0) {

272

0

                         limitnum += "(" + org.getLimitnum() + ")";

273

                     }

274

0

                     lnkMemberlist.add(new Label("limitnum" , limitnum));

275

0

                 }

276

             };

277

0

             orglistContainerData.add(orglist);

278

279

             /* ページングの部品 */

280

0

             final AjaxPagingNavigator pagingOrglist = new AjaxPagingNavigator("pagingOrglist", orglist){};

281

0

             orglistContainerData.add(pagingOrglist);

282

283

284

285

             /* コンテナ制御 */

286

0

             if(orgModel.getObject().isEmpty()) {

287

0

                 orglistContainerData.setVisible(false);

288

0

                 orglistContainerNoData.setVisible(true);

289

0

             } else {

290

0

                 orglistContainerData.setVisible(true);

291

0

                 orglistContainerNoData.setVisible(false);

292

             }

293

294

295

296

     //        final PageableListView<Usr> listview = new PageableListView<Usr>("listView", usrModel, 20) {

297

     //            private static final long serialVersionUID = 1L;

298

     //            @Override

299

     //            protected void populateItem(ListItem<Usr> item) {

300

     //                Usr member = item.getModelObject();

301

     //

302

     //                /* 所属機関リンク */

303

     //                Org org = orgDao.getByOrgid(member.getOrgid());

304

     //                PageParameters paramOrg = new PageParameters();

305

     //                paramOrg.add("orgid", org.getOrgid());

306

     //                BookmarkablePageLink<Void> lnkOrg = new BookmarkablePageLink<Void>("lnkOrg", OrgDetailPage.class, paramOrg);

307

     //                String orgnameStr = org.getName();

308

     //                if(org.isParsonal()) {

309

     //                    orgnameStr += "(個人)";

310

     //                }

311

     //                Label orgname = new Label("orgname", orgnameStr);

312

     //                lnkOrg.add(orgname);

313

     //                item.add(lnkOrg);

314

     //

315

     //                /* 氏名リンク */

316

     //                PageParameters param = new PageParameters();

317

     //                param.add("usrid", member.getUsrid());

318

     //                BookmarkablePageLink<Void> lnkUsr = new BookmarkablePageLink<Void>("lnkUsr", MemberDetailPage.class, param);

319

     //                Label usrname = new Label("usrname", member.getName());

320

     //                lnkUsr.add(usrname);

321

     //                item.add(lnkUsr);

322

     //

323

     //                /* 会員種別 */

324

     //                item.add(new Label("usrkind", member.getKind_Disp()));

325

     //

326

     //                /* 状態 */

327

     //                item.add(new Label("usrstatus", member.getStatus_Disp()));

328

     //

329

     //                /* 最終ログイン日時 */

330

     //                item.add(new Label("usrlastlogin" , member.getLastlogindate_Disp()));

331

     //            }

332

     //        };

333

     //        listViewContainer.add(listview);

334

     //        AjaxPagingNavigator navigator = new AjaxPagingNavigator("paging", listview);

335

     //        form.add(navigator);

336

337

338

339

340

             /* 処理ボタン定義 --------------------------------------------------------------------------------------------*/

341

0

             AjaxButton btnSubmit = new AjaxButton("submitSelect") {

342

                 private static final long serialVersionUID = 1L;

343

                 @Override

344

                 protected void onSubmit(AjaxRequestTarget target, Form<?> form){

345

0

                     if(kindModel.getObject().getId().equals(" ")) {

346

                         /* 「（選択してください）」のままなので、検索しない*/

347

0

                         error("会員の種別を選択してください。");

348

0

                         target.add(feedbackPanel);

349

0

                         return;

350

                     }

351

                     /* コンテナ制御 */

352

0

                     if(orgModel.getObject().isEmpty()) {

353

0

                         orglistContainerData.setVisible(false);

354

0

                         orglistContainerNoData.setVisible(true);

355

0

                     } else {

356

0

                         orglistContainerData.setVisible(true);

357

0

                         orglistContainerNoData.setVisible(false);

358

                     }

359

360

0

                     target.add(orglistContainer); // 一覧再描画

361

0

                 }

362

                 @Override

363

                 protected void onError(AjaxRequestTarget target, Form<?> form) {

364

                     /* エラーハンドリングなし */

365

0

                 }

366

             };

367

0

             form.add(btnSubmit);

368

369

0

         }

370

371

     }