##### Coverage Report - jp.co.y_net.amm.service.PasswordTicketManager

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

PasswordTicketManager

0% | 0/45

0% | 0/14

0.0;0

1

     package jp.co.y_net.amm.service;

2

3

     import java.util.List;

4

5

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

6

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

7

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

8

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

9

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

10

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

11

12

     import org.apache.commons.lang.RandomStringUtils;

13

     import org.apache.wicket.spring.injection.annot.SpringBean;

14

     import org.springframework.beans.factory.annotation.Autowired;

15

     import org.springframework.beans.factory.annotation.Qualifier;

16

     import org.springframework.stereotype.Component;

17

18

     @Component("passwordTicketManager")

19

0

     public class PasswordTicketManager {

20

21

         @SpringBean(name="usrDao")

22

         protected UsrDao usrDao;

23

24

         @Autowired(required = true)

25

         @Qualifier("pwtcktDao")

26

         private PwtcktDao pwtcktDao;

27

28

         public String execute新規パスワード発行(Integer usrid) {

29

0

             return execute(usrid, 60*60* AppDef.新規パスワード発行の登録有効期間);

30

         }

31

32

         public String executeパスワードリセット(Integer usrid) {

33

0

             return execute(usrid, 60*60* AppDef.パスワードリセット後のパスワード登録有効期間);

34

         }

35

36

         public String execute(Integer usrid, int ticketdateOffset) {

37

             /* 　同じユーザIDで「受付中」レコードを処理 */

38

             {

39

0

                 Pwtckt cnd = new Pwtckt();

40

0

                 cnd.setUsrid(usrid);

41

0

                 cnd.setStatus(Pwtckt.STATUS_受付中);

42

43

0

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

44

0

                 for(Pwtckt tiket: tickets) {

45

0

                     tiket.setStatus(Pwtckt.STATUS_中止);

46

0

                     tiket.setCanceldate(AppUtils.createNowLong());

47

0

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

48

                     /* 論理削除実施 */

49

0

                     pwtcktDao.removeLogical(tiket, AppDef.USERID_NONE); // 【更新処理】

50

                 }

51

             }

52

             /* 　同じユーザIDで「有効期限切れ」レコードを処理 */

53

             {

54

0

                 Pwtckt cnd = new Pwtckt();

55

0

                 cnd.setUsrid(usrid);

56

0

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

57

58

0

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

59

0

                 for(Pwtckt tiket: tickets) {

60

     //                tiket.setStatus(Pwtckt.STATUS_XXX); // ステータス変更なし

61

     //                tiket.setCanceldate(AppUtils.createNowLong());

62

     //                tiket.setDeleted(AppDef.TRUE); // 論理削除

63

     //                pwtcktDao.update(tiket);

64

0

                     pwtcktDao.removeLogical(tiket, AppDef.USERID_NONE); // 【更新処理】

65

                 }

66

             }

67

             /* 　チケット発行(同一の値が存在する場合は再計算) */

68

0

             String random = null;

69

0

             for (int i = 0; i < 100; i++) {

70

0

                 random = RandomStringUtils.randomAlphabetic(16);

71

0

                 Pwtckt cnd = new Pwtckt();

72

0

                 cnd.setTicket(random);

73

0

                 if(pwtcktDao.get(cnd).isEmpty()) {

74

0

                     break;

75

                 }

76

             }

77

0

             if(random == null) {

78

0

                 throw new RuntimeException("チケットが決定しませんでした。無限ループ防止のため、処理を中止します。");

79

             }

80

0

             Pwtckt ticket = new Pwtckt();

81

0

             ticket.setUsrid(usrid);

82

0

             ticket.setTicket(random);

83

0

             ticket.setCreatedate(AppUtils.createNowLong());

84

0

             ticket.setTicketdate(AppUtils.createNowLong(ticketdateOffset)); // x時間後

85

0

             ticket.setStatus(Pwtckt.STATUS_受付中);

86

0

             pwtcktDao.add(ticket, AppDef.USERID_NONE); // 【更新処理】

87

88

0

             return random;

89

         }

90

91

         public Pwtckt getユーザに紐づくチケット(Integer usrid) {

92

0

             Pwtckt ticket = new Pwtckt();

93

0

             ticket.setUsrid(usrid);

94

0

             ticket.setStatus(Pwtckt.STATUS_受付中);

95

0

             List<Pwtckt> results = pwtcktDao.get(ticket);

96

0

             if(results.isEmpty()) {

97

0

                 return null;

98

             }

99

0

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

100

0

                 AppLogger.error("1つのユーザに紐づく、受付中のチケットが複数件、検出されました。");

101

0

                 return null;

102

             }

103

0

             return results.get(0);

104

         }

105

106

107

108

     }