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

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

EntryPasswordPage

0% | 0/43

0% | 0/8

0.0;0

EntryPasswordPage$1

0% | 0/6

0% | 0/2

0.0;0

EntryPasswordPage$2

0% | 0/3

0% | 0/2

0.0;0

EntryPasswordPage$3

0% | 0/3

0% | 0/2

0.0;0

EntryPasswordPage$4

0% | 0/38

0% | 0/12

0.0;0

1

0

     package jp.co.y_net.amm.page;

2

3

     import java.util.List;

4

5

     import jp.co.y_net.amm.AppSession;

6

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

7

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

8

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

9

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

10

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

11

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

12

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

13

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

14

15

     import org.apache.wicket.ajax.AjaxRequestTarget;

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.form.PasswordTextField;

20

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

21

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

22

     import org.apache.wicket.model.Model;

23

     import org.apache.wicket.model.PropertyModel;

24

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

25

26

     public class EntryPasswordPage extends CommonFrameA {

27

             private static final long serialVersionUID = 1L;

28

29

         /*

30

          * 画面入力値

31

          */

32

         public String passwordValue;

33

         public String password2Value;

34

35

         /*

36

          * 画面の状態

37

          */

38

0

         private boolean complete = false;

39

40

0

             public EntryPasswordPage(PageParameters pageParams) {

41

42

0

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

43

44

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

45

0

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

46

0

             feedbackPanel.setOutputMarkupId(true);

47

0

             add(feedbackPanel);

48

49

0

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

50

0

             form.setOutputMarkupId(true);

51

0

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

52

0

             add(form);

53

54

             /* パラメータチェック ------------------------------------------- */

55

0

             String paramValue = pageParams.get("value").toString();

56

0

             validItem(paramValue, "パラメータvalue", 1, 16);

57

             //if(hasInputError()) return;

58

0

             if(hasInputError()) {

59

                 /* 有効文字数を表示してしまう具体的なエラーメッセージを避ける */

60

0

                 AppSession.get().getFeedbackMessages().clear();

61

0

                 error("このＵＲＬは無効です。");

62

0

                 return;

63

             }

64

65

             /*  有効なランダムチケットが無い場合は、メッセージを表示する。*/

66

0

             Pwtckt cnd = new Pwtckt();

67

0

             cnd.setTicket(paramValue);

68

             final Pwtckt dbTicket;

69

0

             List<Pwtckt> tickets = pwtcktDao.get(cnd);

70

0

             if(tickets.size() != 1) {

71

0

                 error("このＵＲＬは無効です。");

72

0

                 return;

73

             } else {

74

0

                 dbTicket = tickets.get(0);

75

             }

76

0

             if(dbTicket.getStatus().equals(Pwtckt.STATUS_受付中) == false) {

77

0

                 error("このＵＲＬは無効です。");

78

0

                 return;

79

             }

80

0

             if(dbTicket.getTicketdate() < AppUtils.createNowLong()) {

81

0

                 error("このＵＲＬは期限切れです。もう一度手続きを行ってください。");

82

83

0

                 dbTicket.setStatus(Pwtckt.STATUS_有効期限切れ);

84

0

                 pwtcktDao.update(dbTicket, AppDef.USERID_NONE); // 【更新処理】

85

86

0

                 return;

87

             }

88

89

0

             form.setVisible(true);

90

             /* -------------------------------------------------------------------------------------------------------*/

91

             /* Form内の設定 */

92

93

             /* 完了メッセージ */

94

0

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

95

                 @Override

96

                 public String getObject() {

97

                     //String msg = "パスワードを登録してください。<br />パスワード登録後、本登録完了となります。<br />パスワードは8文字以上、16文字以内で入力してください。";

98

0

                     String msg = "パスワードを登録してください。<br />パスワードは8文字以上、16文字以内で入力してください。";

99

0

                     if(complete) {

100

0

                         msg = "パスワードの登録が完了しました。";

101

                     }

102

0

                     return msg;

103

                 }

104

             };

105

0

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

106

0

             resutlMessage.setEscapeModelStrings(false);

107

0

             form.add(resutlMessage);

108

109

0

             PasswordTextField password = new PasswordTextField("password", new PropertyModel<String>(this, "passwordValue")){

110

                 @Override

111

                 public boolean isVisible() {

112

                     /* 完了後の状態なら表示しない */

113

0

                     return complete == false;

114

                 }

115

             };

116

0

             form.add(password);

117

0

             PasswordTextField password2 = new PasswordTextField("password2", new PropertyModel<String>(this, "password2Value")){

118

                 @Override

119

                 public boolean isVisible() {

120

                     /* 完了後の状態なら表示しない */

121

0

                     return complete == false;

122

                 }

123

             };

124

0

             form.add(password2);

125

126

0

             Button btnSubmit = new ConfirmAjaxButton("btnSubmit"){

127

                 @Override

128

                 protected String getConfirmMessage() {

129

0

                     return "パスワードを登録します。";

130

                 }

131

                 @Override

132

                 boolean executeBefore() {

133

                     /* 入力値変換 */

134

0

                     passwordValue = AppStringUtils.trim(passwordValue);

135

0

                     password2Value = AppStringUtils.trim(password2Value);

136

137

                     /* 入力値チェック */

138

0

                     validItemAscii(passwordValue, "パスワード", 8, 16);

139

0

                     validItemAscii(password2Value, "パスワード確認用", 8, 16);

140

0

                     if(passwordValue.equals(password2Value) == false) {

141

0

                         error("入力されたパスワードが一致しません。");

142

                     }

143

0

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

144

0

                     return true;

145

                 }

146

                 @Override

147

                 void executeAfter(AjaxRequestTarget target) {

148

                     /* データアクセス 機関申請者のパスワード登録 */

149

0

                     Usr usr = usrDao.getByUsrid(dbTicket.getUsrid());

150

0

                     if(usr == null) {

151

0

                         error("（ユーザ情報が登録されていません。）");

152

0

                         return;

153

                     }

154

0

                     if(Usr.STATUS_退会 == usr.getStatus()) {

155

                         /* 仮登録中に退会処理をされた場合を考慮 */

156

0

                         error("（ユーザ情報が取り消されています。）");

157

0

                         return;

158

                     }

159

160

                     /* ユーザ情報更新 */

161

0

                     String pwhash = CalcHash.passowrdHash(passwordValue, usr.getLoginid());

162

0

                     usr.setPwhash(pwhash);

163

0

                     usr.setModpwdate(AppUtils.createNowLong());

164

0

                     usr.setJoindate(AppUtils.createNowLong()); // 入会日時

165

0

                     usr.setStatus(Usr.STATUS_登録済み);

166

167

0

                     usrDao.update(usr, AppDef.USERID_NONE); // 【更新処理】

168

169

170

                     /* 機関情報更新 */

171

0

                     Org org = orgDao.getByOrgid(usr.getOrgid());

172

0

                     if(org == null) {

173

0

                         error("（組織情報が登録されていません。）");

174

0

                         return;

175

                     }

176

0

                     org.setStatus(Org.STATUS_本登録済み);

177

0

                     org.setJoindate(AppUtils.createNowLong()); // 本登録日時

178

179

0

                     orgDao.update(org, AppDef.USERID_NONE); // 【更新処理】

180

181

182

                     /* パスワード受付管理情報更新 */

183

0

                     dbTicket.setStatus(Pwtckt.STATUS_完了);

184

0

                     dbTicket.setCompletedate(AppUtils.createNowLong());

185

186

0

                     pwtcktDao.update(dbTicket, AppDef.USERID_NONE); // 【更新処理】

187

188

189

                     /* 完了状態へ移行 */

190

0

                     complete = true;

191

192

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

193

0

                     target.add(form);

194

0

                 }

195

                 @Override

196

                 public boolean isVisible() {

197

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

198

0

                     return complete == false;

199

                 }

200

             };

201

0

             form.add(btnSubmit);

202

203

0

         }

204

205

     }