Blame view

src/main/java/com/essa/framework/BrowserEnum.java 2.74 KB
79149350   suweicheng   开发梳理;
1
2
3
4
5
6
7
8
9
10
  package com.essa.framework;
  /**
   * Created by weicheng on 2018/10/25.
   */
  
  import java.util.List;
  import java.util.concurrent.ConcurrentHashMap;
  import java.util.concurrent.atomic.AtomicReference;
  
  public enum BrowserEnum {
a8f68b31   suweicheng   开发梳理;
11
12
13
      Firefox("Firefox","webdriver.gecko.driver","geckodriver.exe"),
      Chrome("Chrome","webdriver.chrome.driver","chromedriver.exe"),
      IE("IE","webdriver.ie.driver","IEDriverServer.exe");
79149350   suweicheng   开发梳理;
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
  
      /**
       * 原子引用(全部)
       */
      private static AtomicReference<ConcurrentHashMap<String, BrowserEnum>> mapAllRef = new AtomicReference<>();
  
      private static AtomicReference<ConcurrentHashMap<String, BrowserEnum>> mapPartRef = new AtomicReference<>();
  
      /**
       * 根据code获取 BrowserEnum
       *
       * @param code
       * @return
       */
      public static BrowserEnum fromCode(String code) {
          buildConcurrentHashMap();
          return mapAllRef.get().get(code);
      }
  
      /**
       * 如果map是空,就会构建Map
       */
      private static void buildConcurrentHashMap() {
          //如果所有枚举的原子引用是空对象,就创建一个ConcurrentHashMap给原子引用
          mapAllRef.compareAndSet(null, new ConcurrentHashMap<>());
          //获取原子引用的currentHashMap对象
          ConcurrentHashMap<String, BrowserEnum> concurrentHashAllMap = mapAllRef.get();
          //如果ConcurrentHashMap里面没有一个枚举对象,需要初次化
          if (concurrentHashAllMap.isEmpty()) {
              for (BrowserEnum e : BrowserEnum.values()) {
                  concurrentHashAllMap.put(e.getCode(), e);
              }
              mapAllRef.set(concurrentHashAllMap);
          }
      }
  
      /**
       * 枚举代码
       */
      private String code;
  
      /**
d6c2eca9   suweicheng   开发梳理;
56
       * 浏览器驱动名字
79149350   suweicheng   开发梳理;
57
58
59
       */
      private String driver;
  
a8f68b31   suweicheng   开发梳理;
60
61
62
63
64
      /**
       * exe 名字
       */
      private String exeName;
  
79149350   suweicheng   开发梳理;
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
      public String getCode() {
          return code;
      }
  
      public void setCode(String code) {
          this.code = code;
      }
  
      public String getDriver() {
          return driver;
      }
  
      public void setDriver(String driver) {
          this.driver = driver;
      }
  
a8f68b31   suweicheng   开发梳理;
81
82
83
84
85
86
87
88
89
      public String getExeName() {
          return exeName;
      }
  
      public void setExeName(String exeName) {
          this.exeName = exeName;
      }
  
      BrowserEnum(String code,String exeName, String driver) {
79149350   suweicheng   开发梳理;
90
91
          this.code = code;
          this.driver = driver;
a8f68b31   suweicheng   开发梳理;
92
          this.exeName = exeName;
79149350   suweicheng   开发梳理;
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
      }
  
      public static List<BrowserEnum> getAllEnum() {
          buildConcurrentHashMap();
          return (List<BrowserEnum>) mapAllRef.get().values();
      }
  
      /**
       * 只返回常用枚举
       *
       * @return
       */
      public static List<BrowserEnum> getEnumByDefault() {
          buildConcurrentHashMap();
          return (List<BrowserEnum>) mapPartRef.get().values();
      }
  }