|
@@ -1,10 +1,73 @@
|
|
|
package com.winhc.bigdata.spark.const
|
|
|
|
|
|
+import java.util
|
|
|
+
|
|
|
+import com.winhc.bigdata.spark.utils.BaseUtil
|
|
|
+import org.yaml.snakeyaml.Yaml
|
|
|
+
|
|
|
+import scala.beans.BeanProperty
|
|
|
+import scala.collection.mutable
|
|
|
+
|
|
|
/**
|
|
|
* @Author: XuJiakai
|
|
|
* @Date: 2020/6/9 14:24
|
|
|
* @Description:
|
|
|
*/
|
|
|
object EnvConst {
|
|
|
+ private val yaml = new Yaml().loadAll(getClass.getResourceAsStream("/env.yaml"))
|
|
|
+ .iterator()
|
|
|
+ var envName: String = null
|
|
|
+ var envs: List[EnvConst] = List()
|
|
|
+
|
|
|
+ import scala.collection.JavaConversions._
|
|
|
+ import com.winhc.bigdata.spark.utils.BaseUtil.isWindows
|
|
|
+
|
|
|
+ if (isWindows) {
|
|
|
+ import com.alibaba.dcm.DnsCacheManipulator
|
|
|
+ DnsCacheManipulator.loadDnsCacheConfig();
|
|
|
+ }
|
|
|
+
|
|
|
+ private var i = 0
|
|
|
+ while (yaml.hasNext) {
|
|
|
+ val o = yaml.next()
|
|
|
+
|
|
|
+ if (i == 0) {
|
|
|
+ val m1 = o.asInstanceOf[util.HashMap[String, util.HashMap[String, String]]]
|
|
|
+ envName = mapAsScalaMap(m1)("profile")("activate")
|
|
|
+ } else {
|
|
|
+ val m2 = o.asInstanceOf[util.HashMap[String, util.HashMap[String, Object]]]
|
|
|
+ val name = m2("env")("name").asInstanceOf[String]
|
|
|
+ val config = mapAsScalaMap(m2("env")("config").asInstanceOf[util.HashMap[String, String]])
|
|
|
+
|
|
|
+ envs = envs :+ EnvConst(name, config)
|
|
|
+ }
|
|
|
+ i += 1
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ def getEnv(envName: String): EnvConst = {
|
|
|
+ val map = envs.map(e => {
|
|
|
+ (e.getName, e)
|
|
|
+ }).toMap
|
|
|
+ if (!map.contains(envName)) {
|
|
|
+ println("env.yaml is not contains " + envName)
|
|
|
+ sys.exit(-88)
|
|
|
+ }
|
|
|
+ map(envName)
|
|
|
+ }
|
|
|
+
|
|
|
+ def getEnv(): EnvConst = {
|
|
|
+ val key = envName + "-" + (if (BaseUtil.isWindows) "local" else "remote")
|
|
|
+ getEnv(key)
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
+case class EnvConst(@BeanProperty var name: String,
|
|
|
+ @BeanProperty var config: mutable.Map[String, String]) extends Serializable {
|
|
|
+ def getValue(key: String): String = {
|
|
|
+ if (!config.contains(key)) {
|
|
|
+ throw new RuntimeException(s"$name is not contains $key. please check env.yaml!")
|
|
|
+ }
|
|
|
+ config(key)
|
|
|
+ }
|
|
|
}
|