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

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

OrgEntryPage

0% | 0/60

0% | 0/2

0.0;0

OrgEntryPage$1

0% | 0/4

N/A | N/A

0.0;0

OrgEntryPage$10

0% | 0/69

0% | 0/24

0.0;0

OrgEntryPage$2

0% | 0/5

0% | 0/2

0.0;0

OrgEntryPage$3

0% | 0/5

0% | 0/2

0.0;0

OrgEntryPage$4

0% | 0/5

0% | 0/2

0.0;0

OrgEntryPage$5

0% | 0/2

N/A | N/A

0.0;0

OrgEntryPage$6

0% | 0/4

N/A | N/A

0.0;0

OrgEntryPage$7

0% | 0/5

0% | 0/2

0.0;0

OrgEntryPage$8

0% | 0/5

0% | 0/2

0.0;0

OrgEntryPage$9

0% | 0/13

0% | 0/6

0.0;0

1

0

     package jp.co.y_net.amm.page;

2

3

     import java.util.ArrayList;

4

     import java.util.List;

5

     import java.util.Map;

6

     import java.util.Map.Entry;

7

8

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

9

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

10

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

11

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

12

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

13

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

14

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

15

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

16

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

17

18

     import org.apache.wicket.ajax.AjaxRequestTarget;

19

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

20

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

21

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

22

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

23

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

24

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

25

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

26

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

27

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

28

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

29

     import org.apache.wicket.model.Model;

30

     import org.apache.wicket.model.PropertyModel;

31

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

32

33

     public class OrgEntryPage extends CommonFrameA {

34

             private static final long serialVersionUID = 1L;

35

36

         /*

37

          * 画面入力値

38

          */

39

             public String kindValue;

40

             public String nameValue;

41

             public String adminnameValue;

42

             public String adminnamekanaValue;

43

             public String postnumValue;

44

             public String addressValue;

45

             public String telnumValue;

46

             public String mailValue;

47

             public String mail2Value;

48

             public boolean agreeValue;

49

50

             /*

51

          * 画面の状態

52

          */

53

             /* 会員の種別選択完了 */

54

0

             private boolean completeKind = false;

55

             /* 申請完了 */

56

0

         private boolean complete = false;

57

58

0

         public OrgEntryPage(PageParameters params) {

59

60

61

             /* トップへ戻る */

62

0

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

63

64

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

65

0

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

66

0

             feedbackPanel.setOutputMarkupId(true);

67

0

             add(feedbackPanel);

68

69

             /* 入力フォーム */

70

0

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

71

0

             form.setOutputMarkupId(true);

72

0

             add(form);

73

74

             /* 完了メッセージ */

75

0

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

76

                 @Override

77

                 public String getObject() {

78

0

                     String msg = "";

79

     //                if(completeKind == false) {

80

     //                    msg = "会員の種別を選択してください。";

81

     //                } else if(complete == false) {

82

     //                    msg = "申請内容を入力してください。";

83

     //                } else {

84

     //                    msg = "申請を行いました。申請の結果は連絡先メールアドレスへお送りします。しばらくお待ちください。";

85

     //                }

86

0

                     return msg;

87

                 }

88

             };

89

0

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

90

0

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

91

0

             form.add(resutlMessage);

92

93

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

94

95

             /* 会員の種別 ---------------------------------------------------------- */

96

97

0

             WebMarkupContainer tableKind = new WebMarkupContainer("tableKind"){

98

                 @Override

99

                 public boolean isVisible() {

100

                     /* 会員の種別選択されていれば表示しない */

101

0

                     if(completeKind == true) {

102

0

                         return false;

103

                     }

104

0

                     return true;

105

                 }

106

             };

107

0

             form.add(tableKind);

108

109

             /* 会員の種類 */

110

0

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

111

0

             choiceKind.add(new ChoiceElement(" ",""));

112

0

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

113

0

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

114

0

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

115

             }

116

0

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

117

0

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

118

119

0

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

120

0

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

121

0

             tableKind.add(kind);

122

123

             /* 会員の種別 以外---------------------------------------------------------- */

124

125

0

             WebMarkupContainer tableMain = new WebMarkupContainer("tableMain") {

126

                 @Override

127

                 public boolean isVisible() {

128

                     /* 会員の種別が未選択の時は表示しない */

129

0

                     if(completeKind == false) {

130

0

                         return false;

131

                     }

132

0

                     return true;

133

                 }

134

             };

135

0

             form.add(tableMain);

136

137

0

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

138

                 @Override

139

                 public String getObject() {

140

0

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

141

0

                         return "担当者";

142

                     }

143

0

                     return "氏名";

144

                 }

145

             }){

146

             };

147

0

             tableMain.add(thAdminname);

148

149

             /* 会員の種別（表示用）*/

150

0

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

151

                 @Override

152

                 public String getObject() {

153

0

                     String kindname = Org.getOrgkindMap().get(kindModel.getObject().getId());

154

0

                     return kindname;

155

                 }

156

157

             });

158

0

             tableMain.add(selectedKind);

159

160

             /* 団体名称 */

161

0

             TextField<String> name = new TextField<String>("name", new PropertyModel<String>(this, "nameValue")){

162

                 @Override

163

                 public boolean isVisible() {

164

0

                     if(Org.KIND_PERSONAL_STR.equals(kindModel.getObject().getId())) { // 個人の場合は非表示

165

0

                         return false;

166

                     }

167

0

                     return true;

168

                 }

169

             };

170

0

             tableMain.add(name);

171

172

             /* 申請者氏名 */

173

0

             TextField<String> adminname = new TextField<String>("adminname", new PropertyModel<String>(this, "adminnameValue"));

174

0

             tableMain.add(adminname);

175

176

             /* ふりがな */

177

0

             TextField<String> adminnamekana = new TextField<String>("adminnamekana", new PropertyModel<String>(this, "adminnamekanaValue"));

178

0

             tableMain.add(adminnamekana);

179

180

             /* 郵便番号 */

181

0

             TextField<String> postnum = new TextField<String>("postnum", new PropertyModel<String>(this, "postnumValue"));

182

0

             tableMain.add(postnum);

183

184

             /* 連絡先住所 */

185

0

             TextField<String> address = new TextField<String>("address", new PropertyModel<String>(this, "addressValue"));

186

0

             tableMain.add(address);

187

188

             /* 連絡先電話番号 */

189

0

             TextField<String> telnum = new TextField<String>("telnum", new PropertyModel<String>(this, "telnumValue"));

190

0

             tableMain.add(telnum);

191

192

             /* 連絡先メールアドレス */

193

0

             TextField<String> mail = new TextField<String>("mail", new PropertyModel<String>(this, "mailValue"));

194

0

             tableMain.add(mail);

195

196

             /* 連絡先メールアドレス確認用 */

197

0

             TextField<String> mail2 = new TextField<String>("mail2", new PropertyModel<String>(this, "mail2Value"));

198

0

             tableMain.add(mail2);

199

200

             /* 利用規約 */

201

0

             TextArea<String> termsofuse = new TextArea<String>("termsofuse", Model.of(ResourceReader.getText("message/termsofuse")));

202

0

             tableMain.add(termsofuse);

203

204

0

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

205

0

             CheckBox agree = new CheckBox("agree", agreeModel);

206

0

             tableMain.add(agree);

207

208

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

209

0

             final Button btnCancel = new Button("btnCancel"){

210

                 @Override

211

                 public void onSubmit() {

212

                     /* 入力値変換 */

213

                     // なし

214

215

                     /* 自画面再読み込み */

216

0

                     setResponsePage(getPage().getClass());

217

0

                 }

218

                 @Override

219

                 public boolean isVisible() {

220

                     /* 完了後の状態ならボタンを表示しない */

221

0

                     return complete == false;

222

                 }

223

             };

224

0

             form.add(btnCancel);

225

226

0

             Button btnSubmitKind = new Button("btnSubmitKind") {

227

                 @Override

228

                 public void onSubmit() {

229

                     /* 入力値変換 */

230

0

                     kindValue = AppStringUtils.trim(kindModel);

231

232

                     /* 入力値検査 */

233

0

                     validItemNum(kindValue, "会員の種類", 1, 1);

234

235

0

                     if(hasInputError()) return; // ここまででエラーチェック

236

237

                     /* メッセージ表示 */

238

0

                     info("申請内容を入力してください。");

239

240

                     /* 状態遷移 */

241

0

                     completeKind = true;

242

0

                 }

243

                 @Override

244

                 public boolean isVisible() {

245

0

                     if(completeKind == true) {

246

0

                         return false;

247

                     }

248

0

                     if(complete == true) {

249

0

                         return false;

250

                     }

251

0

                     return true;

252

                 }

253

             };

254

0

             form.add(btnSubmitKind);

255

256

0

             Button btnSubmit = new ConfirmAjaxButton("btnSubmit"){

257

                 @Override

258

                 protected String getConfirmMessage() {

259

0

                     return "申請を行います。";

260

                 }

261

262

                 @Override

263

                 boolean executeBefore() {

264

                     /* モデル(PropertyModel以外)から値取得 */

265

                     // なし

266

267

                     /* 入力値変換 */

268

0

                     kindValue = AppStringUtils.trim(kindModel);

269

0

                     nameValue = AppStringUtils.trim(nameValue);

270

0

                     adminnameValue = AppStringUtils.trim(adminnameValue);

271

0

                     adminnamekanaValue = AppStringUtils.trim(adminnamekanaValue);

272

0

                     postnumValue = AppStringUtils.trimHalf(postnumValue);

273

0

                     postnumValue = postnumValue.replaceAll("-", "");// 郵便番号からハイフン除去

274

0

                     addressValue = AppStringUtils.trim(addressValue);

275

0

                     telnumValue = AppStringUtils.trimHalf(telnumValue);

276

0

                     mailValue = AppStringUtils.trimHalf(mailValue);

277

0

                     mail2Value = AppStringUtils.trimHalf(mail2Value);

278

0

                     agreeValue = agreeModel.getObject();

279

280

                     /* 入力値検査 */

281

0

                     validItemNum(kindValue, "会員の種類", 1, 1);

282

0

                     if(hasInputError()) return false; // ここまででエラーチェック

283

284

0

                     int iKindValue = AppUtils.toInteger(kindValue);

285

0

                     if(Org.KIND_PERSONAL != iKindValue) {

286

0

                         validItem(nameValue, "申請機関・団体", 1, 512);

287

0

                         validItem(adminnameValue, "担当者", 1, 512);

288

0

                     } else {

289

                         // 個人の場合は入力しない validItem(nameValue, "申請機関・団体", 1, 512);

290

0

                         validItem(adminnameValue, "氏名", 1, 512);

291

                     }

292

293

294

295

0

                     validItem(adminnamekanaValue, "ふりがな", 1, 512);

296

0

                     validItemNum(postnumValue, "連絡先郵便番号", 7, 7);

297

0

                     validItem(addressValue, "連絡先住所", 1, 1024);

298

0

                     validItemTel(telnumValue, "連絡先電話番号", 1, 32);

299

0

                     validItemMail(mailValue, "連絡先メールアドレス", true); // フリーメールチェック

300

0

                     validItemMail(mail2Value, "メールアドレス確認用");

301

302

0

                     if(hasInputError()) return false; // ここまででエラーチェック

303

304

305

                     /* メールチェック */

306

0

                     if(mailValue.equals(mail2Value) == false) {

307

0

                         error("連絡先メールアドレスが一致しません。");

308

                     }

309

310

0

                     if(mailAddressCheck.exist(mailValue)) {

311

0

                         error("この連絡先メールアドレスは既に使用されています。");

312

                     }

313

314

0

                     if(hasInputError()) return false; // ここまででエラーチェック

315

316

0

                     if(agreeValue == false) {

317

0

                         error("利用規約に承諾しない場合は申請できません。");

318

                     }

319

320

0

                     if(hasInputError()) return false; // ここまででエラーチェック

321

322

0

                     return true;

323

                 }

324

325

                 @Override

326

                 void executeAfter(AjaxRequestTarget target) {

327

                     /* データアクセス 新規機関申請 */

328

0

                     Org org = new Org();

329

0

                     org.setKind(Integer.parseInt(kindValue));

330

0

                     org.setName(nameValue);

331

0

                     org.setAdminname(adminnameValue);

332

0

                     org.setAdminnamekana(adminnamekanaValue);

333

0

                     org.setPostnum(postnumValue);

334

0

                     org.setTelnum(telnumValue);

335

0

                     org.setAddress(addressValue);

336

0

                     org.setMail(mailValue);

337

0

                     org.setEntrydate(AppUtils.createNowLong());

338

0

                     org.setStatus(Org.STATUS_未処理);

339

340

0

                     orgDao.add(org,AppDef.USERID_NONE); // 【データ更新】

341

342

                     /*

343

                      * 新着申請内容受信メール送信

344

                      *

345

                      *・送信先 別紙参照 設定値一覧 新規機関申請通知先メールアドレス

346

                      *・申請画面URL http://～/orgentrydetail?orgid={機関ID}

347

                      */

348

0

                     MailSetting setting = new MailSetting();

349

0

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

350

0

                     setting.setMailTo(ResourceReader.getStringQuick("mailto.orgentry"));

351

0

                     String 申請画面URL = ResourceReader.getStringQuick("urlroot") + "orgentrydetail?orgid=" + org.getOrgid();

352

0

                     setting.replace("申請画面URL", 申請画面URL);

353

0

                     boolean sendmailrsult = AppSendMail.send(setting);

354

0

                     if(sendmailrsult == false) {

355

0

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

356

                     }

357

358

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

359

0

                     if (AppLogger.isDebug()) {

360

                         //info("メールに記載したURL【" + 本登録URL + "】");

361

0

                         addDebugUrl(申請画面URL);

362

                     }

363

364

                     /* メッセージ表示 */

365

0

                     info("申請を行いました。申請の結果は連絡先メールアドレスへお送りします。しばらくお待ちください。");

366

367

                     /* 画面コンポーネントの再描画 */

368

0

                     target.add(form);

369

370

371

                     /* 完了状態へ移行 */

372

0

                     complete = true;

373

0

                 }

374

                 @Override

375

                 public boolean isVisible() {

376

0

                     if(completeKind == false) {

377

0

                         return false;

378

                     }

379

0

                     if(complete == true) {

380

0

                         return false;

381

                     }

382

0

                     return true;

383

                 }

384

             };

385

0

             form.add(btnSubmit);

386

387

388

0

         }

389

390

391

     }