View Javadoc
1   package webapi;
2   
3   import java.util.List;
4   import java.util.Map;
5   
6   import javax.enterprise.context.ApplicationScoped;
7   
8   @ApplicationScoped
9   public class ProductResource implements ProcutEndPointSpec {
10  
11      private static final int TYPE_NOMAL = 1;
12      private static final int TYPE_SILVER = 2;
13      private static final int TYPE_GOLD = 3;
14  
15      private static final Map<Integer, Integer> TYPE_DISCOUNT_RATE_MAP = Map.of(
16                  TYPE_NOMAL, 10,
17                  TYPE_SILVER, 20,
18                  TYPE_GOLD, 30
19              );
20  
21      @Override
22      public List<Integer> calculatePrice(String memberNo, int price) {
23          int memberType;
24          switch (memberNo) {
25              case "A0001":
26                  memberType = TYPE_NOMAL;
27                  break;
28              case "A0002":
29                  memberType = TYPE_SILVER;
30                  break;
31              case "A0003":
32                  memberType = TYPE_GOLD;
33                  break;
34              default:
35                  memberType = TYPE_NOMAL;
36          }
37  
38          // 意図的にstopBugsの警告を出す
39          if (memberNo == "A0001") {
40              return null;
41          }
42  
43          int discountRate = TYPE_DISCOUNT_RATE_MAP.get(memberType);
44          int discountPrice = (int) (price * ((100.0 - discountRate) /100));
45          return List.of(
46                      discountPrice,
47                      memberType,
48                      discountRate
49                  );
50      }
51  }