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
OrgEntryPage$1
0%
0/4
N/A
0
OrgEntryPage$10
0%
0/69
0%
0/24
0
OrgEntryPage$2
0%
0/5
0%
0/2
0
OrgEntryPage$3
0%
0/5
0%
0/2
0
OrgEntryPage$4
0%
0/5
0%
0/2
0
OrgEntryPage$5
0%
0/2
N/A
0
OrgEntryPage$6
0%
0/4
N/A
0
OrgEntryPage$7
0%
0/5
0%
0/2
0
OrgEntryPage$8
0%
0/5
0%
0/2
0
OrgEntryPage$9
0%
0/13
0%
0/6
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  
 }