teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

ソースコードの修正

2017/07/16 23:14

投稿

Linkey
Linkey

スコア77

title CHANGED
File without changes
body CHANGED
@@ -7,7 +7,6 @@
7
7
  package registration.business_logic;
8
8
 
9
9
  import java.util.ArrayList;
10
- import java.util.List;
11
10
  import java.util.Random;
12
11
 
13
12
  import registration.dao.PreUserDAO;
@@ -16,42 +15,98 @@
16
15
 
17
16
  public class RegistrationBusinessLogic {
18
17
  PreUserDAO dao = null;
19
- public void gettingPreUserIdFromDatabase() throws RestaurantDaoException {
18
+ public void gettingPreUserIdFromDatabase() {
20
19
  try {
21
- List<PreUserEntity> getPreUserIdList = null;
20
+ PreUserEntity getPreUserIdList = null;
22
21
  boolean duplicateFlag = true;
23
22
  int duplicateCount = 0;
24
23
  ArrayList<String> getPreUserList = new ArrayList<>();
25
24
 
26
25
  //まず仮会員IDを発番する
27
26
  String id = null;
27
+ //TODO Logger.debug("ビジネスロジック処理開始", "処理={}", "generateIssuePreId");
28
28
  dao = new PreUserDAO();
29
29
  getPreUserIdList = dao.findAllPreUserId();
30
-
31
30
  while(duplicateFlag){
32
31
  if(duplicateCount >= 3){
33
32
  //TODO Logger.warn("仮会員ID発行失敗");
34
- //throw new RestaurantDaoException("仮会員IDの発行に失敗しました", e);
33
+ //throw new RestaurantDaoException();
34
+ System.out.println("仮会員ID発行失敗");
35
35
  break;
36
36
  }
37
37
  id = generateUserId();
38
-
39
38
  if (!getPreUserList.contains(id)) {
40
39
  break;
41
40
  }
42
- //TODO Logger.debug("仮会員ID重複", "retryCount={}", i)
41
+ //TODO Logger.debug("ID重複", "retryCount={}", i)
43
42
  id = null;
44
43
  duplicateCount++;
45
44
  }
46
- } catch (Exception e){ //独自例外として宣言したい
45
+ } catch (RestaurantDaoException e){ //独自例外として宣言したい
47
46
  //TODO ログ出力
48
47
  //Logger.error("DB検索失敗")
49
- throw new RestaurantDaoException("予期せぬエラーが発生しました。", e);
48
+ e.printStackTrace();
50
49
  } finally {
51
50
  //TODO Logger.debug("ビジネスロジック処理終了", "処理={}", "generateIssuePreId");
52
51
  dao.close();
53
52
  }
54
53
  }
54
+
55
+ // 8桁の仮ユーザIDを発行する
56
+ private String generateUserId() {
57
+ //TODO Logger.debug("仮会員ID発行処理開始")
58
+ Random rd = new Random();
59
+ StringBuilder sb = new StringBuilder();
60
+ int getNumber = 0;
61
+ int alphabetNumber = 0;
62
+ char getAlphabetCharacter = '\u0000';
63
+
64
+ //カウント数をプロパティから取得する(今後ID不足で桁数が増えても大丈夫なように)
65
+
66
+ for (int loopCount = 0; loopCount < 8; loopCount++) {
67
+ int getParseNumber = rd.nextInt(4); // 0〜3の乱数を取得する
68
+ switch (getParseNumber) {
69
+ case 0:// 大文字を取得
70
+ alphabetNumber = 65;
71
+ getNumber = rd.nextInt(26);
72
+ alphabetNumber = alphabetNumber + getNumber;
73
+ getAlphabetCharacter = (char) alphabetNumber;
74
+ sb.append(String.valueOf(getAlphabetCharacter));
75
+ break;
76
+ case 1:// 小文字を取得
77
+ alphabetNumber = 97;
78
+ getNumber = rd.nextInt(26);
79
+ alphabetNumber = alphabetNumber + getNumber;
80
+ getAlphabetCharacter = (char) alphabetNumber;
81
+ sb.append(String.valueOf(getAlphabetCharacter));
82
+ break;
83
+ case 2:// 数値を取得
84
+ getNumber = rd.nextInt(10);
85
+ sb.append(String.valueOf(getNumber));
86
+ break;
87
+ case 3:// 大文字を取得
88
+ alphabetNumber = 65;
89
+ getNumber = rd.nextInt(26);
90
+ alphabetNumber = alphabetNumber + getNumber;
91
+ getAlphabetCharacter = (char) alphabetNumber;
92
+ sb.append(String.valueOf(getAlphabetCharacter));
93
+ break;
94
+ case 4:// 小文字を取得
95
+ alphabetNumber = 97;
96
+ getNumber = rd.nextInt(26);
97
+ alphabetNumber = alphabetNumber + getNumber;
98
+ getAlphabetCharacter = (char) alphabetNumber;
99
+ sb.append(String.valueOf(getAlphabetCharacter));
100
+ break;
101
+ case 5:// 数値を取得
102
+ getNumber = rd.nextInt(10);
103
+ sb.append(String.valueOf(getNumber));
104
+ break;
105
+ }
106
+ }
107
+ //TODO Logger.debug("仮会員ID発行処理終了")
108
+ return sb.toString();
109
+ }
55
110
  }
56
111
  ```
57
112
 
@@ -60,7 +115,6 @@
60
115
  package registration.dao;
61
116
 
62
117
  import java.io.Closeable;
63
- import java.util.List;
64
118
 
65
119
  import javax.persistence.EntityManager;
66
120
  import javax.persistence.EntityTransaction;
@@ -89,14 +143,15 @@
89
143
  * 検索結果
90
144
  * DB検索とDB接続失敗のみを確認する
91
145
  */
92
- public List<PreUserEntity> findAllPreUserId() throws RestaurantDaoException {
146
+ public PreUserEntity findAllPreUserId() throws RestaurantDaoException {
93
147
 
94
148
  EntityManager em = null;
95
149
  try {
96
150
  // Logger.debug("仮会員テーブル検索開始")
151
+ System.out.println("仮会員テーブル検索開始");
97
152
  em = EmProvider.getInstance().getEntityManagerFactory().createEntityManager();
98
153
  TypedQuery<PreUserEntity> query = em.createNamedQuery(SQL_FIND_ALL_PRE_USER_ID, PreUserEntity.class);
99
- List<PreUserEntity> entity = query.getSingleResult();
154
+ PreUserEntity entity = query.getSingleResult();
100
155
 
101
156
  // Logger.debug("仮会員テーブル検索終了")
102
157
  return entity;
@@ -120,16 +175,6 @@
120
175
  em.close();
121
176
  }
122
177
  }
123
-
124
- @Override
125
- public void insert(String primaryKey1, String PrimaryKey2) {
126
- //TODO 未実装
127
- }
128
-
129
- @Override
130
- public void findByPk() {
131
- //TODO 未実装
132
- }
133
178
  }
134
179
  ```
135
180
  独自例外クラス

1

ソースコードを修正

2017/07/16 23:14

投稿

Linkey
Linkey

スコア77

title CHANGED
File without changes
body CHANGED
@@ -96,7 +96,7 @@
96
96
  // Logger.debug("仮会員テーブル検索開始")
97
97
  em = EmProvider.getInstance().getEntityManagerFactory().createEntityManager();
98
98
  TypedQuery<PreUserEntity> query = em.createNamedQuery(SQL_FIND_ALL_PRE_USER_ID, PreUserEntity.class);
99
- List<PreUserEntity> entity = query.getResultList();
99
+ List<PreUserEntity> entity = query.getSingleResult();
100
100
 
101
101
  // Logger.debug("仮会員テーブル検索終了")
102
102
  return entity;