object Producerlog {
private val startTime ="2020-01-01"
private val endTime ="2020-12-31"
private val phoneList =new ListBuffer[String]()
private val phoneNameMap: mutable.Map[String,String] = mutable.Map[String,String]()
def randomBuildTime(startTime:String, endTime:String):String = {
val sdf1 =new SimpleDateFormat("yyyy-MM-dd")
val startDate: Date = sdf1.parse(startTime)
val endDate: Date = sdf1.parse(endTime)
if (endDate.getTime <= startDate.getTime) {
return null
}
val randomTS: Long = startDate.getTime + ((endDate.getTime - startDate.getTime) * Math.random).toLong
val resultDate =new Date(randomTS)
val sdf2 =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
val resultTimeString:String = sdf2.format(resultDate)
resultTimeString
}
def prodtuc():String = {
//主叫号码
var caller:String =null
//主叫号码对应的名字
var callerName :String=null
//被叫号码
var callee:String =null
//被叫号码对应的名字
var calleeName :String=null
//取得主叫号码
val callerIndex = (Math.random() *phoneList.size).toInt
//随机取出一个号码
caller =phoneList(callerIndex)
//取出根据号码对应的名字
callerName =phoneNameMap.get(caller).get
val breaks =new Breaks
breaks.breakable(
while(true){
//取得被叫号码
val callerIndex = (Math.random() *phoneList.size).toInt
//从list中取出被叫号码
callee =phoneList(callerIndex)
//取得被叫号码名称
calleeName =phoneNameMap.get(callee).get
if(!(callee == caller)){
breaks.break()
}
} )
val df=new DecimalFormat("0000")
val duration:String = df.format(30 *60 * Math.random())
val sb =new StringBuilder
val value =randomBuildTime(startTime,endTime)
sb.append(caller +",").append(callerName +",").append(callee +",").append(calleeName +",").append(value+",").append(duration+",").append(1)
println("日志:"+sb.toString())
sb.toString()
}
def writeLog(logPath:String): Unit = {
val osw =new OutputStreamWriter(new FileOutputStream(logPath),"UTF-8")
while (true){
//休闲时间
Thread.sleep(5000)
//生成数据
val log=prodtuc()
//把数据写入到指定的路径
osw.write(log +"\n")
//一定要手动flush才可以确保每条数据都写入到文件一次
osw.flush()
}
}
/**
* 初始化数据
*/
def initPhone() ={
phoneList.append("17078388295")
phoneList.append("13980337439")
phoneList.append("14575535933")
phoneList.append("19902496992")
phoneList.append("18549641558")
phoneList.append("17005930322")
phoneList.append("18468618874")
phoneList.append("18576581848")
phoneList.append("15978226424")
phoneList.append("15542823911")
phoneList.append("17526304161")
phoneList.append("15422018558")
phoneList.append("17269452013")
phoneList.append("17764278604")
phoneList.append("15711910344")
phoneList.append("15714728273")
phoneList.append("16061028454")
phoneList.append("16264433631")
phoneList.append("17601615878")
phoneList.append("15897468949")
phoneNameMap.put("17078388295","李雁")
phoneNameMap.put("13980337439","卫艺")
phoneNameMap.put("14575535933","仰莉")
phoneNameMap.put("19902496992","陶欣悦")
phoneNameMap.put("18549641558","施梅梅")
phoneNameMap.put("17005930322","金虹霖")
phoneNameMap.put("18468618874","魏明艳")
phoneNameMap.put("18576581848","华贞")
phoneNameMap.put("15978226424","华啟倩")
phoneNameMap.put("15542823911","仲采绿")
phoneNameMap.put("17526304161","卫丹")
phoneNameMap.put("15422018558","戚丽红")
phoneNameMap.put("17269452013","何翠柔")
phoneNameMap.put("17764278604","钱溶艳")
phoneNameMap.put("15711910344","钱琳")
phoneNameMap.put("15714728273","缪静欣")
phoneNameMap.put("16061028454","焦秋菊")
phoneNameMap.put("16264433631","吕访琴")
phoneNameMap.put("17601615878","沈丹")
phoneNameMap.put("15897468949","褚美丽")
}
def main(args: Array[String]): Unit = {
//传入存放数据的路径
if(args==null || args.length<=0){
println("没有输入路径")
return
}
val logPath=args(0)
println(s"存放日志的路径:$logPath")
//初始化数据
Producerlog.initPhone()
//数据写入到指定的文件
Producerlog.writeLog(logPath)
}
}