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

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

CommonFrameA

0% | 0/52

0% | 0/4

0.0;0

CommonFrameA$1

0% | 0/3

0% | 0/2

0.0;0

CommonFrameA$2

0% | 0/3

N/A | N/A

0.0;0

CommonFrameA$3

0% | 0/6

0% | 0/2

0.0;0

CommonFrameA$4

0% | 0/6

N/A | N/A

0.0;0

CommonFrameA$5

0% | 0/3

N/A | N/A

0.0;0

CommonFrameA$6

0% | 0/3

N/A | N/A

0.0;0

CommonFrameA$7

0% | 0/3

N/A | N/A

0.0;0

CommonFrameA$8

0% | 0/5

0% | 0/2

0.0;0

CommonFrameA$9

0% | 0/5

0% | 0/4

0.0;0

CommonFrameA$ConfirmAjaxButton

0% | 0/26

0% | 0/6

0.0;0

CommonFrameA$ConfirmAjaxButton$1

0% | 0/9

N/A | N/A

0.0;0

CommonFrameA$ConfirmAjaxButton$1$1

0% | 0/4

N/A | N/A

0.0;0

CommonFrameA$ConfirmAjaxButton$1$2

0% | 0/5

N/A | N/A

0.0;0

CommonFrameA$ConfirmAjaxButton$2

0% | 0/10

0% | 0/6

0.0;0

1

0

     package jp.co.y_net.amm.page;

2

3

     import jp.co.y_net.amm.AppSession;

4

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

5

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

6

     import jp.co.y_net.amm.common.AppSendMail.MailSetting;

7

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

8

     import jp.co.y_net.amm.service.PasswordTicketManager;

9

10

     import org.apache.commons.lang.StringUtils;

11

     import org.apache.wicket.Page;

12

     import org.apache.wicket.ajax.AjaxRequestTarget;

13

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

14

     import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;

15

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

16

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

17

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

18

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

19

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

20

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

21

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

22

     import org.apache.wicket.model.Model;

23

24

25

26

     /**

27

      * １カラムでデザインされたページの共通クラス

28

      *

29

      * ヘッダー領域

30

      * ・トップぺ戻るリンク

31

      * ・ログイン中のユーザID

32

      * ・ログアウトボタン

33

      *

34

      * フッター領域

35

      *

36

      * @author k_inaba

37

      */

38

     public class CommonFrameA extends AppPage {

39

40

         /* 確認画面用のモーダル */

41

         /** モーダル確認画面で「処理実行」が選択されたときにTreuになるモデルオブジェクト*/

42

0

         final private Model<Boolean> doExecute = Model.of(false);

43

0

         final private ModalWindow modalCommonConfirm = new ModalWindow("modalCommonConfirm");

44

45

         /* [デバッグ用] メールに記載されたURLを表示するコンテナ */

46

0

         final private WebMarkupContainer cntDebugUrlOnMail = new WebMarkupContainer("cntDebugUrlOnMail");

47

0

         final private ExternalLink linkDebugUrlOnMail = new ExternalLink("debugUrlOnMail", ""){

48

             @Override

49

             public boolean isVisible() {

50

0

                 return StringUtils.isEmpty(this.getDefaultModelObjectAsString()) == false;

51

             }

52

         };

53

         protected void addDebugUrl(String debugUrl){

54

0

             linkDebugUrlOnMail.setDefaultModelObject(debugUrl);

55

0

         }

56

0

         public CommonFrameA() {

57

58

             /* ロゴのクリック */

59

             //add(new BookmarkablePageLink<Void>("goTop", TopPage.class));

60

0

             add(new ExternalLink("goTop",ResourceReader.getStringQuick("url.back.top")));

61

62

             /*

63

              * ログイン情報領域

64

              */

65

0

             WebMarkupContainer divLoginUser = new WebMarkupContainer("divLoginUser"){

66

                 @Override

67

                 public boolean isVisible() {

68

                     //return AppSession.isLogin(); // ログイン中のみ表示する。

69

0

                     return true;

70

                 }

71

             };

72

0

             add(divLoginUser);

73

74

             /*

75

              * ログイン中ユーザ

76

              */

77

0

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

78

                 @Override

79

                 public String getObject() {

80

0

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

81

0

                         String loginid = AppSession.get().getLoginUser().getLoginid();

82

                         //return "ログインユーザー：" + loginid;

83

0

                         return "ログインユーザー：" + StringUtils.abbreviate(loginid, 30);

84

                     } else {

85

                         //return "ログインしていません";

86

0

                         return "";

87

                     }

88

                 }

89

             };

90

0

             Label labelLoginId = new Label("labelLoginId", loginUserId);

91

0

             divLoginUser.add(labelLoginId);

92

93

             /*

94

              * ログアウトボタン

95

              */

96

0

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

97

0

             divLoginUser.add(formLoginUser);

98

0

             Button buttonLogout = new Button("buttonLogout") {

99

                 @Override

100

                 public void onSubmit() {

101

102

                     /* APIログアウト相当の実施 */

103

0

                     logout.execute(AppSession.get().getLoginUser().getLoginid());

104

105

                     /* セッション無効化 */

106

0

                     AppSession.get().invalidateNow();

107

108

                     /* トップ画面へ遷移 */

109

                     //setResponsePage(getApplication().getHomePage());

110

0

                 }

111

                 @Override

112

                 public boolean isVisible() {

113

0

                     return AppSession.get().isLogin(); // ログイン中のみ表示する。

114

                 }

115

             };

116

0

             formLoginUser.add(buttonLogout);

117

118

             /* 確認画面用のモーダル */

119

             /** モーダル確認画面で「処理実行」が選択されたときにTreuになるモデルオブジェクト*/

120

0

             add(modalCommonConfirm);

121

122

             /* デバッグ出力：メールに記載したURL */

123

0

             cntDebugUrlOnMail.setOutputMarkupId(true);

124

0

             add(cntDebugUrlOnMail);

125

0

             linkDebugUrlOnMail.setOutputMarkupId(true);

126

0

             linkDebugUrlOnMail.setOutputMarkupPlaceholderTag(true);

127

0

             cntDebugUrlOnMail.add(linkDebugUrlOnMail);

128

129

     //        /*

130

     //         * LocaleStringに関するデバッグ情報

131

     //         */

132

     //        WebMarkupContainer devls = new WebMarkupContainer("devls") {

133

     //            @Override

134

     //            public boolean isVisible() {

135

     //                return AppLogger.isDebug();

136

     //            }

137

     //        };

138

     //        add(devls);

139

140

     //        Localestring cnd = new Localestring();

141

     //        cnd.setScreenid(getScreenId());

142

     //        List<Localestring> localestrings = localestringDao.get(cnd);

143

     //        devls.add(new ListView<Localestring>("listView", localestrings) {

144

     //            @Override

145

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

146

     //                item.add(new Label("screenid", item.getModelObject().getScreenid()));

147

     //                item.add(new Label("controlid", item.getModelObject().getControlid()));

148

     //                item.add(new Label("lang", String.valueOf(item.getModelObject().getLanguageid())));

149

     //                item.add(new Label("string", String.valueOf(item.getModelObject().getPrintstring())));

150

     //            }

151

     //        });

152

153

0

         }

154

155

         /** モーダル確認画面を呼び出すためのボタン（共通実装）*/

156

0

         protected abstract class ConfirmAjaxButton extends AjaxButton {

157

0

             public ConfirmAjaxButton(String id) {

158

0

                 super(id);

159

0

             }

160

             @Override

161

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

162

163

                 /*

164

                  * 事前処理

165

                  *  呼び出し元のPageクラスで実装したexecuteBeforeの処理を行います。

166

                  */

167

0

                 boolean check = executeBefore();

168

0

                 if(check == false

169

0

                         || hasInputError()) {

170

171

0

                     FeedbackPanel feedback = (FeedbackPanel)getPage().get("feedback");

172

0

                     if(feedback != null) {

173

0

                         target.add(feedback);

174

                     }

175

0

                     return; // 【処理中断】

176

                 }

177

178

0

                 doExecute.setObject(false);

179

180

                 /* モーダル確認画面を構築 */

181

                 //modalDefPreview.setTitle("");

182

0

                 modalCommonConfirm.setCssClassName(ModalWindow.CSS_CLASS_GRAY);

183

0

                 final Integer MODAL_PREVIEW_HEIGHT = 150;

184

0

                 final Integer MODAL_PREVIEW_WIDTH = 400;

185

0

                 modalCommonConfirm.setInitialHeight(MODAL_PREVIEW_HEIGHT);

186

0

                 modalCommonConfirm.setInitialWidth(MODAL_PREVIEW_WIDTH);

187

0

                 modalCommonConfirm.setResizable(true);

188

0

                 modalCommonConfirm.setPageCreator(new ModalWindow.PageCreator() {

189

                     private static final long serialVersionUID = 1L;

190

                     public Page createPage() {

191

                         /* Pageインスタンスの作成 */

192

0

                         CommonConfirmPage modalPage = new CommonConfirmPage();

193

                         /*

194

                          * 確認メッセージの設定

195

                          * 　呼び出し元のPageクラスでオーバーライドして設定します。

196

                          */

197

0

                         modalPage.confirmMessage = getConfirmMessage();

198

0

                         modalPage.confirmMessageStrong = getConfirmMessageStrong();

199

                         /*

200

                          * executableオブジェクトの設定

201

                          * 　executableは確認モーダル画面の「実行」ボタンを押した直後に実行されます。

202

                          */

203

0

                         modalPage.executable = new CommonConfirmPage.Executable() {

204

                             @Override

205

                             void execute() {

206

0

                                 executableWork();

207

0

                             }

208

                         };

209

210

                         /*

211

                          * CallBack の設定

212

                          *  Modal画面から呼び出し元のPageオブジェクトに参照を引き渡す処理です。

213

                          *  Callbackクラスを使用し、PageReferenceを経由しないと、正しく引き渡しできません。

214

                          */

215

0

                         final CommonConfirmPage.Callback callback = new CommonConfirmPage.Callback() {

216

                             @Override

217

                             public void callback(AjaxRequestTarget target) {

218

0

                                 CommonFrameA me = (CommonFrameA)getPage().getPageReference().getPage(); // 左記の実装でないと、インスタンスが変化する。

219

0

                                 me.doExecute.setObject(true);

220

0

                             }

221

                         };

222

0

                         modalPage.callback = callback;

223

0

                         return modalPage;

224

                     }

225

                 });

226

                 /* CallBack の処理 */

227

0

                 modalCommonConfirm.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {

228

                     private static final long serialVersionUID = 1L;

229

                     @Override

230

                     public void onClose(AjaxRequestTarget target) {

231

0

                         if(doExecute.getObject()) {

232

                             /* 確認モーダル画面の「実行」ボタンを押した後、呼び出し元のPageクラスで実行される処理。 */

233

0

                             executeAfter(target);

234

235

0

                             FeedbackPanel feedback = (FeedbackPanel)getPage().get("feedback");

236

0

                             if(feedback != null) {

237

0

                                 target.add(feedback);

238

                             }

239

240

0

                             if(AppLogger.isDebug()) {

241

                                 /* [デバッグ用] メールに記載されたURLを表示するコンテナ */

242

0

                                 target.add(cntDebugUrlOnMail);

243

                             }

244

                         }

245

0

                     }

246

                 });

247

0

                 modalCommonConfirm.show(target); // モーダルを表示

248

0

             }

249

250

             @Override

251

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

252

              // 処理なし

253

0

             }

254

255

             /** 確認メッセージの設定 */

256

             abstract String getConfirmMessage();

257

             /** 確認メッセージの設定 */

258

             String getConfirmMessageStrong(){

259

0

                 return "";

260

             };

261

             /**

262

              * 前処理

263

              * 　入力値チェックを行います。

264

              * 　呼び出し元のPageクラスでオーバーライドします。

265

              * 　入力値チェックが不要の場合は、オーバーライドしなくてよいです。

266

              */

267

             boolean executeBefore() {

268

0

                 return true;

269

             }

270

             /**

271

              * 確認モーダル画面の「実行」ボタンを押した直後に実行される処理。

272

              * ここでは、呼び出し元のPageクラスのメンバに、正しく値を設定することができないことに注意する。

273

              */

274

             void executableWork(){

275

                 // 必要に応じてオーバーライド

276

0

             };

277

             /**

278

              * 確認モーダル画面の「実行」ボタンを押した後、呼び出し元のPageクラスで実行される処理。

279

              */

280

             abstract void executeAfter(AjaxRequestTarget target);

281

         }

282

283

         protected void doパスワードリセット(final Integer targetUserid, PasswordTicketManager passwordTicketManager, String mailValue) {

284

285

286

287

             /* 共通機能：パスワード登録チケット発行 からチケットを取得する */

288

0

             String random = passwordTicketManager.executeパスワードリセット(targetUserid);

289

290

             /* パスワード再設定用メールを送信する */

291

0

             MailSetting setting = new MailSetting();

292

0

             setting.setTemplate(ResourceReader.getText("message/mail.resetpw"));

293

0

             setting.setMailTo(mailValue);

294

0

             String パスワード登録画面のURL = ResourceReader.getStringQuick("urlroot") + "entrypassword?value=" + random;

295

0

             setting.replace("パスワード登録画面のURL", パスワード登録画面のURL);

296

0

             boolean sendmailrsult = AppSendMail.send(setting);

297

0

             if(sendmailrsult == false) {

298

0

                 error("メールの送信に失敗しました。");

299

             }

300

301

             /* テスト自動化対応 */

302

0

             if (AppLogger.isDebug()) {

303

                 //info("メールに記載したURL【" + パスワード登録画面のURL + "】");

304

0

                 addDebugUrl(パスワード登録画面のURL);

305

             }

306

0

         }

307

308

         private Page returnPage;

309

         protected Page getReturnPage() {

310

0

             return returnPage;

311

         }

312

         protected void setReturnPage(Page returnPage) {

313

0

             this.returnPage = returnPage;

314

0

         }

315

316

317

318

         /**

319

          * 共通戻るリンクの設置

320

          */

321

         protected void createCommonBackLinks() {

322

0

             add(new ExternalLink("lnkMember", ResourceReader.getStringQuick("url.back.member")) {

323

                 @Override

324

                 public boolean isVisible() {

325

0

                     return isMember();

326

                 }

327

             });

328

0

             add(new ExternalLink("lnkOrgAdmin", ResourceReader.getStringQuick("url.back.orgadmin")) {

329

                 @Override

330

                 public boolean isVisible() {

331

0

                     return isOrgAdmin();

332

                 }

333

             });

334

0

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

335

                 @Override

336

                 public boolean isVisible() {

337

0

                     return isSystemAdmin();

338

                 }

339

             });

340

0

         }

341

         /**

342

          * 画面固有の戻るボタンの設置

343

          * @param clz

344

          * @param string

345

          */

346

         protected void createBackLink(final Class<? extends CommonFrameA> clz, final String name) {

347

0

             Link<Void> linkReturn = new Link<Void>("lnkReturn") {

348

                 @Override

349

                 public void onClick() {

350

0

                     setResponsePage(getReturnPage());

351

0

                 }

352

                 @Override

353

                 public boolean isVisible() {

354

0

                     return getReturnPage() != null;

355

                 }

356

             };

357

0

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

358

                 @Override

359

                 public String getObject() {

360

0

                     if(getReturnPage() != null  && getReturnPage().getClass().equals(clz)) {

361

0

                         return name + "へ戻る";

362

                     } else {

363

0

                         return "前へ戻る";

364

                     }

365

                 }

366

             });

367

0

             linkReturn.add(lnkReturnAnker);

368

0

             add(linkReturn);

369

0

         }

370

         /**

371

          * フィードバックパネルの設置

372

          */

373

         protected void createFeedbackPanel() {

374

0

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

375

0

             feedbackPanel.setOutputMarkupId(true);

376

0

             add(feedbackPanel);

377

0

         }

378

379

     }